From fba27fb3b1018b205431dd8b83e8e50edc594095 Mon Sep 17 00:00:00 2001 From: ronancpl Date: Thu, 27 Jun 2019 20:34:39 -0300 Subject: [PATCH 01/37] Boss Daily Entry + Maker enable actions + Duey Quick Delivery Fixed Legendary Spirit UI getting stuck when trying to apply scrolls in equipments without upgrade slots available. Revised map leasing. Players no longer lose ownership when changing maps. Players are allowed to lease one map each time. Revised expeditions warping players out as soon as the leader leaves the event or the number of players inside gets to be less than the minimum required to enter. Fixed start/complete quest commands not acting properly for some quests. Refactored quest loadouts unnecessarily reloading MapleData. Implemented support for daily boss limit entry, usable on expeditions. Revised potential exploit cases within chair, face expression, quest action, summon damage and mob damage mob handlers. Adjusted displayed date in Duey. Value displayed now should be consistent with the expected expiration time. Refactored damage for friendly mobs getting handled inside packet structure. Implemented support for Quick Delivery from Duey. Fixed Horntail specifically not dropping loots after recent updates. Refactored commands system. All commands are instanced at boot time instead of at every call. Fixed usage of Maker skill not sending MAKER_RESULT packet to players. This automatically reenables the actions button (such as create) in Maker UI. Adjusted minidungeons, now using time limits specified in their respective recipes. Reviewed the "timeLimit" property utilized by maps, which was poised to work on 2 different concepts altogether. Fixed Gaga space event, should be functional now. Added RPS minigame, resources implemented by Arnah. Fixed damage taken from mob auto-destruction not working properly. --- README.md | 4 +- docs/mychanges_ptbr.txt | 36 +- launch_server_linux.sh | 3 - linux-compile.sh | 4 + linux-launch.sh | 4 + scripts/event/4jberserk.js | 185 --- scripts/event/4jrush.js | 155 --- scripts/event/BalrogBattle.js | 8 +- scripts/event/BalrogBattle_Easy.js | 8 +- scripts/event/CWKPQ.js | 6 +- scripts/event/RescueGaga.js | 211 +++ scripts/event/ZakumBattle.js | 11 +- .../map/onFirstUserEnter/spaceGaGa_sMap.js | 3 +- .../map/onFirstUserEnter/spaceGaGa_start.js | 41 - scripts/npc/9000019.js | 32 + scripts/npc/9001102.js | 54 + scripts/npc/9001105.js | 77 ++ scripts/npc/9001108.js | 108 -- scripts/npc/9977777.js | 4 +- scripts/portal/Spacegaga_out0.js | 12 +- scripts/portal/Spacegaga_out1.js | 12 +- scripts/portal/Spacegaga_out2.js | 12 +- scripts/portal/Spacegaga_out3.js | 12 +- scripts/portal/Zakum05.js | 11 + scripts/portal/gaga_success.js | 2 - sql/db_database.sql | 86 +- sql/db_drops.sql | 1183 +++++++++-------- src/client/MapleCharacter.java | 119 +- src/client/command/Command.java | 9 + src/client/command/CommandsExecutor.java | 35 +- .../commands/gm0/MapOwnerClaimCommand.java | 17 +- .../command/commands/gm1/GotoCommand.java | 2 +- .../command/commands/gm2/IdCommand.java | 2 +- .../commands/gm3/QuestCompleteCommand.java | 11 +- .../commands/gm3/QuestStartCommand.java | 11 +- .../command/commands/gm5/DebugCommand.java | 1 - src/client/processor/DueyProcessor.java | 56 +- src/client/processor/MakerProcessor.java | 140 +- src/constants/ItemConstants.java | 8 + src/constants/ScriptableNPCConstants.java | 1 + src/constants/ServerConstants.java | 4 +- src/net/PacketProcessor.java | 1 + src/net/opcodes/SendOpcode.java | 1 + src/net/server/Server.java | 16 + src/net/server/channel/Channel.java | 8 +- .../channel/handlers/CancelChairHandler.java | 7 +- .../server/channel/handlers/DueyHandler.java | 7 +- .../handlers/FaceExpressionHandler.java | 8 +- .../handlers/MobDamageMobFriendlyHandler.java | 9 +- .../channel/handlers/MobDamageMobHandler.java | 71 +- .../channel/handlers/NPCTalkHandler.java | 3 +- .../handlers/PlayerLoggedinHandler.java | 8 +- .../channel/handlers/QuestActionHandler.java | 10 +- .../channel/handlers/RPSActionHandler.java | 71 + .../channel/handlers/ScrollHandler.java | 20 +- .../channel/handlers/SpecialMoveHandler.java | 3 +- .../channel/handlers/SummonDamageHandler.java | 48 +- .../channel/handlers/TakeDamageHandler.java | 25 +- .../channel/handlers/UseCashItemHandler.java | 10 +- .../channel/handlers/UseChairHandler.java | 5 +- .../server/worker/BossLogWorker.java} | 32 +- src/scripting/AbstractPlayerInteraction.java | 4 +- src/scripting/event/EventInstanceManager.java | 6 +- src/server/DueyPackage.java | 4 + src/server/MakerItemFactory.java | 35 +- src/server/MapleItemInformationProvider.java | 16 +- src/server/events/RescueGaga.java | 83 +- src/server/expeditions/MapleExpedition.java | 27 +- .../expeditions/MapleExpeditionBossLog.java | 205 +++ src/server/life/MapleMonster.java | 32 +- src/server/maps/MapleMap.java | 90 +- src/server/maps/MapleMapFactory.java | 7 +- src/server/maps/MapleMiniDungeon.java | 4 +- .../minigame/MapleRockPaperScissor.java | 84 ++ src/server/partyquest/AriantColiseum.java | 2 +- src/server/quest/MapleQuest.java | 14 +- src/tools/MaplePacketCreator.java | 194 ++- .../MapleSkillMakerFetcher/lib/MakerData.sql | 10 +- .../lib/meso_drop_data.sql | 447 ------- .../lib/skillbook_drop_data.sql | 1182 ++++++++-------- .../MapleSkillbookChanceFetcher.java | 2 +- wz/Map.wz/Map/Map9/922240200.img.xml | 2 +- 82 files changed, 2902 insertions(+), 2611 deletions(-) delete mode 100644 launch_server_linux.sh create mode 100644 linux-compile.sh create mode 100644 linux-launch.sh delete mode 100644 scripts/event/4jberserk.js delete mode 100644 scripts/event/4jrush.js create mode 100644 scripts/event/RescueGaga.js delete mode 100644 scripts/map/onFirstUserEnter/spaceGaGa_start.js create mode 100644 scripts/npc/9000019.js create mode 100644 scripts/npc/9001102.js create mode 100644 scripts/npc/9001105.js delete mode 100644 scripts/npc/9001108.js create mode 100644 src/net/server/channel/handlers/RPSActionHandler.java rename src/{client/command/RegisteredCommand.java => net/server/worker/BossLogWorker.java} (59%) create mode 100644 src/server/expeditions/MapleExpeditionBossLog.java create mode 100644 src/server/minigame/MapleRockPaperScissor.java delete mode 100644 tools/MapleSkillbookChanceFetcher/lib/meso_drop_data.sql diff --git a/README.md b/README.md index e3411185f3..f7b19363c5 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ Java7 SDK: https://www.oracle.com/technetwork/java/javase/downloads/java-archive **Change log:** - * Fixed Monster Magnet crashing the caster when trying to pull-in bosses. + * Fixed Monster Magnet crashing the caster when trying to pull bosses. * Fixed some 'rn' problems with quest icons & removed "tab" from party leader changed message. https://hostr.co/tsYsQzzV6xT0 @@ -247,7 +247,7 @@ To change a character's GM level, make sure that character is not logged in, the --- ### Some notes about WZ/WZ.XML EDITING -NOTE: Be extremely wary when using server-side's XMLs data being reimporting into the client's WZ, as some means of synchronization between the server and client modules, this action COULD generate some kind of bugs afterwards. Client-to-server data reimporting seems to be fine, though. +NOTE: Be extremely wary when using server-side's XMLs data being reimported into the client's WZ, as some means of synchronization between the server and client modules, this action COULD generate some kind of bugs afterwards. Client-to-server data reimporting seems to be fine, though. #### Editing the v83 WZ's: diff --git a/docs/mychanges_ptbr.txt b/docs/mychanges_ptbr.txt index 05f5a035f8..465429633a 100644 --- a/docs/mychanges_ptbr.txt +++ b/docs/mychanges_ptbr.txt @@ -1948,4 +1948,38 @@ Ajustado interação com mapa do NPC Nein Spirit's Baby Dragon. Acesso à área Normalizado uso de lobbyids em início de eventos nos scripts. 15 Junho 2019, -Corrigido limites de requisitos de nível para acessar expedições nos scripts de NPCs que as gerenciam. \ No newline at end of file +Corrigido limites de requisitos de nível para acessar expedições nos scripts de NPCs que as gerenciam. + +19 Junho 2019, +Corrigido janela congelada de Legendary Spirit ao tentar aplicar scrolls em equipamentos sem slots. +Ajustado chance de drops de skillbooks. +Revisado funcionalidade de arrendamento de mapas. Jogadores não mais perdem posse ao trocar de mapas, somente ao expirar devido à falta de atividades ou ao tentar arrendar outro mapa. +Revisado expedições retirando jogadores assim que o líder sai de mapa ou não há mais em campo a quantidade mínima de jogadores requisitada para começar o evento. +Corrigido gerenciador de mapas finalizando antes dos eventos, potencialmente levando a quebra de scripts de evento durante a fase de shutdown do servidor. +Corrigido comandos de começar/completar quests não atuando para quests não previstas pelos XMLs. +Revisado sistema de quests desnecessariamente inicializando estruturas de leitura de XMLs. +Corrigido sistema de quests no objeto do jogador não acessando corretamente certas quests devido a uso indevido de inteiros de tamanho short e int. + +20 Junho 2019, +Implementado sistema de contabilização de entradas em bosses. +Corrigido potencial exploit com expressão facial podendo crashar jogadores ao receber expressão inválida. + +21 - 22 Junho 2019, +Ajustado data no Duey, que estava atuando de forma inesperada anteriormente. +Adicionado checagem contra potenciais exploits de dano dado em mobs por mobs ou summons em seus respectivos handlers. +Adicionado checagem contra potenciais exploits por itens nos handlers de cadeira e expressão facial. +Ajustado checagem contra potenciais exploits de distância/inexistência de NPC na área onde o jogador se encontra, ao se realizar operações sobre quests. +Refatorado função que modifica estado de mob aliado no mapa (no lado servidor) sendo executada dentro de definição de pacote. +Implementado suporte para entrega rápida pelo Duey. + +24 - 25 Junho 2019, +Corrigido Horntail não dropando itens após mudança recente na lógica de drops. +Revisado sistema de comandos. Cada comando no sistema é inicializado somente uma vez, ao iniciar o servidor. +Ajustado Maker skill, agora utilizando pacotes de resultados ao realizar suas operações. +Corrigido Mini Dungeons utilizando tempo limite pré-determinado no código-fonte. +Revisado utilização de "timeLimit" em objeto MapleMap. Valor supostamente pré-determinado pela receita XML poderia ser sobrescrito por outros métodos da classe. +Ajustado evento de Gaga no espaço, evento agora funcional. +Adicionado minigame RPS de NPC, recursos implementados pelo Arnah. + +27 Junho 2019, +Corrigido contabilização de dano de auto-destruição de mobs não sendo aplicado corretamente. \ No newline at end of file diff --git a/launch_server_linux.sh b/launch_server_linux.sh deleted file mode 100644 index 57d9b2d6ec..0000000000 --- a/launch_server_linux.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -export CLASSPATH=".:dist/*" -java -Xmx2048m -Dwzpath=wz/ net.server.Server \ No newline at end of file diff --git a/linux-compile.sh b/linux-compile.sh new file mode 100644 index 0000000000..9cfec04218 --- /dev/null +++ b/linux-compile.sh @@ -0,0 +1,4 @@ +#!/bin/bash +# thanks to lkxyyjx +sudo ant -Dplatforms.JDK_1.7.home=/opt/jdk1.7.0_80 compile +sudo ant -Dplatforms.JDK_1.7.home=/opt/jdk1.7.0_80 jar \ No newline at end of file diff --git a/linux-launch.sh b/linux-launch.sh new file mode 100644 index 0000000000..40557cec8e --- /dev/null +++ b/linux-launch.sh @@ -0,0 +1,4 @@ +#!/bin/sh +# cores in classpath, thanks to lkxyyjx +export CLASSPATH=".:dist/*:cores/*" +java -Xmx2048m -Dwzpath=wz/ net.server.Server \ No newline at end of file diff --git a/scripts/event/4jberserk.js b/scripts/event/4jberserk.js deleted file mode 100644 index d3fd4fa747..0000000000 --- a/scripts/event/4jberserk.js +++ /dev/null @@ -1,185 +0,0 @@ -/* - This file is part of the OdinMS Maple Story Server - Copyright (C) 2008 Patrick Huy - Matthias Butz - Jan Christian Meyer - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation version 3 as published by - the Free Software Foundation. You may not use, modify or distribute - this program under any other version of the GNU Affero General Public - License. - - 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 Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ -var exitMap; -var minPlayers = 3; - -function init() {} - -function monsterValue(eim, mobId) { - return 1; -} - -function setup(level, lobbyid) { - exitMap = em.getChannelServer().getMapFactory().getMap(105090800); // - - var eim = em.newInstance("4jberserk_" + lobbyid); - eim.setProperty("level", level); - - var mf = eim.getMapFactory(); - - var map = mf.getMap(910500200); - map.addMapTimer(3*60); - em.schedule("timeOut", 20 * 60000); - - //you can't warp up to the rocks until all rogs are dead, I think? - eim.setProperty("canWarp","false"); - - return eim; -} - -function afterSetup(eim) {} - -function playerEntry(eim, player) { - var map = eim.getMapInstance(910500200); - player.changeMap(map, map.getPortal(0)); - -//TODO: hold time across map changes -//player.getClient().announce(tools.MaplePacketCreator.getClock(1800)); -} - -function playerDead(eim, player) { -} - -function playerRevive(eim, player) { - //if (eim.isLeader(player)) { //check for party leader - //boot whole party and end - var party = eim.getPlayers(); - for (var i = 0; i < party.size(); i++) { - playerExit(eim, party.get(i)); - } - eim.dispose(); -/*/} - else { //boot dead player - // If only 2 players are left, uncompletable: - var party = eim.getPlayers(); - if (party.size() <= minPlayers) { - for (var i = 0; i < party.size(); i++) { - playerExit(eim,party.get(i)); - } - eim.dispose(); - } - else - playerExit(eim, player); - }*/ -} - -function playerDisconnected(eim, player) { - //if (eim.isLeader(player)) { //check for party leader - //boot whole party and end - var party = eim.getPlayers(); - for (var i = 0; i < party.size(); i++) { - if (party.get(i).equals(player)) { - removePlayer(eim, player); - } - else { - playerExit(eim, party.get(i)); - } - } - eim.dispose(); -/*/} - else { //boot d/ced player - // If only 2 players are left, uncompletable: - var party = eim.getPlayers(); - if (party.size() < minPlayers) { - for (var i = 0; i < party.size(); i++) { - playerExit(eim,party.get(i)); - } - eim.dispose(); - } - else - playerExit(eim, player); - }*/ -} - -function leftParty(eim, player) { - // If only 2 players are left, uncompletable: - var party = eim.getPlayers(); - if (true) { - for (var i = 0; i < party.size(); i++) { - playerExit(eim,party.get(i)); - } - eim.dispose(); - } - else - playerExit(eim, player); -} - -function disbandParty(eim) { - //boot whole party and end - var party = eim.getPlayers(); - for (var i = 0; i < party.size(); i++) { - playerExit(eim, party.get(i)); - } - eim.dispose(); -} - -function playerUnregistered(eim, player) {} - -function playerExit(eim, player) { - eim.unregisterPlayer(player); - player.changeMap(exitMap, exitMap.getPortal(0)); -} - -//for offline players -function removePlayer(eim, player) { - eim.unregisterPlayer(player); - player.getMap().removePlayer(player); - player.setMap(exitMap); -} - -function clearPQ(eim) { - var party = eim.getPlayers(); - for (var i = 0; i < party.size(); i++) - playerExit(eim, party.get(i)); - eim.dispose(); -} - -function monsterKilled(mob, eim) {} - -function allMonstersDead(eim) { - eim.setProperty("canWarp","true"); -} - -function cancelSchedule() {} - -function timeOut() { - var iter = em.getInstances().iterator(); - while (iter.hasNext()) { - var eim = iter.next(); - if (eim.getPlayerCount() > 0) { - var pIter = eim.getPlayers().iterator(); - while (pIter.hasNext()) - playerExit(eim, pIter.next()); - } - eim.dispose(); - } -} - - -// ---------- FILLER FUNCTIONS ---------- - -function dispose() {} - -function scheduledTimeout(eim) {} - -function changedLeader(eim, leader) {} - diff --git a/scripts/event/4jrush.js b/scripts/event/4jrush.js deleted file mode 100644 index a1258d0ec6..0000000000 --- a/scripts/event/4jrush.js +++ /dev/null @@ -1,155 +0,0 @@ -/* - This file is part of the OdinMS Maple Story Server - Copyright (C) 2008 Patrick Huy - Matthias Butz - Jan Christian Meyer - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation version 3 as published by - the Free Software Foundation. You may not use, modify or distribute - this program under any other version of the GNU Affero General Public - License. - - 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 Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ -/* - * @author AngelSL - * - * 4th Job Rush Quest. - * Based on Kerning City PQ script by Stereo - */ - -var exitMap; -var minPlayers = 3; - -function init() {} - -function monsterValue(eim, mobId) { - return 1; -} - -function setup(level, lobbyid) { - exitMap = em.getChannelServer().getMapFactory().getMap(105090700); // - - var eim = em.newInstance("4jrush_" + lobbyid); - eim.setProperty("level", level); - - var mf = eim.getMapFactory(); - var map = mf.getMap(910500100); - map.addMapTimer(20*60); - em.schedule("timeOut", 20 * 60000); - return eim; -} - -function afterSetup(eim) {} - -function playerEntry(eim, player) { - var map = eim.getMapInstance(910500100); - player.changeMap(map, map.getPortal(0)); -} - -function playerDead(eim, player) { -} - -function playerRevive(eim, player) { - var party = eim.getPlayers(); - for (var i = 0; i < party.size(); i++) { - playerExit(eim, party.get(i)); - } - eim.dispose(); -} - -function playerDisconnected(eim, player) { - var party = eim.getPlayers(); - for (var i = 0; i < party.size(); i++) { - if (party.get(i).equals(player)) { - removePlayer(eim, player); - } - else { - playerExit(eim, party.get(i)); - } - } - eim.dispose(); -} - -function leftParty(eim, player) { - // If only 2 players are left, uncompletable: - var party = eim.getPlayers(); - if (true) { - for (var i = 0; i < party.size(); i++) { - playerExit(eim,party.get(i)); - } - eim.dispose(); - } - else - playerExit(eim, player); -} - -function disbandParty(eim) { - //boot whole party and end - var party = eim.getPlayers(); - for (var i = 0; i < party.size(); i++) { - playerExit(eim, party.get(i)); - } - eim.dispose(); -} - -function playerUnregistered(eim, player) {} - -function playerExit(eim, player) { - eim.unregisterPlayer(player); - player.changeMap(exitMap, exitMap.getPortal(0)); -} - -//for offline players -function removePlayer(eim, player) { - eim.unregisterPlayer(player); - player.getMap().removePlayer(player); - player.setMap(exitMap); -} - -function clearPQ(eim) { - //KPQ does nothing special with winners - var party = eim.getPlayers(); - for (var i = 0; i < party.size(); i++) { - playerExit(eim, party.get(i)); - } - eim.dispose(); -} - -function monsterKilled(mob, eim) {} - -function allMonstersDead(eim) {} - -function cancelSchedule() {} - -function timeOut() { - var iter = em.getInstances().iterator(); - while (iter.hasNext()) { - var eim = iter.next(); - if (eim.getPlayerCount() > 0) { - var pIter = eim.getPlayers().iterator(); - while (pIter.hasNext()) { - playerExit(eim, pIter.next()); - } - } - eim.dispose(); - } -} - - -// ---------- FILLER FUNCTIONS ---------- - -function dispose() {} - -function scheduledTimeout(eim) {} - -function changedLeader(eim, leader) {} - diff --git a/scripts/event/BalrogBattle.js b/scripts/event/BalrogBattle.js index 6c6c426cb5..ba3d9bd204 100644 --- a/scripts/event/BalrogBattle.js +++ b/scripts/event/BalrogBattle.js @@ -170,7 +170,7 @@ function playerLeft(eim, player) { function changedMap(eim, player, mapid) { if (mapid < minMapId || mapid > maxMapId) { - if (eim.isEventTeamLackingNow(true, minPlayers, player)) { + if (eim.isExpeditionTeamLackingNow(true, minPlayers, player)) { eim.unregisterPlayer(player); end(eim); } @@ -189,7 +189,7 @@ function changedLeader(eim, leader) { function playerDead(eim, player) {} function playerRevive(eim, player) { // player presses ok on the death pop up. - if (eim.isEventTeamLackingNow(true, minPlayers, player)) { + if (eim.isExpeditionTeamLackingNow(true, minPlayers, player)) { eim.unregisterPlayer(player); end(eim); } @@ -198,7 +198,7 @@ function playerRevive(eim, player) { // player presses ok on the death pop up. } function playerDisconnected(eim, player) { - if (eim.isEventTeamLackingNow(true, minPlayers, player)) { + if (eim.isExpeditionTeamLackingNow(true, minPlayers, player)) { eim.unregisterPlayer(player); end(eim); } @@ -207,7 +207,7 @@ function playerDisconnected(eim, player) { } function leftParty(eim, player) { - if (eim.isEventTeamLackingNow(false, minPlayers, player)) { + if (eim.isExpeditionTeamLackingNow(false, minPlayers, player)) { end(eim); } else diff --git a/scripts/event/BalrogBattle_Easy.js b/scripts/event/BalrogBattle_Easy.js index 40cfb3cc14..5bb27d8353 100644 --- a/scripts/event/BalrogBattle_Easy.js +++ b/scripts/event/BalrogBattle_Easy.js @@ -170,7 +170,7 @@ function playerLeft(eim, player) { function changedMap(eim, player, mapid) { if (mapid < minMapId || mapid > maxMapId) { - if (eim.isEventTeamLackingNow(true, minPlayers, player)) { + if (eim.isExpeditionTeamLackingNow(true, minPlayers, player)) { eim.unregisterPlayer(player); end(eim); } @@ -189,7 +189,7 @@ function changedLeader(eim, leader) { function playerDead(eim, player) {} function playerRevive(eim, player) { // player presses ok on the death pop up. - if (eim.isEventTeamLackingNow(true, minPlayers, player)) { + if (eim.isExpeditionTeamLackingNow(true, minPlayers, player)) { eim.unregisterPlayer(player); end(eim); } @@ -198,7 +198,7 @@ function playerRevive(eim, player) { // player presses ok on the death pop up. } function playerDisconnected(eim, player) { - if (eim.isEventTeamLackingNow(true, minPlayers, player)) { + if (eim.isExpeditionTeamLackingNow(true, minPlayers, player)) { eim.unregisterPlayer(player); end(eim); } @@ -207,7 +207,7 @@ function playerDisconnected(eim, player) { } function leftParty(eim, player) { - if (eim.isEventTeamLackingNow(false, minPlayers, player)) { + if (eim.isExpeditionTeamLackingNow(false, minPlayers, player)) { end(eim); } else diff --git a/scripts/event/CWKPQ.js b/scripts/event/CWKPQ.js index 6ca1130023..87b5eddc4b 100644 --- a/scripts/event/CWKPQ.js +++ b/scripts/event/CWKPQ.js @@ -241,7 +241,7 @@ function scheduledTimeout(eim) { function changedMap(eim, player, mapid) { if (mapid < minMapId || mapid > maxMapId) { - if (eim.isExpeditionTeamLackingNow(true, minPlayers, player)) { + if (eim.isEventTeamLackingNow(true, minPlayers, player)) { eim.dropMessage(5, "[Expedition] Either the leader has quit the expedition or there is no longer the minimum number of members required to continue it."); eim.unregisterPlayer(player); end(eim); @@ -297,7 +297,7 @@ function changedLeader(eim, leader) {} function playerDead(eim, player) {} function playerRevive(eim, player) { - if (eim.isExpeditionTeamLackingNow(true, minPlayers, player)) { + if (eim.isEventTeamLackingNow(true, minPlayers, player)) { eim.unregisterPlayer(player); eim.dropMessage(5, "[Expedition] Either the leader has quit the expedition or there is no longer the minimum number of members required to continue it."); end(eim); @@ -309,7 +309,7 @@ function playerRevive(eim, player) { } function playerDisconnected(eim, player) { - if (eim.isExpeditionTeamLackingNow(true, minPlayers, player)) { + if (eim.isEventTeamLackingNow(true, minPlayers, player)) { eim.dropMessage(5, "[Expedition] Either the leader has quit the expedition or there is no longer the minimum number of members required to continue it."); eim.unregisterPlayer(player); end(eim); diff --git a/scripts/event/RescueGaga.js b/scripts/event/RescueGaga.js new file mode 100644 index 0000000000..dc9dd6b7c7 --- /dev/null +++ b/scripts/event/RescueGaga.js @@ -0,0 +1,211 @@ +/** + * @author: kevintjuh93 + * @author: Ronan +*/ + +importPackage(Packages.tools); + +var isPq = true; +var minPlayers = 1, maxPlayers = 1; +var minLevel = 12, maxLevel = 255; +var entryMap = 922240000; +var exitMap = 922240200; +var recruitMap = 922240200; + +var minMapId = 922240000; +var maxMapId = 922240100; + +var eventTime = 3; // 3 minutes + +var lobbyRange = [0, 19]; + +function init() { + setEventRequirements(); +} + +function setLobbyRange() { + return lobbyRange; +} + +function setEventRequirements() { + var reqStr = ""; + + reqStr += "\r\n Number of players: "; + if(maxPlayers - minPlayers >= 1) reqStr += minPlayers + " ~ " + maxPlayers; + else reqStr += minPlayers; + + reqStr += "\r\n Level range: "; + if(maxLevel - minLevel >= 1) reqStr += minLevel + " ~ " + maxLevel; + else reqStr += minLevel; + + reqStr += "\r\n Time limit: "; + reqStr += eventTime + " minutes"; + + em.setProperty("party", reqStr); +} + +function setEventExclusives(eim) { + var itemSet = []; + eim.setExclusiveItems(itemSet); +} + +function setEventRewards(eim) { + var itemSet, itemQty, evLevel, expStages; + + evLevel = 1; //Rewards at clear PQ + itemSet = []; + itemQty = []; + eim.setEventRewards(evLevel, itemSet, itemQty); + + expStages = []; //bonus exp given on CLEAR stage signal + eim.setEventClearStageExp(expStages); +} + +function getEligibleParty(party) { //selects, from the given party, the team that is allowed to attempt this event + var eligible = []; + var hasLeader = false; + + if(party.size() > 0) { + var partyList = party.toArray(); + + for(var i = 0; i < party.size(); i++) { + var ch = partyList[i]; + + if(ch.getMapId() == recruitMap && ch.getLevel() >= minLevel && ch.getLevel() <= maxLevel) { + if(ch.isLeader()) hasLeader = true; + eligible.push(ch); + } + } + } + + if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; + return eligible; +} + +function setup(level, lobbyid) { + var eim = em.newInstance("RescueGaga_" + lobbyid); + eim.setProperty("level", level); + eim.setProperty("stage", "0"); + eim.setProperty("falls", "0"); + + respawnStages(eim); + eim.startEventTimer(eventTime * 60000); + setEventRewards(eim); + setEventExclusives(eim); + return eim; +} + +function afterSetup(eim) {} + +function respawnStages(eim) {} + +function playerEntry(eim, player) { + var map = eim.getMapInstance(entryMap); + player.changeMap(map, map.getPortal(0)); + + player.announce(MaplePacketCreator.showEffect("event/space/start")); + player.startMapEffect("Please rescue Gaga within the time limit.", 5120027); +} + +function scheduledTimeout(eim) { + end(eim); +} + +function playerUnregistered(eim, player) {} + +function playerExit(eim, player) { + eim.unregisterPlayer(player); + player.changeMap(exitMap, 0); +} + +function changedMap(eim, player, mapid) { + if (mapid < minMapId || mapid > maxMapId) { + if (eim.isEventTeamLackingNow(true, minPlayers, player)) { + eim.unregisterPlayer(player); + + player.changeMap(mapid, 0); + player.cancelEffect(2360002); + + end(eim); + } else { + eim.unregisterPlayer(player); + + player.changeMap(mapid, 0); + player.cancelEffect(2360002); + } + } else if (mapid == maxMapId) { + eim.clearPQ(); + + var rgaga = player.getEvents().get("rescueGaga"); + rgaga.complete(); + } +} + +function afterChangedMap(eim, player, mapid) { + if (mapid == minMapId) { + player.getAbstractPlayerInteraction().useItem(2360002);//HOORAY <3 + } else { + player.cancelEffect(2360002); + } +} + +function changedLeader(eim, leader) {} + +function playerDead(eim, player) {} + +function playerRevive(eim, player) { // player presses ok on the death pop up. + if (eim.isEventTeamLackingNow(true, minPlayers, player)) { + eim.unregisterPlayer(player); + end(eim); + } + else + eim.unregisterPlayer(player); +} + +function playerDisconnected(eim, player) { + if (eim.isEventTeamLackingNow(true, minPlayers, player)) { + eim.unregisterPlayer(player); + end(eim); + } + else + eim.unregisterPlayer(player); +} + +function leftParty(eim, player) {} + +function disbandParty(eim) {} + +function monsterValue(eim, mobId) { + return 1; +} + +function end(eim) { + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) { + playerExit(eim, party.get(i)); + } + eim.dispose(); +} + +function giveRandomEventReward(eim, player) { + eim.giveEventReward(player); +} + +function clearPQ(eim) { + eim.stopEventTimer(); + eim.setEventCleared(); + + eim.schedule("spawnGrandpaBunny", 10 * 1000); +} + +function spawnGrandpaBunny(eim) { + eim.spawnNpc(9001105, new java.awt.Point(175, -20), eim.getInstanceMap(maxMapId)); +} + +function monsterKilled(mob, eim) {} + +function allMonstersDead(eim) {} + +function cancelSchedule() {} + +function dispose(eim) {} diff --git a/scripts/event/ZakumBattle.js b/scripts/event/ZakumBattle.js index 47b979b565..1e7fdab44a 100644 --- a/scripts/event/ZakumBattle.js +++ b/scripts/event/ZakumBattle.js @@ -85,7 +85,9 @@ function setEventRewards(eim) { eim.setEventClearStageMeso(mesoStages); } -function afterSetup(eim) {} +function afterSetup(eim) { + em.getChannelServer().getMapFactory().getMap(211042300).getReactorById(2118002).forceHitReactor(1); +} function setup(channel) { var eim = em.newInstance("Zakum" + channel); @@ -188,6 +190,7 @@ function giveRandomEventReward(eim, player) { function clearPQ(eim) { eim.stopEventTimer(); eim.setEventCleared(); + em.getChannelServer().getMapFactory().getMap(211042300).getReactorById(2118002).forceHitReactor(0); } function isZakum(mob) { @@ -209,4 +212,8 @@ function allMonstersDead(eim) {} function cancelSchedule() {} -function dispose(eim) {} +function dispose(eim) { + if (!eim.isEventCleared()) { + em.getChannelServer().getMapFactory().getMap(211042300).getReactorById(2118002).forceHitReactor(0); + } +} diff --git a/scripts/map/onFirstUserEnter/spaceGaGa_sMap.js b/scripts/map/onFirstUserEnter/spaceGaGa_sMap.js index 842f00ed6d..3ec7de09a7 100644 --- a/scripts/map/onFirstUserEnter/spaceGaGa_sMap.js +++ b/scripts/map/onFirstUserEnter/spaceGaGa_sMap.js @@ -1,5 +1,4 @@ function start(ms) { - ms.getPlayer().resetEnteredScript(); - ms.getPlayer().getMap().addMapTimer(180); + ms.getPlayer().resetEnteredScript(); ms.spawnMonster(9300331, -28, 0); } \ No newline at end of file diff --git a/scripts/map/onFirstUserEnter/spaceGaGa_start.js b/scripts/map/onFirstUserEnter/spaceGaGa_start.js deleted file mode 100644 index 57d476e830..0000000000 --- a/scripts/map/onFirstUserEnter/spaceGaGa_start.js +++ /dev/null @@ -1,41 +0,0 @@ -/* - This file is part of the OdinMS Maple Story Server - Copyright (C) 2008 Patrick Huy - Matthias Butz - Jan Christian Meyer - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation version 3 as published by - the Free Software Foundation. You may not use, modify or distribute - this program under any other version of the GNU Affero General Public - License. - - 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 Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ -/* - *@Author: kevintjuh93 -*/ - -importPackage(Packages.tools); -var player; - -function start(ms) { - player = ms.getPlayer(); - player.resetEnteredScript(); - ms.getClient().announce(MaplePacketCreator.showEffect("event/space/start")); - player.startMapEffect("Please rescue Gaga within the time limit.", 5120027); - var map = player.getMap(); - if (map.getTimeLeft() > 0) { - ms.getClient().announce(MaplePacketCreator.getClock(map.getTimeLeft())); - } else { - map.addMapTimer(180); - } - ms.useItem(2360002);//HOORAY <3 -} \ No newline at end of file diff --git a/scripts/npc/9000019.js b/scripts/npc/9000019.js new file mode 100644 index 0000000000..c5c20ae161 --- /dev/null +++ b/scripts/npc/9000019.js @@ -0,0 +1,32 @@ +var status; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && type > 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + + if(status == 0) { + if(cm.getPlayer().getInventory(Packages.client.inventory.MapleInventoryType.ETC).getNumFreeSlot() < 1) { + cm.sendNext("Check for a available slot on your ETC inventory."); + cm.dispose(); + return; + } + + cm.getClient().announce(Packages.tools.MaplePacketCreator.openRPSNPC()); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/9001102.js b/scripts/npc/9001102.js new file mode 100644 index 0000000000..101c772a71 --- /dev/null +++ b/scripts/npc/9001102.js @@ -0,0 +1,54 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** +* @Author : iAkira, Kevintjuh93 +**/ +var status = 0; +var selected = 0; + +function start() { + if (cm.getPlayer().getMapId() == 100000000) { + cm.sendNext("There! Did you see that? You didn't? A UFO just passed... there!! Look, someone is getting dragged into the UFO... arrrrrrgh, it's Gaga! #rGaga just got kidnapped by a UFO!#k"); + } +} + +function action(m,t,s) { + if (m > 0) { + status++; + if (cm.getPlayer().getMapId() == 100000000) { // warper completed + if (status == 1) { + if (cm.getPlayer().getLevel() >= 12) + cm.sendYesNo("What do we do now? It's just a rumor yet, but... I've heard that scary things happen to you if you get kidnapped by aliens... may be that's what happenning to Gaga right now! Please, please rescue Gaga! \r\n #bGaga may be a bit indetermined and clueless, but#k he has a really good heart. I can't let something terrible happen to him. Right! Grandpa from the moon might know how to rescue him! I will send you to the moon, so please go meet Grandpa and rescue Gaga!!!"); + else + cm.sendOk("Oh! It seems you don't reach the level requirements to save Gaga. Please come back when you are level 12 or higher."); + + } else if (status == 2) + cm.sendNext("Thank you so much. Please rescue Gaga! Grandpa from the moon will help you."); + else if (status == 3) { + cm.warp(922240200, 0); + cm.dispose(); + } + } + } else if (m < 1) { + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/9001105.js b/scripts/npc/9001105.js new file mode 100644 index 0000000000..d648f068ee --- /dev/null +++ b/scripts/npc/9001105.js @@ -0,0 +1,77 @@ +var status; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && type > 0) { + if (cm.getPlayer().getMapId() == 922240200) { + cm.sendOk("That's a shame, come back when your ready."); + } + + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + + if(status == 0) { + if (cm.getMapId() == 922240200) { + cm.sendSimple("Did you have something to say...? #b\b\r\n#L0#I want to rescue Gaga.#l\r\n"); //#L1#I want to go to the Space Mine.#l + } else if (cm.getMapId() >= 922240000 && cm.getMapId() <= 922240019) { + cm.sendYesNo("Don't worry if you fail. You'll have 3 chances. Do you still want to give up?"); + } else if (cm.getMapId() >= 922240100 && cm.getMapId() <= 922240119) { + var text = "You went through so much trouble to rescue Gaga, but it looks like we're back to square one. "; + var rgaga = cm.getPlayer().getEvents().get("rescueGaga"); + if (rgaga.getCompleted() > 10) { + text += "Please don't give up until Gaga is rescued. To show you my appreciation for what you've accomplished thus far, I've given you a Spaceship. It's rather worn out, but it should still be operational. Check your #bSkill Window#k."; + rgaga.giveSkill(cm.getPlayer()); + } else + text += "Let's go back now."; + + cm.sendNext(text); + } + } else { + if (cm.getPlayer().getMapId() == 922240200) { + if (status == 1) { + if(selection == 0) { + selected = 1; + cm.sendNext("Welcome! I heard what happened from Baby Moon Bunny I'm glad you came since I was Planning on requesting some help. Gaga is a friend of mine who has helped me before and often stops by to say hello. Unfortunately, he was kidnapped by aliens."); + } else { + selected = 2; + cm.sendYesNo("At the Space Mine, you can find special ores called #bKrypto Crystals#k that contains the mysterious power of space. #bKrypto Crystals#l are usually emerald in color, but will turn brown if hit with the Spaceship's #bSpace Beam#k. Remember, in order to thwart this alien conspracy, #b10 Brown Krypto Crystal's and 10 Emerald Krypto Crystal's are needed. But since even #b1 Krypto Crystal#k can be of help, brign me as many as possible. Oh, and one more thing! The Space Mines are protected by the Space Mateons. They are extemely strong due to the power of the #Krypto Crystals#k, so don't try to defeat them. Simply concentrate on quickly collecting the crystals."); + } + } else if (status == 2) { + if(selected == 1) { + cm.sendYesNo("If we just leave Gaga with the aliens, something terrible will happen to him! I'll let you borrow a spaceship that the Moon Bunnies use for traveling so that you can rescue Gaga.#b Although he might appear a bit indecisive, slow, and immature at times#k, he's really a nice young man. Do you want to go rescue him now?"); + } else if(selected == 2) { + cm.sendOk("Not coded yet, f4."); + cm.dispose(); + } + } else if (status == 3) { + var em = cm.getEventManager("RescueGaga"); + if (em == null) { + cm.sendOk("This event is currently unavailable."); + } else if (!em.startInstance(cm.getPlayer())) { + cm.sendOk("There is currently someone in this map, come back later."); + } + + cm.dispose(); + } + } else if (cm.getPlayer().getMapId() >= 922240000 && cm.getPlayer().getMapId() <= 922240019) { + cm.warp(922240200, 0); + cm.dispose(); + } else if (cm.getPlayer().getMapId() >= 922240100 && cm.getPlayer().getMapId() <= 922240119) { + cm.warp(922240200, 0); + cm.dispose(); + } + } + } +} \ No newline at end of file diff --git a/scripts/npc/9001108.js b/scripts/npc/9001108.js deleted file mode 100644 index cf56b21f87..0000000000 --- a/scripts/npc/9001108.js +++ /dev/null @@ -1,108 +0,0 @@ -/* - This file is part of the OdinMS Maple Story Server - Copyright (C) 2008 Patrick Huy - Matthias Butz - Jan Christian Meyer - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation version 3 as published by - the Free Software Foundation. You may not use, modify or distribute - this program under any other version of the GNU Affero General Public - License. - - 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 Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ -/** -* @Author : iAkira, Kevintjuh93 -**/ -var status = 0; -var selected = 0; - -function start() { - if (cm.getPlayer().getMapId() == 100000000) { - cm.sendNext("There! Did you see that? You didn't? A UFO just passed... there!! Look, someone is getting dragged into the UFO... arrrrrrgh, it's Gaga! #rGaga just got kidnapped by a UFO!#k"); - } else if (cm.getPlayer().getMapId() == 922240200) { - cm.sendSimple("Did you have something to say...? #b\b\r\n#L0#I want to rescue Gaga.#l\r\n#L1#I want to go to the Space Mine.#l"); - } else if (cm.getPlayer().getMapId() >= 922240000 && cm.getPlayer().getMapId() <= 922240019) { - cm.sendYesNo("Don't worry if you fail. You'll have 3 chances. Do you still want to give up?"); - } else if (cm.getPlayer().getMapId() >= 922240100 && cm.getPlayer().getMapId() <= 922240119) { - var text = "You went through so much trouble to rescue Gaga, but it looks like we're back to square one. "; - var rgaga = cm.getPlayer().getEvents().get("rescueGaga"); - if (rgaga.getCompleted() == 10 || rgaga.getCompleted() == 20) { - text += "Please don't give up untill Gaga is rescued. To show you my appreciation for what you've accomplished thus far, I've given you a Spaceship. It's rather worn out, but it should still be operational. Check your #bSkill Window#k."; - rgaga.giveSkill(cm.getPlayer()); - } else - text += "Let's go back now."; - - cm.sendNext(text); - } -} - -function action(m,t,s) { - if (m > 0) { - status++; - if (cm.getPlayer().getMapId() == 100000000) { // warper completed - if (status == 1) { - if (cm.getPlayer().getLevel() >= 12) - cm.sendYesNo("What do we do now? It's just a rumor yet, but... I've heard that scary things happen to you if you get kidnapped by aliens... may be that's what happenning to Gaga right now! Please, please rescue Gaga! \r\n #bGaga may be a bit indetermined and clueless, but#k he has a really good heart. I can't let something terrible happen to him. Right! Grandpa from the moon might know how to rescue him! I will send you to the moon, so please go meet Grandpa and rescue Gaga"); - else - cm.sendOk("Oh! it seems you don't reach the level requirements to save Gaga. Please come back when you are level 12 or higher."); - - } else if (status == 2) - cm.sendNext("Thank you so much. Please rescue Gaga! Grandpa from the moon will help you."); - else if (status == 3) { - cm.warp(922240200, 0); - cm.dispose(); - } - } else if (cm.getPlayer().getMapId() == 922240200) { - if (status == 1) { - if(s == 0) { - selected = 1; - cm.sendNext("Welcome! I heard what happened from Baby Moon Bunny I'm glad you came since I was Planning on requesting some help. Gaga is a friend of mine who has helped me before and often stops by to say hello. Unfortunaley, he was kidnapped by aliens."); - } else { - selected = 2; - cm.sendYesNo("At the Space Mine, you can find special ores called #bKrypto Crystals#k that contains the mysterious power of space. #bKrypto Crystals#l are usually emerald in color, but will turn brown if hit with the Spaceship's #bSpace Beam#k. Remember, in order to thwart this alien conspracy, #b10 Brown Krypto Crystal's and 10 Emerald Krypto Crystal's are needed. But since even #b1 Krypto Crystal#k can be of help, brign me as many as possible. Oh, and one more thing! The Space Mines are protected by the Space Mateons. They are extemely strong due to the power of the #Krypto Crystals#k, so don't try to defeat them. Simply concentrate on quickly collecting the crystals."); - } - } else if (status == 2) { - if(selected == 1) { - cm.sendYesNo("If we just leave Gaga with the aliens, something terrible will happen to him! I'll let you borrow a spaceship that the Moon Bunnies use for traveling so that you can rescue Gaga.#b Although he might appear a bit indecieve, slow, and immature at times#k, he's really a nice young man. Do you want to go rescue him now?"); - } else if(selected == 2) { - cm.sendOk("Not coded yet, f4."); - cm.dispose(); - } - } else if (status == 3) { - var number = -1; - for (var i = 0; i < 20; i++) { - var mapFactory = cm.getClient().getChannelServer().getMapFactory(); - if (mapFactory.getMap(922240000 + i).getCharacters().isEmpty()) { - number = i; - break; - } - } - if (number > -1) - cm.warp(922240000 + number); - else - cm.sendOk("There are currently no empty maps, please try again later."); - - cm.dispose(); - } - } else if ((cm.getPlayer().getMapId() >= 922240000 && cm.getPlayer().getMapId() <= 922240019) || (cm.getPlayer().getMapId() >= 922240100 && cm.getPlayer().getMapId() <= 922240119)) { - cm.warp(922240200, 0); - cm.dispose(); - } - } else if (m < 1) { - if(m == 0) { - if (cm.getPlayer().getMapId() == 922240200) { - cm.sendOk("That's a shame, come back when your ready."); - } - } - cm.dispose(); - } -} \ No newline at end of file diff --git a/scripts/npc/9977777.js b/scripts/npc/9977777.js index ed1e5eb243..06a5f714a5 100644 --- a/scripts/npc/9977777.js +++ b/scripts/npc/9977777.js @@ -43,6 +43,7 @@ function writeFeatureTab_PQs() { addFeature("RnJPQ/HorntailPQ/TreasurePQ/ElnathPQ/HolidayPQ."); addFeature("CWKPQ as Expedition-based instance."); addFeature("Scarga/Horntail/Showa/Balrog/Zakum/Pinkbean."); + addFeature("Expeditions with entry-limit system available."); addFeature("GuildPQ & queue with multi-lobby system available."); addFeature("Brand-new PQs: BossRushPQ, CafePQ."); addFeature("Mu Lung Dojo."); @@ -57,7 +58,7 @@ function writeFeatureTab_Skills() { addFeature("Reviewed many skills, such as Steal and M. Door."); addFeature("Heal GMS-like: fixed HP gain & Heal skill packet."); addFeature("Improved battleship: HP visible and map-persistent."); - addFeature("Maker skill features properly developed."); + addFeature("Maker skill features developed - pckts thanks Arnah."); addFeature("Chair Mastery - map chair boosts HP/MP rec."); addFeature("Mu Lung Dojo skills functional."); addFeature("Monster Magnet skill no longer crashes players."); @@ -185,6 +186,7 @@ function writeFeatureTab_Playerpotentials() { addFeature("Optional cash shop inventory separated by classes."); addFeature("Players manage 'same-typed' invites exclusively."); addFeature("Player buffs with conditional active effects."); + addFeature("Rock-paper-scissors minigame - thanks Arnah!"); } function writeFeatureTab_Serverpotentials() { diff --git a/scripts/portal/Spacegaga_out0.js b/scripts/portal/Spacegaga_out0.js index ed2c009242..8a89b22737 100644 --- a/scripts/portal/Spacegaga_out0.js +++ b/scripts/portal/Spacegaga_out0.js @@ -1,11 +1,15 @@ //Author: kevintjuh93 function enter(pi) { - if (pi.getPlayer().getEvents().get("rescueGaga").fallAndGet() > 3) { - pi.playPortalSound(); pi.warp(922240200, 0); - pi.getPlayer().cancelEffect(2360002); - } else + var eim = pi.getPlayer().getEventInstance(); + var fc = eim.getIntProperty("falls"); + + if (fc >= 3) { + pi.playPortalSound(); pi.warp(922240200, 0); + } else { + eim.setIntProperty("falls", fc + 1); pi.playPortalSound(); pi.warp(pi.getPlayer().getMapId(), 0); + } return true; } \ No newline at end of file diff --git a/scripts/portal/Spacegaga_out1.js b/scripts/portal/Spacegaga_out1.js index ed2c009242..e27fdabbd6 100644 --- a/scripts/portal/Spacegaga_out1.js +++ b/scripts/portal/Spacegaga_out1.js @@ -1,11 +1,15 @@ //Author: kevintjuh93 function enter(pi) { - if (pi.getPlayer().getEvents().get("rescueGaga").fallAndGet() > 3) { - pi.playPortalSound(); pi.warp(922240200, 0); - pi.getPlayer().cancelEffect(2360002); - } else + var eim = pi.getPlayer().getEventInstance(); + var fc = eim.getIntProperty("falls"); + + if (fc >= 3) { + pi.playPortalSound(); pi.warp(922240200, 0); + } else { + eim.setIntProperty("falls", fc + 1); pi.playPortalSound(); pi.warp(pi.getPlayer().getMapId(), 0); + } return true; } \ No newline at end of file diff --git a/scripts/portal/Spacegaga_out2.js b/scripts/portal/Spacegaga_out2.js index ed2c009242..e27fdabbd6 100644 --- a/scripts/portal/Spacegaga_out2.js +++ b/scripts/portal/Spacegaga_out2.js @@ -1,11 +1,15 @@ //Author: kevintjuh93 function enter(pi) { - if (pi.getPlayer().getEvents().get("rescueGaga").fallAndGet() > 3) { - pi.playPortalSound(); pi.warp(922240200, 0); - pi.getPlayer().cancelEffect(2360002); - } else + var eim = pi.getPlayer().getEventInstance(); + var fc = eim.getIntProperty("falls"); + + if (fc >= 3) { + pi.playPortalSound(); pi.warp(922240200, 0); + } else { + eim.setIntProperty("falls", fc + 1); pi.playPortalSound(); pi.warp(pi.getPlayer().getMapId(), 0); + } return true; } \ No newline at end of file diff --git a/scripts/portal/Spacegaga_out3.js b/scripts/portal/Spacegaga_out3.js index ed2c009242..8a89b22737 100644 --- a/scripts/portal/Spacegaga_out3.js +++ b/scripts/portal/Spacegaga_out3.js @@ -1,11 +1,15 @@ //Author: kevintjuh93 function enter(pi) { - if (pi.getPlayer().getEvents().get("rescueGaga").fallAndGet() > 3) { - pi.playPortalSound(); pi.warp(922240200, 0); - pi.getPlayer().cancelEffect(2360002); - } else + var eim = pi.getPlayer().getEventInstance(); + var fc = eim.getIntProperty("falls"); + + if (fc >= 3) { + pi.playPortalSound(); pi.warp(922240200, 0); + } else { + eim.setIntProperty("falls", fc + 1); pi.playPortalSound(); pi.warp(pi.getPlayer().getMapId(), 0); + } return true; } \ No newline at end of file diff --git a/scripts/portal/Zakum05.js b/scripts/portal/Zakum05.js index 7f0f674aab..b23f2495a4 100644 --- a/scripts/portal/Zakum05.js +++ b/scripts/portal/Zakum05.js @@ -34,6 +34,17 @@ function enter(pi) { return false; } + if (!pi.haveItem(4001017)) { // thanks Conrad for pointing out missing checks for token item and unused reactor + pi.getPlayer().dropMessage(5,"You do not have the Eye of Fire. You may not face the boss."); + return false; + } + + var react = pi.getMap().getReactorById(2118002); + if (react != null && react.getState() > 0) { + pi.getPlayer().dropMessage(5,"The entrance is currently blocked."); + return false; + } + pi.playPortalSound(); pi.warp(211042400,"west00"); return true; } \ No newline at end of file diff --git a/scripts/portal/gaga_success.js b/scripts/portal/gaga_success.js index 24d3c5d0af..cd6b93d9f9 100644 --- a/scripts/portal/gaga_success.js +++ b/scripts/portal/gaga_success.js @@ -1,8 +1,6 @@ //Author: kevintjuh93 function enter(pi) { - pi.getPlayer().getEvents().get("rescueGaga").complete(); pi.playPortalSound(); pi.warp(922240100 + (pi.getPlayer().getMapId() - 922240000)); - pi.getPlayer().cancelEffect(2360002); return true; } \ No newline at end of file diff --git a/sql/db_database.sql b/sql/db_database.sql index 857857152e..2a61cf7e54 100644 --- a/sql/db_database.sql +++ b/sql/db_database.sql @@ -80,6 +80,22 @@ CREATE TABLE IF NOT EXISTS `area_info` ( PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; +CREATE TABLE IF NOT EXISTS `bosslog_daily` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `characterid` int(11) NOT NULL, + `bosstype` enum('ZAKUM','HORNTAIL','PINKBEAN','SCARGA','PAPULATUS') NOT NULL, + `attempttime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `bosslog_weekly` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `characterid` int(11) NOT NULL, + `bosstype` enum('ZAKUM','HORNTAIL','PINKBEAN','SCARGA','PAPULATUS') NOT NULL, + `attempttime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + CREATE TABLE IF NOT EXISTS `bbs_replies` ( `replyid` int(10) unsigned NOT NULL AUTO_INCREMENT, `threadid` int(10) unsigned NOT NULL, @@ -13032,36 +13048,36 @@ INSERT IGNORE INTO `makercreatedata` (`id`, `itemid`, `req_level`, `req_maker_le (0, 4250900, 45, 1, 110000, 0, 0, 0, 1, 0), (0, 4251000, 45, 1, 110000, 0, 0, 0, 1, 0), (0, 4251100, 45, 1, 110000, 0, 0, 0, 1, 0), - (0, 4251300, 75, 2, 164000, 0, 0, 0, 1, 0), - (0, 4251400, 75, 2, 164000, 0, 0, 0, 1, 0), - (0, 4250001, 45, 1, 328000, 0, 0, 0, 1, 0), - (0, 4250101, 45, 1, 328000, 0, 0, 0, 1, 0), - (0, 4250201, 45, 1, 328000, 0, 0, 0, 1, 0), - (0, 4250301, 45, 1, 328000, 0, 0, 0, 1, 0), - (0, 4250401, 45, 1, 328000, 0, 0, 0, 1, 0), - (0, 4250501, 45, 1, 328000, 0, 0, 0, 1, 0), - (0, 4250601, 45, 1, 328000, 0, 0, 0, 1, 0), - (0, 4250701, 45, 1, 328000, 0, 0, 0, 1, 0), - (0, 4250801, 45, 1, 328000, 0, 0, 0, 1, 0), - (0, 4250901, 45, 1, 328000, 0, 0, 0, 1, 0), - (0, 4251001, 45, 1, 328000, 0, 0, 0, 1, 0), - (0, 4251101, 45, 1, 328000, 0, 0, 0, 1, 0), - (0, 4251301, 75, 2, 491000, 0, 0, 0, 1, 0), - (0, 4251401, 75, 2, 491000, 0, 0, 0, 1, 0), - (0, 4250002, 45, 2, 546000, 0, 0, 0, 1, 0), - (0, 4250102, 45, 2, 546000, 0, 0, 0, 1, 0), - (0, 4250202, 45, 2, 546000, 0, 0, 0, 1, 0), - (0, 4250302, 45, 2, 546000, 0, 0, 0, 1, 0), - (0, 4250402, 45, 2, 546000, 0, 0, 0, 1, 0), - (0, 4250502, 45, 2, 546000, 0, 0, 0, 1, 0), - (0, 4250602, 45, 2, 546000, 0, 0, 0, 1, 0), - (0, 4250702, 45, 2, 546000, 0, 0, 0, 1, 0), - (0, 4250802, 45, 2, 546000, 0, 0, 0, 1, 0), - (0, 4250902, 45, 2, 546000, 0, 0, 0, 1, 0), - (0, 4251002, 45, 2, 546000, 0, 0, 0, 1, 0), - (0, 4251102, 45, 2, 546000, 0, 0, 0, 1, 0), - (0, 4251302, 75, 3, 819000, 0, 0, 0, 1, 0), - (0, 4251402, 75, 3, 819000, 0, 0, 0, 1, 0), + (0, 4251300, 75, 2, 165000, 0, 0, 0, 1, 0), + (0, 4251400, 75, 2, 165000, 0, 0, 0, 1, 0), + (0, 4250001, 45, 1, 330000, 0, 0, 0, 1, 0), + (0, 4250101, 45, 1, 330000, 0, 0, 0, 1, 0), + (0, 4250201, 45, 1, 330000, 0, 0, 0, 1, 0), + (0, 4250301, 45, 1, 330000, 0, 0, 0, 1, 0), + (0, 4250401, 45, 1, 330000, 0, 0, 0, 1, 0), + (0, 4250501, 45, 1, 330000, 0, 0, 0, 1, 0), + (0, 4250601, 45, 1, 330000, 0, 0, 0, 1, 0), + (0, 4250701, 45, 1, 330000, 0, 0, 0, 1, 0), + (0, 4250801, 45, 1, 330000, 0, 0, 0, 1, 0), + (0, 4250901, 45, 1, 330000, 0, 0, 0, 1, 0), + (0, 4251001, 45, 1, 330000, 0, 0, 0, 1, 0), + (0, 4251101, 45, 1, 330000, 0, 0, 0, 1, 0), + (0, 4251301, 75, 2, 495000, 0, 0, 0, 1, 0), + (0, 4251401, 75, 2, 495000, 0, 0, 0, 1, 0), + (0, 4250002, 45, 2, 550000, 0, 0, 0, 1, 0), + (0, 4250102, 45, 2, 550000, 0, 0, 0, 1, 0), + (0, 4250202, 45, 2, 550000, 0, 0, 0, 1, 0), + (0, 4250302, 45, 2, 550000, 0, 0, 0, 1, 0), + (0, 4250402, 45, 2, 550000, 0, 0, 0, 1, 0), + (0, 4250502, 45, 2, 550000, 0, 0, 0, 1, 0), + (0, 4250602, 45, 2, 550000, 0, 0, 0, 1, 0), + (0, 4250702, 45, 2, 550000, 0, 0, 0, 1, 0), + (0, 4250802, 45, 2, 550000, 0, 0, 0, 1, 0), + (0, 4250902, 45, 2, 550000, 0, 0, 0, 1, 0), + (0, 4251002, 45, 2, 550000, 0, 0, 0, 1, 0), + (0, 4251102, 45, 2, 550000, 0, 0, 0, 1, 0), + (0, 4251302, 75, 3, 825000, 0, 0, 0, 1, 0), + (0, 4251402, 75, 3, 825000, 0, 0, 0, 1, 0), (0, 4001174, 45, 1, 0, 4031966, 0, 0, 1, 0), (0, 4001175, 50, 1, 0, 4031967, 0, 0, 1, 0), (0, 4001176, 55, 1, 0, 4031968, 0, 0, 10, 0), @@ -13080,6 +13096,8 @@ INSERT IGNORE INTO `makercreatedata` (`id`, `itemid`, `req_level`, `req_maker_le (0, 4032312, 70, 1, 0, 0, 0, 0, 1, 0), (0, 2041058, 50, 1, 55000, 0, 1122013, 0, 1, 0), (0, 2040727, 50, 1, 55000, 0, 1122013, 0, 1, 0), + (0, 4260007, 105, 3, 2200000, 4001126, 0, 0, 5, 0), + (0, 4260008, 105, 3, 5500000, 4001126, 0, 0, 10, 0), (1, 1002028, 45, 1, 55000, 0, 0, 4130018, 1, 1), (1, 1002085, 45, 1, 50000, 0, 0, 4130018, 1, 1), (1, 1002086, 45, 1, 41000, 0, 0, 4130018, 1, 1), @@ -13963,6 +13981,10 @@ INSERT IGNORE INTO `makerrecipedata` (`itemid`, `req_item`, `count`) VALUES (2041058, 4000299, 10), (2040727, 4000159, 50), (2040727, 4000299, 10), + (4260007, 4260006, 100), + (4260007, 4001126, 5), + (4260008, 4260007, 50), + (4260008, 4001126, 5), (1002028, 4007001, 5), (1002028, 4260000, 5), (1002085, 4007002, 5), @@ -14808,7 +14830,7 @@ INSERT IGNORE INTO `makerrecipedata` (`itemid`, `req_item`, `count`) VALUES (1372016, 4011002, 3), (1372016, 4260003, 26), (1382008, 4011002, 3), - (1382008, 4260003, 26), + (1382008, 4260004, 26), (1372009, 4011002, 4), (1372009, 4260004, 28), (1382035, 4011002, 4), @@ -15450,7 +15472,7 @@ INSERT IGNORE INTO `makerrecipedata` (`itemid`, `req_item`, `count`) VALUES (1072194, 4260004, 9), (1072195, 4007006, 9), (1072195, 4260004, 9), - (1072213, 4007001, 10), + (1072213, 4007003, 10), (1072213, 4260005, 10), (1072214, 4007002, 10), (1072214, 4260005, 10), diff --git a/sql/db_drops.sql b/sql/db_drops.sql index 568041c086..bb1ff0cb44 100644 --- a/sql/db_drops.sql +++ b/sql/db_drops.sql @@ -23926,527 +23926,528 @@ SET minimum_quantity = CASE UPDATE drop_data SET `chance`=1287 WHERE `chance`=1500; # MapleSkillbookChanceFetcher! Tuning up some skillbook drop chances in order to fit their dropper's availability (whether's a boss or not) and level. + # thanks unnqca for reporting some skillbooks having unusually high drop chances. REPLACE INTO drop_data (`dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES (851000, 2290132, 1, 1, 0, 3861), -(7090000, 2290087, 1, 1, 0, 40000), -(8090000, 2290045, 1, 1, 0, 40000), -(8140103, 2290044, 1, 1, 0, 2000), -(8140511, 2290009, 1, 1, 0, 2000), -(8140511, 2290050, 1, 1, 0, 2000), -(8140511, 2290083, 1, 1, 0, 2000), -(8140511, 2290134, 1, 1, 0, 6000), -(8140512, 2290013, 1, 1, 0, 2000), -(8140512, 2290067, 1, 1, 0, 2000), -(8140512, 2290082, 1, 1, 0, 2000), -(8140512, 2290097, 1, 1, 0, 2000), -(8140512, 2290116, 1, 1, 0, 2000), -(8140512, 2290131, 1, 1, 0, 6000), -(8140600, 2290132, 1, 1, 0, 6000), -(8140700, 2290106, 1, 1, 0, 2000), -(8140700, 2290126, 1, 1, 0, 6000), -(8140701, 2290122, 1, 1, 0, 2000), -(8140702, 2290112, 1, 1, 0, 2000), -(8140703, 2290088, 1, 1, 0, 2000), -(8140703, 2290099, 1, 1, 0, 2000), -(8141000, 2290082, 1, 1, 0, 2000), -(8141000, 2290097, 1, 1, 0, 2000), -(8141100, 2280005, 1, 1, 0, 2000), -(8141300, 2290098, 1, 1, 0, 2000), -(8142100, 2290032, 1, 1, 0, 2000), -(8142100, 2290082, 1, 1, 0, 2000), -(8142100, 2290114, 1, 1, 0, 2000), -(8143000, 2280004, 1, 1, 0, 2000), -(8150000, 2280013, 1, 1, 0, 120000), -(8150000, 2290070, 1, 1, 0, 40000), -(8150000, 2290091, 1, 1, 0, 40000), -(8150100, 2290042, 1, 1, 0, 2000), -(8150100, 2290053, 1, 1, 0, 2000), -(8150100, 2290073, 1, 1, 0, 2000), -(8150100, 2290102, 1, 1, 0, 2000), -(8150100, 2290118, 1, 1, 0, 2000), -(8150101, 2290017, 1, 1, 0, 2000), -(8150101, 2290021, 1, 1, 0, 2000), -(8150101, 2290035, 1, 1, 0, 2000), -(8150101, 2290042, 1, 1, 0, 2000), -(8150101, 2290052, 1, 1, 0, 2000), -(8150101, 2290102, 1, 1, 0, 2000), -(8150200, 2290024, 1, 1, 0, 2000), -(8150200, 2290100, 1, 1, 0, 2000), -(8150200, 2290135, 1, 1, 0, 6000), -(8150201, 2290004, 1, 1, 0, 2000), -(8150201, 2290006, 1, 1, 0, 2000), -(8150201, 2290024, 1, 1, 0, 2000), -(8150201, 2290036, 1, 1, 0, 2000), -(8150201, 2290056, 1, 1, 0, 2000), -(8150201, 2290072, 1, 1, 0, 2000), -(8150201, 2290078, 1, 1, 0, 2000), -(8150201, 2290117, 1, 1, 0, 2000), -(8150300, 2290003, 1, 1, 0, 2000), -(8150300, 2290033, 1, 1, 0, 2000), -(8150300, 2290111, 1, 1, 0, 2000), -(8150300, 2290120, 1, 1, 0, 2000), -(8150300, 2290127, 1, 1, 0, 6000), -(8150301, 2290023, 1, 1, 0, 2000), -(8150301, 2290029, 1, 1, 0, 2000), -(8150301, 2290101, 1, 1, 0, 2000), -(8150301, 2290107, 1, 1, 0, 2000), -(8150302, 2290010, 1, 1, 0, 2000), -(8150302, 2290019, 1, 1, 0, 2000), -(8150302, 2290026, 1, 1, 0, 2000), -(8150302, 2290076, 1, 1, 0, 2000), -(8150302, 2290085, 1, 1, 0, 2000), -(8150302, 2290096, 1, 1, 0, 2000), -(8150302, 2290113, 1, 1, 0, 2000), -(8150302, 2290119, 1, 1, 0, 2000), -(8150302, 2290128, 1, 1, 0, 6000), -(8160000, 2290017, 1, 1, 0, 2000), -(8160000, 2290045, 1, 1, 0, 2000), -(8160000, 2290065, 1, 1, 0, 2000), -(8160000, 2290067, 1, 1, 0, 2000), -(8160000, 2290081, 1, 1, 0, 2000), -(8170000, 2290012, 1, 1, 0, 2000), -(8170000, 2290086, 1, 1, 0, 2000), -(8170000, 2290087, 1, 1, 0, 2000), -(8170000, 2290134, 1, 1, 0, 6000), -(8180000, 2290002, 1, 1, 0, 40000), -(8180000, 2290003, 1, 1, 0, 40000), -(8180000, 2290014, 1, 1, 0, 40000), -(8180000, 2290015, 1, 1, 0, 40000), -(8180000, 2290030, 1, 1, 0, 40000), -(8180000, 2290035, 1, 1, 0, 40000), -(8180000, 2290036, 1, 1, 0, 40000), -(8180000, 2290063, 1, 1, 0, 40000), -(8180000, 2290080, 1, 1, 0, 40000), -(8180000, 2290098, 1, 1, 0, 40000), -(8180000, 2290101, 1, 1, 0, 40000), -(8180000, 2290117, 1, 1, 0, 40000), -(8180000, 2290130, 1, 1, 0, 120000), -(8180001, 2290018, 1, 1, 0, 40000), -(8180001, 2290019, 1, 1, 0, 40000), -(8180001, 2290032, 1, 1, 0, 40000), -(8180001, 2290042, 1, 1, 0, 40000), -(8180001, 2290058, 1, 1, 0, 40000), -(8180001, 2290059, 1, 1, 0, 40000), -(8180001, 2290068, 1, 1, 0, 40000), -(8180001, 2290069, 1, 1, 0, 40000), -(8180001, 2290072, 1, 1, 0, 40000), -(8180001, 2290092, 1, 1, 0, 40000), -(8180001, 2290099, 1, 1, 0, 40000), -(8180001, 2290100, 1, 1, 0, 40000), -(8180001, 2290102, 1, 1, 0, 40000), -(8180001, 2290119, 1, 1, 0, 40000), -(8180001, 2290128, 1, 1, 0, 120000), -(8190000, 2280016, 1, 1, 0, 6000), -(8190000, 2290030, 1, 1, 0, 2000), -(8190000, 2290044, 1, 1, 0, 2000), -(8190000, 2290054, 1, 1, 0, 2000), -(8190000, 2290066, 1, 1, 0, 2000), -(8190000, 2290075, 1, 1, 0, 2000), -(8190000, 2290092, 1, 1, 0, 2000), -(8190000, 2290103, 1, 1, 0, 2000), -(8190002, 2290000, 1, 1, 0, 2000), -(8190002, 2290008, 1, 1, 0, 2000), -(8190002, 2290018, 1, 1, 0, 2000), -(8190002, 2290038, 1, 1, 0, 2000), -(8190002, 2290060, 1, 1, 0, 2000), -(8190002, 2290080, 1, 1, 0, 2000), -(8190002, 2290124, 1, 1, 0, 2000), -(8190003, 2280013, 1, 1, 0, 6000), -(8190003, 2290007, 1, 1, 0, 2000), -(8190003, 2290012, 1, 1, 0, 2000), -(8190003, 2290014, 1, 1, 0, 2000), -(8190003, 2290033, 1, 1, 0, 2000), -(8190003, 2290045, 1, 1, 0, 2000), -(8190003, 2290050, 1, 1, 0, 2000), -(8190003, 2290055, 1, 1, 0, 2000), -(8190003, 2290062, 1, 1, 0, 2000), -(8190003, 2290063, 1, 1, 0, 2000), -(8190003, 2290070, 1, 1, 0, 2000), -(8190003, 2290086, 1, 1, 0, 2000), -(8190003, 2290108, 1, 1, 0, 2000), -(8190003, 2290133, 1, 1, 0, 6000), -(8190004, 2290002, 1, 1, 0, 2000), -(8190004, 2290009, 1, 1, 0, 2000), -(8190004, 2290021, 1, 1, 0, 2000), -(8190004, 2290034, 1, 1, 0, 2000), -(8190004, 2290041, 1, 1, 0, 2000), -(8190004, 2290052, 1, 1, 0, 2000), -(8190004, 2290053, 1, 1, 0, 2000), -(8190004, 2290058, 1, 1, 0, 2000), -(8190004, 2290068, 1, 1, 0, 2000), -(8190004, 2290071, 1, 1, 0, 2000), -(8190004, 2290073, 1, 1, 0, 2000), -(8190004, 2290090, 1, 1, 0, 2000), -(8190004, 2290112, 1, 1, 0, 2000), -(8190004, 2290121, 1, 1, 0, 2000), -(8190004, 2290130, 1, 1, 0, 6000), -(8190005, 2290000, 1, 1, 0, 2000), -(8190005, 2290008, 1, 1, 0, 2000), -(8190005, 2290018, 1, 1, 0, 2000), -(8190005, 2290038, 1, 1, 0, 2000), -(8190005, 2290060, 1, 1, 0, 2000), -(8190005, 2290080, 1, 1, 0, 2000), -(8190005, 2290124, 1, 1, 0, 2000), -(8200000, 2290005, 1, 1, 0, 2000), -(8200000, 2290011, 1, 1, 0, 2000), -(8200000, 2290114, 1, 1, 0, 2000), -(8200001, 2280015, 1, 1, 0, 6000), -(8200001, 2290050, 1, 1, 0, 2000), -(8200001, 2290059, 1, 1, 0, 2000), -(8200001, 2290065, 1, 1, 0, 2000), -(8200001, 2290129, 1, 1, 0, 6000), -(8200002, 2290062, 1, 1, 0, 2000), -(8200002, 2290066, 1, 1, 0, 2000), -(8200002, 2290070, 1, 1, 0, 2000), -(8200002, 2290131, 1, 1, 0, 6000), -(8200002, 2290139, 1, 1, 0, 6000), -(8200003, 2290012, 1, 1, 0, 2000), -(8200003, 2290056, 1, 1, 0, 2000), -(8200003, 2290071, 1, 1, 0, 2000), -(8200003, 2290101, 1, 1, 0, 2000), -(8200003, 2290136, 1, 1, 0, 6000), -(8200004, 2280016, 1, 1, 0, 6000), -(8200004, 2290069, 1, 1, 0, 2000), -(8200004, 2290072, 1, 1, 0, 2000), -(8200004, 2290073, 1, 1, 0, 2000), -(8200004, 2290127, 1, 1, 0, 6000), -(8200004, 2290134, 1, 1, 0, 6000), -(8200005, 2280014, 1, 1, 0, 6000), -(8200005, 2290078, 1, 1, 0, 2000), -(8200005, 2290079, 1, 1, 0, 2000), -(8200005, 2290095, 1, 1, 0, 2000), -(8200006, 2290003, 1, 1, 0, 2000), -(8200006, 2290064, 1, 1, 0, 2000), -(8200006, 2290076, 1, 1, 0, 2000), -(8200006, 2290077, 1, 1, 0, 2000), -(8200006, 2290129, 1, 1, 0, 6000), -(8200006, 2290138, 1, 1, 0, 6000), -(8200007, 2290006, 1, 1, 0, 2000), -(8200007, 2290007, 1, 1, 0, 2000), -(8200007, 2290011, 1, 1, 0, 2000), -(8200007, 2290016, 1, 1, 0, 2000), -(8200007, 2290125, 1, 1, 0, 2000), -(8200007, 2290136, 1, 1, 0, 6000), -(8200008, 2290006, 1, 1, 0, 2000), -(8200008, 2290051, 1, 1, 0, 2000), -(8200008, 2290121, 1, 1, 0, 2000), -(8200008, 2290122, 1, 1, 0, 2000), -(8200008, 2290133, 1, 1, 0, 6000), -(8200009, 2290013, 1, 1, 0, 2000), -(8200009, 2290016, 1, 1, 0, 2000), -(8200009, 2290031, 1, 1, 0, 2000), -(8200009, 2290039, 1, 1, 0, 2000), -(8200010, 2290026, 1, 1, 0, 2000), -(8200010, 2290059, 1, 1, 0, 2000), -(8200010, 2290088, 1, 1, 0, 2000), -(8200010, 2290089, 1, 1, 0, 2000), -(8200010, 2290127, 1, 1, 0, 6000), -(8200011, 2290001, 1, 1, 0, 3000), -(8200011, 2290040, 1, 1, 0, 3000), -(8200011, 2290046, 1, 1, 0, 3000), -(8200011, 2290048, 1, 1, 0, 3000), -(8200011, 2290049, 1, 1, 0, 3000), -(8200011, 2290114, 1, 1, 0, 3000), -(8200011, 2290137, 1, 1, 0, 9000), -(8200012, 2290041, 1, 1, 0, 3000), -(8200012, 2290092, 1, 1, 0, 3000), -(8200012, 2290093, 1, 1, 0, 3000), -(8200012, 2290115, 1, 1, 0, 3000), -(8200012, 2290137, 1, 1, 0, 9000), -(8200012, 2290139, 1, 1, 0, 9000), -(8220002, 2290020, 1, 1, 0, 40000), -(8220002, 2290081, 1, 1, 0, 40000), -(8220002, 2290085, 1, 1, 0, 40000), -(8220002, 2290133, 1, 1, 0, 120000), -(8220003, 2290006, 1, 1, 0, 40000), -(8220003, 2290030, 1, 1, 0, 40000), -(8220003, 2290031, 1, 1, 0, 40000), -(8220003, 2290032, 1, 1, 0, 40000), -(8220003, 2290033, 1, 1, 0, 40000), -(8220003, 2290060, 1, 1, 0, 40000), -(8220003, 2290061, 1, 1, 0, 40000), -(8220003, 2290076, 1, 1, 0, 40000), -(8220003, 2290077, 1, 1, 0, 40000), -(8220003, 2290104, 1, 1, 0, 40000), -(8220003, 2290105, 1, 1, 0, 40000), -(8220003, 2290117, 1, 1, 0, 40000), -(8220003, 2290118, 1, 1, 0, 40000), -(8220004, 2290018, 1, 1, 0, 40000), -(8220004, 2290019, 1, 1, 0, 40000), -(8220004, 2290024, 1, 1, 0, 40000), -(8220004, 2290025, 1, 1, 0, 40000), -(8220004, 2290058, 1, 1, 0, 40000), -(8220004, 2290059, 1, 1, 0, 40000), -(8220004, 2290076, 1, 1, 0, 40000), -(8220004, 2290077, 1, 1, 0, 40000), -(8220004, 2290106, 1, 1, 0, 40000), -(8220004, 2290127, 1, 1, 0, 120000), -(8220004, 2290134, 1, 1, 0, 120000), -(8220005, 2290002, 1, 1, 0, 60000), -(8220005, 2290003, 1, 1, 0, 60000), -(8220005, 2290036, 1, 1, 0, 60000), -(8220005, 2290037, 1, 1, 0, 60000), -(8220005, 2290055, 1, 1, 0, 60000), -(8220005, 2290080, 1, 1, 0, 60000), -(8220005, 2290099, 1, 1, 0, 60000), -(8220005, 2290131, 1, 1, 0, 180000), -(8220005, 2290136, 1, 1, 0, 180000), -(8220006, 2290012, 1, 1, 0, 80000), -(8220006, 2290013, 1, 1, 0, 80000), -(8220006, 2290042, 1, 1, 0, 80000), -(8220006, 2290043, 1, 1, 0, 80000), -(8220006, 2290060, 1, 1, 0, 80000), -(8220006, 2290061, 1, 1, 0, 80000), -(8220006, 2290090, 1, 1, 0, 80000), -(8220006, 2290119, 1, 1, 0, 80000), -(8220006, 2290120, 1, 1, 0, 80000), -(8220006, 2290135, 1, 1, 0, 240000), -(8220006, 2290138, 1, 1, 0, 240000), -(8220007, 2290035, 1, 1, 0, 40000), -(8220007, 2290091, 1, 1, 0, 40000), -(8220007, 2290108, 1, 1, 0, 40000), -(8220009, 2290031, 1, 1, 0, 40000), -(8220009, 2290129, 1, 1, 0, 120000), -(8220015, 2280004, 1, 1, 0, 40000), -(8220015, 2280005, 1, 1, 0, 40000), -(8220015, 2280006, 1, 1, 0, 40000), -(8500002, 2280007, 1, 1, 0, 60000), -(8500002, 2280008, 1, 1, 0, 60000), -(8500002, 2280009, 1, 1, 0, 60000), -(8500002, 2280010, 1, 1, 0, 60000), -(8500002, 2290006, 1, 1, 0, 60000), -(8500002, 2290010, 1, 1, 0, 60000), -(8500002, 2290011, 1, 1, 0, 60000), -(8500002, 2290013, 1, 1, 0, 60000), -(8500002, 2290028, 1, 1, 0, 60000), -(8500002, 2290037, 1, 1, 0, 60000), -(8500002, 2290043, 1, 1, 0, 60000), -(8500002, 2290051, 1, 1, 0, 60000), -(8500002, 2290056, 1, 1, 0, 60000), -(8500002, 2290061, 1, 1, 0, 60000), -(8500002, 2290066, 1, 1, 0, 60000), -(8500002, 2290071, 1, 1, 0, 60000), -(8500002, 2290078, 1, 1, 0, 60000), -(8500002, 2290089, 1, 1, 0, 60000), -(8500002, 2290091, 1, 1, 0, 60000), -(8500002, 2290104, 1, 1, 0, 60000), -(8500002, 2290107, 1, 1, 0, 60000), -(8500002, 2290121, 1, 1, 0, 60000), -(8500002, 2290123, 1, 1, 0, 60000), -(8500002, 2290126, 1, 1, 0, 180000), -(8500002, 2290129, 1, 1, 0, 180000), -(8510000, 2280007, 1, 1, 0, 40000), -(8510000, 2280008, 1, 1, 0, 40000), -(8510000, 2280009, 1, 1, 0, 40000), -(8510000, 2280010, 1, 1, 0, 40000), -(8510000, 2290000, 1, 1, 0, 40000), -(8510000, 2290001, 1, 1, 0, 40000), -(8510000, 2290004, 1, 1, 0, 40000), -(8510000, 2290005, 1, 1, 0, 40000), -(8510000, 2290024, 1, 1, 0, 40000), -(8510000, 2290025, 1, 1, 0, 40000), -(8510000, 2290026, 1, 1, 0, 40000), -(8510000, 2290027, 1, 1, 0, 40000), -(8510000, 2290052, 1, 1, 0, 40000), -(8510000, 2290053, 1, 1, 0, 40000), -(8510000, 2290054, 1, 1, 0, 40000), -(8510000, 2290055, 1, 1, 0, 40000), -(8510000, 2290076, 1, 1, 0, 40000), -(8510000, 2290077, 1, 1, 0, 40000), -(8510000, 2290082, 1, 1, 0, 40000), -(8510000, 2290083, 1, 1, 0, 40000), -(8510000, 2290097, 1, 1, 0, 40000), -(8510000, 2290099, 1, 1, 0, 40000), -(8510000, 2290106, 1, 1, 0, 40000), -(8510000, 2290108, 1, 1, 0, 40000), -(8510000, 2290112, 1, 1, 0, 40000), -(8510000, 2290114, 1, 1, 0, 40000), -(8510000, 2290122, 1, 1, 0, 40000), -(8510000, 2290124, 1, 1, 0, 40000), -(8510000, 2290132, 1, 1, 0, 120000), -(8520000, 2280007, 1, 1, 0, 40000), -(8520000, 2280008, 1, 1, 0, 40000), -(8520000, 2280009, 1, 1, 0, 40000), -(8520000, 2280010, 1, 1, 0, 40000), -(8520000, 2290000, 1, 1, 0, 40000), -(8520000, 2290001, 1, 1, 0, 40000), -(8520000, 2290004, 1, 1, 0, 40000), -(8520000, 2290005, 1, 1, 0, 40000), -(8520000, 2290024, 1, 1, 0, 40000), -(8520000, 2290025, 1, 1, 0, 40000), -(8520000, 2290026, 1, 1, 0, 40000), -(8520000, 2290027, 1, 1, 0, 40000), -(8520000, 2290052, 1, 1, 0, 40000), -(8520000, 2290053, 1, 1, 0, 40000), -(8520000, 2290054, 1, 1, 0, 40000), -(8520000, 2290055, 1, 1, 0, 40000), -(8520000, 2290076, 1, 1, 0, 40000), -(8520000, 2290077, 1, 1, 0, 40000), -(8520000, 2290082, 1, 1, 0, 40000), -(8520000, 2290083, 1, 1, 0, 40000), -(8520000, 2290097, 1, 1, 0, 40000), -(8520000, 2290099, 1, 1, 0, 40000), -(8520000, 2290106, 1, 1, 0, 40000), -(8520000, 2290108, 1, 1, 0, 40000), -(8520000, 2290112, 1, 1, 0, 40000), -(8520000, 2290114, 1, 1, 0, 40000), -(8520000, 2290122, 1, 1, 0, 40000), -(8520000, 2290124, 1, 1, 0, 40000), -(8520000, 2290132, 1, 1, 0, 120000), -(8800002, 2280007, 1, 1, 0, 80000), -(8800002, 2280008, 1, 1, 0, 80000), -(8800002, 2280009, 1, 1, 0, 80000), -(8800002, 2280010, 1, 1, 0, 80000), -(8800002, 2280013, 1, 1, 0, 240000), -(8800002, 2280014, 1, 1, 0, 240000), -(8800002, 2280015, 1, 1, 0, 240000), -(8800002, 2280016, 1, 1, 0, 240000), -(8800002, 2290006, 1, 1, 0, 80000), -(8800002, 2290007, 1, 1, 0, 80000), -(8800002, 2290016, 1, 1, 0, 80000), -(8800002, 2290020, 1, 1, 0, 80000), -(8800002, 2290022, 1, 1, 0, 80000), -(8800002, 2290024, 1, 1, 0, 80000), -(8800002, 2290028, 1, 1, 0, 80000), -(8800002, 2290029, 1, 1, 0, 80000), -(8800002, 2290040, 1, 1, 0, 80000), -(8800002, 2290046, 1, 1, 0, 80000), -(8800002, 2290048, 1, 1, 0, 80000), -(8800002, 2290056, 1, 1, 0, 80000), -(8800002, 2290057, 1, 1, 0, 80000), -(8800002, 2290058, 1, 1, 0, 80000), -(8800002, 2290064, 1, 1, 0, 80000), -(8800002, 2290067, 1, 1, 0, 80000), -(8800002, 2290074, 1, 1, 0, 80000), -(8800002, 2290079, 1, 1, 0, 80000), -(8800002, 2290084, 1, 1, 0, 80000), -(8800002, 2290094, 1, 1, 0, 80000), -(8800002, 2290110, 1, 1, 0, 80000), -(8800002, 2290115, 1, 1, 0, 80000), -(8810018, 2290017, 1, 1, 0, 100000), -(8810018, 2290021, 1, 1, 0, 100000), -(8810018, 2290023, 1, 1, 0, 100000), -(8810018, 2290041, 1, 1, 0, 100000), -(8810018, 2290047, 1, 1, 0, 100000), -(8810018, 2290049, 1, 1, 0, 100000), -(8810018, 2290065, 1, 1, 0, 100000), -(8810018, 2290075, 1, 1, 0, 100000), -(8810018, 2290085, 1, 1, 0, 100000), -(8810018, 2290095, 1, 1, 0, 100000), -(8810018, 2290096, 1, 1, 0, 100000), -(8810018, 2290111, 1, 1, 0, 100000), -(8810018, 2290116, 1, 1, 0, 100000), -(8810018, 2290125, 1, 1, 0, 100000), -(8810018, 2290133, 1, 1, 0, 300000), -(8810018, 2290137, 1, 1, 0, 300000), -(8810018, 2290139, 1, 1, 0, 300000), -(8820000, 2290010, 1, 1, 0, 120000), -(8820000, 2290022, 1, 1, 0, 120000), -(8820000, 2290040, 1, 1, 0, 120000), -(8820000, 2290046, 1, 1, 0, 120000), -(8820000, 2290048, 1, 1, 0, 120000), -(8820000, 2290052, 1, 1, 0, 120000), -(8820000, 2290084, 1, 1, 0, 120000), -(8820000, 2290090, 1, 1, 0, 120000), -(8820000, 2290106, 1, 1, 0, 120000), -(8820000, 2290119, 1, 1, 0, 120000), -(8820001, 2290010, 1, 1, 0, 120000), -(8820001, 2290022, 1, 1, 0, 120000), -(8820001, 2290040, 1, 1, 0, 120000), -(8820001, 2290046, 1, 1, 0, 120000), -(8820001, 2290048, 1, 1, 0, 120000), -(8820001, 2290052, 1, 1, 0, 120000), -(8820001, 2290084, 1, 1, 0, 120000), -(8820001, 2290090, 1, 1, 0, 120000), -(8820001, 2290106, 1, 1, 0, 120000), -(8820001, 2290119, 1, 1, 0, 120000), -(9300028, 2280015, 1, 1, 0, 120000), -(9300028, 2290026, 1, 1, 0, 40000), -(9300028, 2290064, 1, 1, 0, 40000), -(9300028, 2290075, 1, 1, 0, 40000), -(9300028, 2290093, 1, 1, 0, 40000), -(9300028, 2290111, 1, 1, 0, 40000), -(9300094, 2280004, 1, 1, 0, 40000), -(9300094, 2280005, 1, 1, 0, 40000), -(9300094, 2280006, 1, 1, 0, 40000), -(9300095, 2280004, 1, 1, 0, 2000), -(9300095, 2280005, 1, 1, 0, 2000), -(9300095, 2280006, 1, 1, 0, 2000), -(9303016, 2290006, 1, 1, 0, 2000), -(9303016, 2290030, 1, 1, 0, 2000), -(9303016, 2290032, 1, 1, 0, 2000), -(9303016, 2290060, 1, 1, 0, 2000), -(9303016, 2290076, 1, 1, 0, 2000), -(9303016, 2290104, 1, 1, 0, 2000), -(9303016, 2290117, 1, 1, 0, 2000), -(9400014, 2290053, 1, 1, 0, 40000), -(9400014, 2290087, 1, 1, 0, 40000), -(9400014, 2290112, 1, 1, 0, 40000), -(9400014, 2290122, 1, 1, 0, 40000), -(9400120, 2290045, 1, 1, 0, 40000), -(9400121, 2280014, 1, 1, 0, 180000), -(9400121, 2290081, 1, 1, 0, 60000), -(9400121, 2290087, 1, 1, 0, 60000), -(9400121, 2290101, 1, 1, 0, 60000), -(9400121, 2290103, 1, 1, 0, 60000), -(9400122, 2290007, 1, 1, 0, 40000), -(9400122, 2290062, 1, 1, 0, 40000), -(9400122, 2290116, 1, 1, 0, 40000), -(9400300, 2290045, 1, 1, 0, 120000), -(9400300, 2290055, 1, 1, 0, 120000), -(9400300, 2290063, 1, 1, 0, 120000), -(9400300, 2290079, 1, 1, 0, 120000), -(9400300, 2290081, 1, 1, 0, 120000), -(9400300, 2290096, 1, 1, 0, 120000), -(9400514, 2290023, 1, 1, 0, 40000), -(9400514, 2290057, 1, 1, 0, 40000), -(9400514, 2290088, 1, 1, 0, 40000), -(9400514, 2290095, 1, 1, 0, 40000), -(9400514, 2290115, 1, 1, 0, 40000), -(9400514, 2290139, 1, 1, 0, 120000), -(9400549, 2290001, 1, 1, 0, 40000), -(9400549, 2290020, 1, 1, 0, 40000), -(9400549, 2290045, 1, 1, 0, 40000), -(9400549, 2290057, 1, 1, 0, 40000), -(9400549, 2290086, 1, 1, 0, 40000), -(9400575, 2290009, 1, 1, 0, 40000), -(9400575, 2290051, 1, 1, 0, 40000), -(9400575, 2290081, 1, 1, 0, 40000), -(9400575, 2290087, 1, 1, 0, 40000), -(9400575, 2290107, 1, 1, 0, 40000), -(9400575, 2290123, 1, 1, 0, 40000), -(9400580, 2290004, 1, 1, 0, 2000), -(9400580, 2290024, 1, 1, 0, 2000), -(9400580, 2290083, 1, 1, 0, 2000), -(9400580, 2290087, 1, 1, 0, 2000), -(9400580, 2290103, 1, 1, 0, 2000), -(9400580, 2290121, 1, 1, 0, 2000), -(9400582, 2290005, 1, 1, 0, 2000), -(9400582, 2290010, 1, 1, 0, 2000), -(9400582, 2290029, 1, 1, 0, 2000), -(9400582, 2290047, 1, 1, 0, 2000), -(9400582, 2290049, 1, 1, 0, 2000), -(9400582, 2290074, 1, 1, 0, 2000), -(9400582, 2290079, 1, 1, 0, 2000), -(9400582, 2290081, 1, 1, 0, 2000), -(9400582, 2290135, 1, 1, 0, 6000), -(9400590, 2290088, 1, 1, 0, 60000), -(9400590, 2290125, 1, 1, 0, 60000), -(9400590, 2290135, 1, 1, 0, 180000), -(9400591, 2290039, 1, 1, 0, 60000), -(9400591, 2290074, 1, 1, 0, 60000), -(9400591, 2290113, 1, 1, 0, 60000), -(9400592, 2290047, 1, 1, 0, 60000), -(9400592, 2290123, 1, 1, 0, 60000), -(9400592, 2290131, 1, 1, 0, 180000), -(9400593, 2290069, 1, 1, 0, 60000), -(9400593, 2290093, 1, 1, 0, 60000), -(9400593, 2290138, 1, 1, 0, 180000), -(9420513, 2290039, 1, 1, 0, 40000), -(9420513, 2290100, 1, 1, 0, 40000), -(9420513, 2290108, 1, 1, 0, 40000), -(9420513, 2290118, 1, 1, 0, 40000), -(9420513, 2290138, 1, 1, 0, 120000), +(7090000, 2290087, 1, 1, 0, 10000), +(8090000, 2290045, 1, 1, 0, 10000), +(8140103, 2290044, 1, 1, 0, 500), +(8140511, 2290009, 1, 1, 0, 500), +(8140511, 2290050, 1, 1, 0, 500), +(8140511, 2290083, 1, 1, 0, 500), +(8140511, 2290134, 1, 1, 0, 1500), +(8140512, 2290013, 1, 1, 0, 500), +(8140512, 2290067, 1, 1, 0, 500), +(8140512, 2290082, 1, 1, 0, 500), +(8140512, 2290097, 1, 1, 0, 500), +(8140512, 2290116, 1, 1, 0, 500), +(8140512, 2290131, 1, 1, 0, 1500), +(8140600, 2290132, 1, 1, 0, 1500), +(8140700, 2290106, 1, 1, 0, 500), +(8140700, 2290126, 1, 1, 0, 1500), +(8140701, 2290122, 1, 1, 0, 500), +(8140702, 2290112, 1, 1, 0, 500), +(8140703, 2290088, 1, 1, 0, 500), +(8140703, 2290099, 1, 1, 0, 500), +(8141000, 2290082, 1, 1, 0, 500), +(8141000, 2290097, 1, 1, 0, 500), +(8141100, 2280005, 1, 1, 0, 500), +(8141300, 2290098, 1, 1, 0, 500), +(8142100, 2290032, 1, 1, 0, 500), +(8142100, 2290082, 1, 1, 0, 500), +(8142100, 2290114, 1, 1, 0, 500), +(8143000, 2280004, 1, 1, 0, 500), +(8150000, 2280013, 1, 1, 0, 30000), +(8150000, 2290070, 1, 1, 0, 10000), +(8150000, 2290091, 1, 1, 0, 10000), +(8150100, 2290042, 1, 1, 0, 500), +(8150100, 2290053, 1, 1, 0, 500), +(8150100, 2290073, 1, 1, 0, 500), +(8150100, 2290102, 1, 1, 0, 500), +(8150100, 2290118, 1, 1, 0, 500), +(8150101, 2290017, 1, 1, 0, 500), +(8150101, 2290021, 1, 1, 0, 500), +(8150101, 2290035, 1, 1, 0, 500), +(8150101, 2290042, 1, 1, 0, 500), +(8150101, 2290052, 1, 1, 0, 500), +(8150101, 2290102, 1, 1, 0, 500), +(8150200, 2290024, 1, 1, 0, 500), +(8150200, 2290100, 1, 1, 0, 500), +(8150200, 2290135, 1, 1, 0, 1500), +(8150201, 2290004, 1, 1, 0, 500), +(8150201, 2290006, 1, 1, 0, 500), +(8150201, 2290024, 1, 1, 0, 500), +(8150201, 2290036, 1, 1, 0, 500), +(8150201, 2290056, 1, 1, 0, 500), +(8150201, 2290072, 1, 1, 0, 500), +(8150201, 2290078, 1, 1, 0, 500), +(8150201, 2290117, 1, 1, 0, 500), +(8150300, 2290003, 1, 1, 0, 500), +(8150300, 2290033, 1, 1, 0, 500), +(8150300, 2290111, 1, 1, 0, 500), +(8150300, 2290120, 1, 1, 0, 500), +(8150300, 2290127, 1, 1, 0, 1500), +(8150301, 2290023, 1, 1, 0, 500), +(8150301, 2290029, 1, 1, 0, 500), +(8150301, 2290101, 1, 1, 0, 500), +(8150301, 2290107, 1, 1, 0, 500), +(8150302, 2290010, 1, 1, 0, 500), +(8150302, 2290019, 1, 1, 0, 500), +(8150302, 2290026, 1, 1, 0, 500), +(8150302, 2290076, 1, 1, 0, 500), +(8150302, 2290085, 1, 1, 0, 500), +(8150302, 2290096, 1, 1, 0, 500), +(8150302, 2290113, 1, 1, 0, 500), +(8150302, 2290119, 1, 1, 0, 500), +(8150302, 2290128, 1, 1, 0, 1500), +(8160000, 2290017, 1, 1, 0, 500), +(8160000, 2290045, 1, 1, 0, 500), +(8160000, 2290065, 1, 1, 0, 500), +(8160000, 2290067, 1, 1, 0, 500), +(8160000, 2290081, 1, 1, 0, 500), +(8170000, 2290012, 1, 1, 0, 500), +(8170000, 2290086, 1, 1, 0, 500), +(8170000, 2290087, 1, 1, 0, 500), +(8170000, 2290134, 1, 1, 0, 1500), +(8180000, 2290002, 1, 1, 0, 10000), +(8180000, 2290003, 1, 1, 0, 10000), +(8180000, 2290014, 1, 1, 0, 10000), +(8180000, 2290015, 1, 1, 0, 10000), +(8180000, 2290030, 1, 1, 0, 10000), +(8180000, 2290035, 1, 1, 0, 10000), +(8180000, 2290036, 1, 1, 0, 10000), +(8180000, 2290063, 1, 1, 0, 10000), +(8180000, 2290080, 1, 1, 0, 10000), +(8180000, 2290098, 1, 1, 0, 10000), +(8180000, 2290101, 1, 1, 0, 10000), +(8180000, 2290117, 1, 1, 0, 10000), +(8180000, 2290130, 1, 1, 0, 30000), +(8180001, 2290018, 1, 1, 0, 10000), +(8180001, 2290019, 1, 1, 0, 10000), +(8180001, 2290032, 1, 1, 0, 10000), +(8180001, 2290042, 1, 1, 0, 10000), +(8180001, 2290058, 1, 1, 0, 10000), +(8180001, 2290059, 1, 1, 0, 10000), +(8180001, 2290068, 1, 1, 0, 10000), +(8180001, 2290069, 1, 1, 0, 10000), +(8180001, 2290072, 1, 1, 0, 10000), +(8180001, 2290092, 1, 1, 0, 10000), +(8180001, 2290099, 1, 1, 0, 10000), +(8180001, 2290100, 1, 1, 0, 10000), +(8180001, 2290102, 1, 1, 0, 10000), +(8180001, 2290119, 1, 1, 0, 10000), +(8180001, 2290128, 1, 1, 0, 30000), +(8190000, 2280016, 1, 1, 0, 1500), +(8190000, 2290030, 1, 1, 0, 500), +(8190000, 2290044, 1, 1, 0, 500), +(8190000, 2290054, 1, 1, 0, 500), +(8190000, 2290066, 1, 1, 0, 500), +(8190000, 2290075, 1, 1, 0, 500), +(8190000, 2290092, 1, 1, 0, 500), +(8190000, 2290103, 1, 1, 0, 500), +(8190002, 2290000, 1, 1, 0, 500), +(8190002, 2290008, 1, 1, 0, 500), +(8190002, 2290018, 1, 1, 0, 500), +(8190002, 2290038, 1, 1, 0, 500), +(8190002, 2290060, 1, 1, 0, 500), +(8190002, 2290080, 1, 1, 0, 500), +(8190002, 2290124, 1, 1, 0, 500), +(8190003, 2280013, 1, 1, 0, 1500), +(8190003, 2290007, 1, 1, 0, 500), +(8190003, 2290012, 1, 1, 0, 500), +(8190003, 2290014, 1, 1, 0, 500), +(8190003, 2290033, 1, 1, 0, 500), +(8190003, 2290045, 1, 1, 0, 500), +(8190003, 2290050, 1, 1, 0, 500), +(8190003, 2290055, 1, 1, 0, 500), +(8190003, 2290062, 1, 1, 0, 500), +(8190003, 2290063, 1, 1, 0, 500), +(8190003, 2290070, 1, 1, 0, 500), +(8190003, 2290086, 1, 1, 0, 500), +(8190003, 2290108, 1, 1, 0, 500), +(8190003, 2290133, 1, 1, 0, 1500), +(8190004, 2290002, 1, 1, 0, 500), +(8190004, 2290009, 1, 1, 0, 500), +(8190004, 2290021, 1, 1, 0, 500), +(8190004, 2290034, 1, 1, 0, 500), +(8190004, 2290041, 1, 1, 0, 500), +(8190004, 2290052, 1, 1, 0, 500), +(8190004, 2290053, 1, 1, 0, 500), +(8190004, 2290058, 1, 1, 0, 500), +(8190004, 2290068, 1, 1, 0, 500), +(8190004, 2290071, 1, 1, 0, 500), +(8190004, 2290073, 1, 1, 0, 500), +(8190004, 2290090, 1, 1, 0, 500), +(8190004, 2290112, 1, 1, 0, 500), +(8190004, 2290121, 1, 1, 0, 500), +(8190004, 2290130, 1, 1, 0, 1500), +(8190005, 2290000, 1, 1, 0, 500), +(8190005, 2290008, 1, 1, 0, 500), +(8190005, 2290018, 1, 1, 0, 500), +(8190005, 2290038, 1, 1, 0, 500), +(8190005, 2290060, 1, 1, 0, 500), +(8190005, 2290080, 1, 1, 0, 500), +(8190005, 2290124, 1, 1, 0, 500), +(8200000, 2290005, 1, 1, 0, 500), +(8200000, 2290011, 1, 1, 0, 500), +(8200000, 2290114, 1, 1, 0, 500), +(8200001, 2280015, 1, 1, 0, 1500), +(8200001, 2290050, 1, 1, 0, 500), +(8200001, 2290059, 1, 1, 0, 500), +(8200001, 2290065, 1, 1, 0, 500), +(8200001, 2290129, 1, 1, 0, 1500), +(8200002, 2290062, 1, 1, 0, 500), +(8200002, 2290066, 1, 1, 0, 500), +(8200002, 2290070, 1, 1, 0, 500), +(8200002, 2290131, 1, 1, 0, 1500), +(8200002, 2290139, 1, 1, 0, 1500), +(8200003, 2290012, 1, 1, 0, 500), +(8200003, 2290056, 1, 1, 0, 500), +(8200003, 2290071, 1, 1, 0, 500), +(8200003, 2290101, 1, 1, 0, 500), +(8200003, 2290136, 1, 1, 0, 1500), +(8200004, 2280016, 1, 1, 0, 1500), +(8200004, 2290069, 1, 1, 0, 500), +(8200004, 2290072, 1, 1, 0, 500), +(8200004, 2290073, 1, 1, 0, 500), +(8200004, 2290127, 1, 1, 0, 1500), +(8200004, 2290134, 1, 1, 0, 1500), +(8200005, 2280014, 1, 1, 0, 1500), +(8200005, 2290078, 1, 1, 0, 500), +(8200005, 2290079, 1, 1, 0, 500), +(8200005, 2290095, 1, 1, 0, 500), +(8200006, 2290003, 1, 1, 0, 500), +(8200006, 2290064, 1, 1, 0, 500), +(8200006, 2290076, 1, 1, 0, 500), +(8200006, 2290077, 1, 1, 0, 500), +(8200006, 2290129, 1, 1, 0, 1500), +(8200006, 2290138, 1, 1, 0, 1500), +(8200007, 2290006, 1, 1, 0, 500), +(8200007, 2290007, 1, 1, 0, 500), +(8200007, 2290011, 1, 1, 0, 500), +(8200007, 2290016, 1, 1, 0, 500), +(8200007, 2290125, 1, 1, 0, 500), +(8200007, 2290136, 1, 1, 0, 1500), +(8200008, 2290006, 1, 1, 0, 500), +(8200008, 2290051, 1, 1, 0, 500), +(8200008, 2290121, 1, 1, 0, 500), +(8200008, 2290122, 1, 1, 0, 500), +(8200008, 2290133, 1, 1, 0, 1500), +(8200009, 2290013, 1, 1, 0, 500), +(8200009, 2290016, 1, 1, 0, 500), +(8200009, 2290031, 1, 1, 0, 500), +(8200009, 2290039, 1, 1, 0, 500), +(8200010, 2290026, 1, 1, 0, 500), +(8200010, 2290059, 1, 1, 0, 500), +(8200010, 2290088, 1, 1, 0, 500), +(8200010, 2290089, 1, 1, 0, 500), +(8200010, 2290127, 1, 1, 0, 1500), +(8200011, 2290001, 1, 1, 0, 750), +(8200011, 2290040, 1, 1, 0, 750), +(8200011, 2290046, 1, 1, 0, 750), +(8200011, 2290048, 1, 1, 0, 750), +(8200011, 2290049, 1, 1, 0, 750), +(8200011, 2290114, 1, 1, 0, 750), +(8200011, 2290137, 1, 1, 0, 2250), +(8200012, 2290041, 1, 1, 0, 750), +(8200012, 2290092, 1, 1, 0, 750), +(8200012, 2290093, 1, 1, 0, 750), +(8200012, 2290115, 1, 1, 0, 750), +(8200012, 2290137, 1, 1, 0, 2250), +(8200012, 2290139, 1, 1, 0, 2250), +(8220002, 2290020, 1, 1, 0, 10000), +(8220002, 2290081, 1, 1, 0, 10000), +(8220002, 2290085, 1, 1, 0, 10000), +(8220002, 2290133, 1, 1, 0, 30000), +(8220003, 2290006, 1, 1, 0, 10000), +(8220003, 2290030, 1, 1, 0, 10000), +(8220003, 2290031, 1, 1, 0, 10000), +(8220003, 2290032, 1, 1, 0, 10000), +(8220003, 2290033, 1, 1, 0, 10000), +(8220003, 2290060, 1, 1, 0, 10000), +(8220003, 2290061, 1, 1, 0, 10000), +(8220003, 2290076, 1, 1, 0, 10000), +(8220003, 2290077, 1, 1, 0, 10000), +(8220003, 2290104, 1, 1, 0, 10000), +(8220003, 2290105, 1, 1, 0, 10000), +(8220003, 2290117, 1, 1, 0, 10000), +(8220003, 2290118, 1, 1, 0, 10000), +(8220004, 2290018, 1, 1, 0, 10000), +(8220004, 2290019, 1, 1, 0, 10000), +(8220004, 2290024, 1, 1, 0, 10000), +(8220004, 2290025, 1, 1, 0, 10000), +(8220004, 2290058, 1, 1, 0, 10000), +(8220004, 2290059, 1, 1, 0, 10000), +(8220004, 2290076, 1, 1, 0, 10000), +(8220004, 2290077, 1, 1, 0, 10000), +(8220004, 2290106, 1, 1, 0, 10000), +(8220004, 2290127, 1, 1, 0, 30000), +(8220004, 2290134, 1, 1, 0, 30000), +(8220005, 2290002, 1, 1, 0, 15000), +(8220005, 2290003, 1, 1, 0, 15000), +(8220005, 2290036, 1, 1, 0, 15000), +(8220005, 2290037, 1, 1, 0, 15000), +(8220005, 2290055, 1, 1, 0, 15000), +(8220005, 2290080, 1, 1, 0, 15000), +(8220005, 2290099, 1, 1, 0, 15000), +(8220005, 2290131, 1, 1, 0, 45000), +(8220005, 2290136, 1, 1, 0, 45000), +(8220006, 2290012, 1, 1, 0, 20000), +(8220006, 2290013, 1, 1, 0, 20000), +(8220006, 2290042, 1, 1, 0, 20000), +(8220006, 2290043, 1, 1, 0, 20000), +(8220006, 2290060, 1, 1, 0, 20000), +(8220006, 2290061, 1, 1, 0, 20000), +(8220006, 2290090, 1, 1, 0, 20000), +(8220006, 2290119, 1, 1, 0, 20000), +(8220006, 2290120, 1, 1, 0, 20000), +(8220006, 2290135, 1, 1, 0, 60000), +(8220006, 2290138, 1, 1, 0, 60000), +(8220007, 2290035, 1, 1, 0, 10000), +(8220007, 2290091, 1, 1, 0, 10000), +(8220007, 2290108, 1, 1, 0, 10000), +(8220009, 2290031, 1, 1, 0, 10000), +(8220009, 2290129, 1, 1, 0, 30000), +(8220015, 2280004, 1, 1, 0, 10000), +(8220015, 2280005, 1, 1, 0, 10000), +(8220015, 2280006, 1, 1, 0, 10000), +(8500002, 2280007, 1, 1, 0, 15000), +(8500002, 2280008, 1, 1, 0, 15000), +(8500002, 2280009, 1, 1, 0, 15000), +(8500002, 2280010, 1, 1, 0, 15000), +(8500002, 2290006, 1, 1, 0, 15000), +(8500002, 2290010, 1, 1, 0, 15000), +(8500002, 2290011, 1, 1, 0, 15000), +(8500002, 2290013, 1, 1, 0, 15000), +(8500002, 2290028, 1, 1, 0, 15000), +(8500002, 2290037, 1, 1, 0, 15000), +(8500002, 2290043, 1, 1, 0, 15000), +(8500002, 2290051, 1, 1, 0, 15000), +(8500002, 2290056, 1, 1, 0, 15000), +(8500002, 2290061, 1, 1, 0, 15000), +(8500002, 2290066, 1, 1, 0, 15000), +(8500002, 2290071, 1, 1, 0, 15000), +(8500002, 2290078, 1, 1, 0, 15000), +(8500002, 2290089, 1, 1, 0, 15000), +(8500002, 2290091, 1, 1, 0, 15000), +(8500002, 2290104, 1, 1, 0, 15000), +(8500002, 2290107, 1, 1, 0, 15000), +(8500002, 2290121, 1, 1, 0, 15000), +(8500002, 2290123, 1, 1, 0, 15000), +(8500002, 2290126, 1, 1, 0, 45000), +(8500002, 2290129, 1, 1, 0, 45000), +(8510000, 2280007, 1, 1, 0, 10000), +(8510000, 2280008, 1, 1, 0, 10000), +(8510000, 2280009, 1, 1, 0, 10000), +(8510000, 2280010, 1, 1, 0, 10000), +(8510000, 2290000, 1, 1, 0, 10000), +(8510000, 2290001, 1, 1, 0, 10000), +(8510000, 2290004, 1, 1, 0, 10000), +(8510000, 2290005, 1, 1, 0, 10000), +(8510000, 2290024, 1, 1, 0, 10000), +(8510000, 2290025, 1, 1, 0, 10000), +(8510000, 2290026, 1, 1, 0, 10000), +(8510000, 2290027, 1, 1, 0, 10000), +(8510000, 2290052, 1, 1, 0, 10000), +(8510000, 2290053, 1, 1, 0, 10000), +(8510000, 2290054, 1, 1, 0, 10000), +(8510000, 2290055, 1, 1, 0, 10000), +(8510000, 2290076, 1, 1, 0, 10000), +(8510000, 2290077, 1, 1, 0, 10000), +(8510000, 2290082, 1, 1, 0, 10000), +(8510000, 2290083, 1, 1, 0, 10000), +(8510000, 2290097, 1, 1, 0, 10000), +(8510000, 2290099, 1, 1, 0, 10000), +(8510000, 2290106, 1, 1, 0, 10000), +(8510000, 2290108, 1, 1, 0, 10000), +(8510000, 2290112, 1, 1, 0, 10000), +(8510000, 2290114, 1, 1, 0, 10000), +(8510000, 2290122, 1, 1, 0, 10000), +(8510000, 2290124, 1, 1, 0, 10000), +(8510000, 2290132, 1, 1, 0, 30000), +(8520000, 2280007, 1, 1, 0, 10000), +(8520000, 2280008, 1, 1, 0, 10000), +(8520000, 2280009, 1, 1, 0, 10000), +(8520000, 2280010, 1, 1, 0, 10000), +(8520000, 2290000, 1, 1, 0, 10000), +(8520000, 2290001, 1, 1, 0, 10000), +(8520000, 2290004, 1, 1, 0, 10000), +(8520000, 2290005, 1, 1, 0, 10000), +(8520000, 2290024, 1, 1, 0, 10000), +(8520000, 2290025, 1, 1, 0, 10000), +(8520000, 2290026, 1, 1, 0, 10000), +(8520000, 2290027, 1, 1, 0, 10000), +(8520000, 2290052, 1, 1, 0, 10000), +(8520000, 2290053, 1, 1, 0, 10000), +(8520000, 2290054, 1, 1, 0, 10000), +(8520000, 2290055, 1, 1, 0, 10000), +(8520000, 2290076, 1, 1, 0, 10000), +(8520000, 2290077, 1, 1, 0, 10000), +(8520000, 2290082, 1, 1, 0, 10000), +(8520000, 2290083, 1, 1, 0, 10000), +(8520000, 2290097, 1, 1, 0, 10000), +(8520000, 2290099, 1, 1, 0, 10000), +(8520000, 2290106, 1, 1, 0, 10000), +(8520000, 2290108, 1, 1, 0, 10000), +(8520000, 2290112, 1, 1, 0, 10000), +(8520000, 2290114, 1, 1, 0, 10000), +(8520000, 2290122, 1, 1, 0, 10000), +(8520000, 2290124, 1, 1, 0, 10000), +(8520000, 2290132, 1, 1, 0, 30000), +(8800002, 2280007, 1, 1, 0, 20000), +(8800002, 2280008, 1, 1, 0, 20000), +(8800002, 2280009, 1, 1, 0, 20000), +(8800002, 2280010, 1, 1, 0, 20000), +(8800002, 2280013, 1, 1, 0, 60000), +(8800002, 2280014, 1, 1, 0, 60000), +(8800002, 2280015, 1, 1, 0, 60000), +(8800002, 2280016, 1, 1, 0, 60000), +(8800002, 2290006, 1, 1, 0, 20000), +(8800002, 2290007, 1, 1, 0, 20000), +(8800002, 2290016, 1, 1, 0, 20000), +(8800002, 2290020, 1, 1, 0, 20000), +(8800002, 2290022, 1, 1, 0, 20000), +(8800002, 2290024, 1, 1, 0, 20000), +(8800002, 2290028, 1, 1, 0, 20000), +(8800002, 2290029, 1, 1, 0, 20000), +(8800002, 2290040, 1, 1, 0, 20000), +(8800002, 2290046, 1, 1, 0, 20000), +(8800002, 2290048, 1, 1, 0, 20000), +(8800002, 2290056, 1, 1, 0, 20000), +(8800002, 2290057, 1, 1, 0, 20000), +(8800002, 2290058, 1, 1, 0, 20000), +(8800002, 2290064, 1, 1, 0, 20000), +(8800002, 2290067, 1, 1, 0, 20000), +(8800002, 2290074, 1, 1, 0, 20000), +(8800002, 2290079, 1, 1, 0, 20000), +(8800002, 2290084, 1, 1, 0, 20000), +(8800002, 2290094, 1, 1, 0, 20000), +(8800002, 2290110, 1, 1, 0, 20000), +(8800002, 2290115, 1, 1, 0, 20000), +(8810018, 2290017, 1, 1, 0, 25000), +(8810018, 2290021, 1, 1, 0, 25000), +(8810018, 2290023, 1, 1, 0, 25000), +(8810018, 2290041, 1, 1, 0, 25000), +(8810018, 2290047, 1, 1, 0, 25000), +(8810018, 2290049, 1, 1, 0, 25000), +(8810018, 2290065, 1, 1, 0, 25000), +(8810018, 2290075, 1, 1, 0, 25000), +(8810018, 2290085, 1, 1, 0, 25000), +(8810018, 2290095, 1, 1, 0, 25000), +(8810018, 2290096, 1, 1, 0, 25000), +(8810018, 2290111, 1, 1, 0, 25000), +(8810018, 2290116, 1, 1, 0, 25000), +(8810018, 2290125, 1, 1, 0, 25000), +(8810018, 2290133, 1, 1, 0, 75000), +(8810018, 2290137, 1, 1, 0, 75000), +(8810018, 2290139, 1, 1, 0, 75000), +(8820000, 2290010, 1, 1, 0, 30000), +(8820000, 2290022, 1, 1, 0, 30000), +(8820000, 2290040, 1, 1, 0, 30000), +(8820000, 2290046, 1, 1, 0, 30000), +(8820000, 2290048, 1, 1, 0, 30000), +(8820000, 2290052, 1, 1, 0, 30000), +(8820000, 2290084, 1, 1, 0, 30000), +(8820000, 2290090, 1, 1, 0, 30000), +(8820000, 2290106, 1, 1, 0, 30000), +(8820000, 2290119, 1, 1, 0, 30000), +(8820001, 2290010, 1, 1, 0, 30000), +(8820001, 2290022, 1, 1, 0, 30000), +(8820001, 2290040, 1, 1, 0, 30000), +(8820001, 2290046, 1, 1, 0, 30000), +(8820001, 2290048, 1, 1, 0, 30000), +(8820001, 2290052, 1, 1, 0, 30000), +(8820001, 2290084, 1, 1, 0, 30000), +(8820001, 2290090, 1, 1, 0, 30000), +(8820001, 2290106, 1, 1, 0, 30000), +(8820001, 2290119, 1, 1, 0, 30000), +(9300028, 2280015, 1, 1, 0, 30000), +(9300028, 2290026, 1, 1, 0, 10000), +(9300028, 2290064, 1, 1, 0, 10000), +(9300028, 2290075, 1, 1, 0, 10000), +(9300028, 2290093, 1, 1, 0, 10000), +(9300028, 2290111, 1, 1, 0, 10000), +(9300094, 2280004, 1, 1, 0, 10000), +(9300094, 2280005, 1, 1, 0, 10000), +(9300094, 2280006, 1, 1, 0, 10000), +(9300095, 2280004, 1, 1, 0, 500), +(9300095, 2280005, 1, 1, 0, 500), +(9300095, 2280006, 1, 1, 0, 500), +(9303016, 2290006, 1, 1, 0, 500), +(9303016, 2290030, 1, 1, 0, 500), +(9303016, 2290032, 1, 1, 0, 500), +(9303016, 2290060, 1, 1, 0, 500), +(9303016, 2290076, 1, 1, 0, 500), +(9303016, 2290104, 1, 1, 0, 500), +(9303016, 2290117, 1, 1, 0, 500), +(9400014, 2290053, 1, 1, 0, 10000), +(9400014, 2290087, 1, 1, 0, 10000), +(9400014, 2290112, 1, 1, 0, 10000), +(9400014, 2290122, 1, 1, 0, 10000), +(9400120, 2290045, 1, 1, 0, 10000), +(9400121, 2280014, 1, 1, 0, 45000), +(9400121, 2290081, 1, 1, 0, 15000), +(9400121, 2290087, 1, 1, 0, 15000), +(9400121, 2290101, 1, 1, 0, 15000), +(9400121, 2290103, 1, 1, 0, 15000), +(9400122, 2290007, 1, 1, 0, 10000), +(9400122, 2290062, 1, 1, 0, 10000), +(9400122, 2290116, 1, 1, 0, 10000), +(9400300, 2290045, 1, 1, 0, 30000), +(9400300, 2290055, 1, 1, 0, 30000), +(9400300, 2290063, 1, 1, 0, 30000), +(9400300, 2290079, 1, 1, 0, 30000), +(9400300, 2290081, 1, 1, 0, 30000), +(9400300, 2290096, 1, 1, 0, 30000), +(9400514, 2290023, 1, 1, 0, 10000), +(9400514, 2290057, 1, 1, 0, 10000), +(9400514, 2290088, 1, 1, 0, 10000), +(9400514, 2290095, 1, 1, 0, 10000), +(9400514, 2290115, 1, 1, 0, 10000), +(9400514, 2290139, 1, 1, 0, 30000), +(9400549, 2290001, 1, 1, 0, 10000), +(9400549, 2290020, 1, 1, 0, 10000), +(9400549, 2290045, 1, 1, 0, 10000), +(9400549, 2290057, 1, 1, 0, 10000), +(9400549, 2290086, 1, 1, 0, 10000), +(9400575, 2290009, 1, 1, 0, 10000), +(9400575, 2290051, 1, 1, 0, 10000), +(9400575, 2290081, 1, 1, 0, 10000), +(9400575, 2290087, 1, 1, 0, 10000), +(9400575, 2290107, 1, 1, 0, 10000), +(9400575, 2290123, 1, 1, 0, 10000), +(9400580, 2290004, 1, 1, 0, 500), +(9400580, 2290024, 1, 1, 0, 500), +(9400580, 2290083, 1, 1, 0, 500), +(9400580, 2290087, 1, 1, 0, 500), +(9400580, 2290103, 1, 1, 0, 500), +(9400580, 2290121, 1, 1, 0, 500), +(9400582, 2290005, 1, 1, 0, 500), +(9400582, 2290010, 1, 1, 0, 500), +(9400582, 2290029, 1, 1, 0, 500), +(9400582, 2290047, 1, 1, 0, 500), +(9400582, 2290049, 1, 1, 0, 500), +(9400582, 2290074, 1, 1, 0, 500), +(9400582, 2290079, 1, 1, 0, 500), +(9400582, 2290081, 1, 1, 0, 500), +(9400582, 2290135, 1, 1, 0, 1500), +(9400590, 2290088, 1, 1, 0, 15000), +(9400590, 2290125, 1, 1, 0, 15000), +(9400590, 2290135, 1, 1, 0, 45000), +(9400591, 2290039, 1, 1, 0, 15000), +(9400591, 2290074, 1, 1, 0, 15000), +(9400591, 2290113, 1, 1, 0, 15000), +(9400592, 2290047, 1, 1, 0, 15000), +(9400592, 2290123, 1, 1, 0, 15000), +(9400592, 2290131, 1, 1, 0, 45000), +(9400593, 2290069, 1, 1, 0, 15000), +(9400593, 2290093, 1, 1, 0, 15000), +(9400593, 2290138, 1, 1, 0, 45000), +(9420513, 2290039, 1, 1, 0, 10000), +(9420513, 2290100, 1, 1, 0, 10000), +(9420513, 2290108, 1, 1, 0, 10000), +(9420513, 2290118, 1, 1, 0, 10000), +(9420513, 2290138, 1, 1, 0, 30000), (9420514, 2290099, 1, 1, 0, 1287), (9420517, 2290000, 1, 1, 0, 1287), (9420517, 2290008, 1, 1, 0, 1287), @@ -24470,75 +24471,75 @@ SET minimum_quantity = CASE (9420522, 2290089, 1, 1, 0, 1287), (9420522, 2290091, 1, 1, 0, 1287), (9420522, 2290107, 1, 1, 0, 1287), -(9420540, 2280006, 1, 1, 0, 2000), -(9420540, 2290119, 1, 1, 0, 2000), -(9420540, 2290120, 1, 1, 0, 2000), -(9420544, 2280007, 1, 1, 0, 80000), -(9420544, 2280008, 1, 1, 0, 80000), -(9420544, 2280009, 1, 1, 0, 80000), -(9420544, 2280010, 1, 1, 0, 80000), -(9420544, 2290002, 1, 1, 0, 80000), -(9420544, 2290015, 1, 1, 0, 80000), -(9420544, 2290022, 1, 1, 0, 80000), -(9420544, 2290027, 1, 1, 0, 80000), -(9420544, 2290034, 1, 1, 0, 80000), -(9420544, 2290052, 1, 1, 0, 80000), -(9420544, 2290054, 1, 1, 0, 80000), -(9420544, 2290089, 1, 1, 0, 80000), -(9420544, 2290094, 1, 1, 0, 80000), -(9420544, 2290098, 1, 1, 0, 80000), -(9420544, 2290105, 1, 1, 0, 80000), -(9420544, 2290110, 1, 1, 0, 80000), -(9420544, 2290119, 1, 1, 0, 80000), -(9420549, 2280007, 1, 1, 0, 80000), -(9420549, 2280008, 1, 1, 0, 80000), -(9420549, 2280009, 1, 1, 0, 80000), -(9420549, 2280010, 1, 1, 0, 80000), -(9420549, 2290002, 1, 1, 0, 80000), -(9420549, 2290015, 1, 1, 0, 80000), -(9420549, 2290022, 1, 1, 0, 80000), -(9420549, 2290027, 1, 1, 0, 80000), -(9420549, 2290034, 1, 1, 0, 80000), -(9420549, 2290052, 1, 1, 0, 80000), -(9420549, 2290054, 1, 1, 0, 80000), -(9420549, 2290089, 1, 1, 0, 80000), -(9420549, 2290094, 1, 1, 0, 80000), -(9420549, 2290098, 1, 1, 0, 80000), -(9420549, 2290105, 1, 1, 0, 80000), -(9420549, 2290110, 1, 1, 0, 80000), -(9420549, 2290119, 1, 1, 0, 80000), -(9500166, 2290044, 1, 1, 0, 2000), -(9500173, 2290018, 1, 1, 0, 40000), -(9500173, 2290019, 1, 1, 0, 40000), -(9500173, 2290032, 1, 1, 0, 40000), -(9500173, 2290042, 1, 1, 0, 40000), -(9500173, 2290058, 1, 1, 0, 40000), -(9500173, 2290068, 1, 1, 0, 40000), -(9500173, 2290072, 1, 1, 0, 40000), -(9500173, 2290092, 1, 1, 0, 40000), -(9500173, 2290099, 1, 1, 0, 40000), -(9500173, 2290102, 1, 1, 0, 40000), -(9500173, 2290119, 1, 1, 0, 40000), -(9500173, 2290128, 1, 1, 0, 120000), -(9500174, 2290002, 1, 1, 0, 40000), -(9500174, 2290014, 1, 1, 0, 40000), -(9500174, 2290030, 1, 1, 0, 40000), -(9500174, 2290080, 1, 1, 0, 40000), -(9500174, 2290130, 1, 1, 0, 120000), -(9500180, 2290010, 1, 1, 0, 40000), -(9500180, 2290028, 1, 1, 0, 40000), -(9500180, 2290126, 1, 1, 0, 120000), -(9500181, 2290010, 1, 1, 0, 40000), -(9500181, 2290028, 1, 1, 0, 40000), -(9500181, 2290126, 1, 1, 0, 120000), -(9500331, 2290010, 1, 1, 0, 40000), -(9500331, 2290028, 1, 1, 0, 40000), -(9500331, 2290126, 1, 1, 0, 120000), -(9500332, 2290132, 1, 1, 0, 120000), -(9500333, 2290006, 1, 1, 0, 40000), -(9500333, 2290030, 1, 1, 0, 40000), -(9500333, 2290032, 1, 1, 0, 40000), -(9500333, 2290060, 1, 1, 0, 40000), -(9500333, 2290076, 1, 1, 0, 40000), -(9500333, 2290104, 1, 1, 0, 40000), -(9500333, 2290117, 1, 1, 0, 40000); \ No newline at end of file +(9420540, 2280006, 1, 1, 0, 500), +(9420540, 2290119, 1, 1, 0, 500), +(9420540, 2290120, 1, 1, 0, 500), +(9420544, 2280007, 1, 1, 0, 20000), +(9420544, 2280008, 1, 1, 0, 20000), +(9420544, 2280009, 1, 1, 0, 20000), +(9420544, 2280010, 1, 1, 0, 20000), +(9420544, 2290002, 1, 1, 0, 20000), +(9420544, 2290015, 1, 1, 0, 20000), +(9420544, 2290022, 1, 1, 0, 20000), +(9420544, 2290027, 1, 1, 0, 20000), +(9420544, 2290034, 1, 1, 0, 20000), +(9420544, 2290052, 1, 1, 0, 20000), +(9420544, 2290054, 1, 1, 0, 20000), +(9420544, 2290089, 1, 1, 0, 20000), +(9420544, 2290094, 1, 1, 0, 20000), +(9420544, 2290098, 1, 1, 0, 20000), +(9420544, 2290105, 1, 1, 0, 20000), +(9420544, 2290110, 1, 1, 0, 20000), +(9420544, 2290119, 1, 1, 0, 20000), +(9420549, 2280007, 1, 1, 0, 20000), +(9420549, 2280008, 1, 1, 0, 20000), +(9420549, 2280009, 1, 1, 0, 20000), +(9420549, 2280010, 1, 1, 0, 20000), +(9420549, 2290002, 1, 1, 0, 20000), +(9420549, 2290015, 1, 1, 0, 20000), +(9420549, 2290022, 1, 1, 0, 20000), +(9420549, 2290027, 1, 1, 0, 20000), +(9420549, 2290034, 1, 1, 0, 20000), +(9420549, 2290052, 1, 1, 0, 20000), +(9420549, 2290054, 1, 1, 0, 20000), +(9420549, 2290089, 1, 1, 0, 20000), +(9420549, 2290094, 1, 1, 0, 20000), +(9420549, 2290098, 1, 1, 0, 20000), +(9420549, 2290105, 1, 1, 0, 20000), +(9420549, 2290110, 1, 1, 0, 20000), +(9420549, 2290119, 1, 1, 0, 20000), +(9500166, 2290044, 1, 1, 0, 500), +(9500173, 2290018, 1, 1, 0, 10000), +(9500173, 2290019, 1, 1, 0, 10000), +(9500173, 2290032, 1, 1, 0, 10000), +(9500173, 2290042, 1, 1, 0, 10000), +(9500173, 2290058, 1, 1, 0, 10000), +(9500173, 2290068, 1, 1, 0, 10000), +(9500173, 2290072, 1, 1, 0, 10000), +(9500173, 2290092, 1, 1, 0, 10000), +(9500173, 2290099, 1, 1, 0, 10000), +(9500173, 2290102, 1, 1, 0, 10000), +(9500173, 2290119, 1, 1, 0, 10000), +(9500173, 2290128, 1, 1, 0, 30000), +(9500174, 2290002, 1, 1, 0, 10000), +(9500174, 2290014, 1, 1, 0, 10000), +(9500174, 2290030, 1, 1, 0, 10000), +(9500174, 2290080, 1, 1, 0, 10000), +(9500174, 2290130, 1, 1, 0, 30000), +(9500180, 2290010, 1, 1, 0, 10000), +(9500180, 2290028, 1, 1, 0, 10000), +(9500180, 2290126, 1, 1, 0, 30000), +(9500181, 2290010, 1, 1, 0, 10000), +(9500181, 2290028, 1, 1, 0, 10000), +(9500181, 2290126, 1, 1, 0, 30000), +(9500331, 2290010, 1, 1, 0, 10000), +(9500331, 2290028, 1, 1, 0, 10000), +(9500331, 2290126, 1, 1, 0, 30000), +(9500332, 2290132, 1, 1, 0, 30000), +(9500333, 2290006, 1, 1, 0, 10000), +(9500333, 2290030, 1, 1, 0, 10000), +(9500333, 2290032, 1, 1, 0, 10000), +(9500333, 2290060, 1, 1, 0, 10000), +(9500333, 2290076, 1, 1, 0, 10000), +(9500333, 2290104, 1, 1, 0, 10000), +(9500333, 2290117, 1, 1, 0, 10000); \ No newline at end of file diff --git a/src/client/MapleCharacter.java b/src/client/MapleCharacter.java index d2a3d30402..0a253cd9a8 100644 --- a/src/client/MapleCharacter.java +++ b/src/client/MapleCharacter.java @@ -22,6 +22,7 @@ */ package client; +import server.minigame.MapleRockPaperScissor; import java.awt.Point; import java.lang.ref.WeakReference; import java.sql.Connection; @@ -94,11 +95,10 @@ import server.maps.MapleMapObject; import server.maps.MapleMapObjectType; import server.maps.MapleMiniGame; import server.maps.MapleMiniGame.MiniGameResult; +import server.life.MaplePlayerNPC; import server.maps.MaplePlayerShop; import server.maps.MaplePlayerShopItem; import server.maps.MapleSummon; -import server.life.MaplePlayerNPC; -import server.life.MonsterDropEntry; import server.maps.SavedLocation; import server.maps.SavedLocationType; import server.partyquest.AriantColiseum; @@ -221,7 +221,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { private AtomicInteger exp = new AtomicInteger(); private AtomicInteger gachaexp = new AtomicInteger(); private AtomicInteger meso = new AtomicInteger(); - private AtomicInteger chair = new AtomicInteger(); + private AtomicInteger chair = new AtomicInteger(-1); private int merchantmeso; private BuddyList buddylist; private EventInstanceManager eventInstance = null; @@ -233,6 +233,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { private MapleJob job = MapleJob.BEGINNER; private MapleMessenger messenger = null; private MapleMiniGame miniGame; + private MapleRockPaperScissor rps; private MapleMount maplemount; private MapleParty party; private MaplePet[] pets = new MaplePet[3]; @@ -248,6 +249,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { private SkillMacro[] skillMacros = new SkillMacro[5]; private List lastmonthfameids; private List> lastVisitedMaps = new LinkedList<>(); + private WeakReference ownedMap = new WeakReference<>(null); private final Map quests; private Set controlled = new LinkedHashSet<>(); private Map entered = new LinkedHashMap<>(); @@ -826,6 +828,26 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } return maxbasedamage; } + + public int calculateMaxBaseMagicDamage() { + int maxbasedamage = getTotalMagic(); + int totalint = getTotalInt(); + + if (totalint > 2000) { + maxbasedamage -= 2000; + maxbasedamage += (int) ((0.09033024267 * totalint) + 3823.8038); + } else { + maxbasedamage -= totalint; + + if (totalint > 1700) { + maxbasedamage += (int) (0.1996049769 * Math.pow(totalint, 1.300631341)); + } else { + maxbasedamage += (int) (0.1996049769 * Math.pow(totalint, 1.290631341)); + } + } + + return (maxbasedamage * 107) / 100; + } public void setCombo(short count) { if (count < combocounter) { @@ -1664,6 +1686,14 @@ public class MapleCharacter extends AbstractMapleCharacterObject { petLock.unlock(); } } + + public void setOwnedMap(MapleMap map) { + ownedMap = new WeakReference<>(map); + } + + public MapleMap getOwnedMap() { + return ownedMap.get(); + } public void notifyMapTransferToPartner(int mapid) { if(partnerId > 0) { @@ -2435,7 +2465,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } private void startChairTask() { - if (chair.get() == 0) { + if (chair.get() < 0) { return; } @@ -2644,8 +2674,8 @@ public class MapleCharacter extends AbstractMapleCharacterObject { chrLock.unlock(); } - if (disease == MapleDisease.SEDUCE && chair.get() != 0) { - sitChair(0); + if (disease == MapleDisease.SEDUCE && chair.get() < 0) { + sitChair(-1); } final List> debuff = Collections.singletonList(new Pair<>(disease, Integer.valueOf(skill.getX()))); @@ -5080,7 +5110,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { public int getTotalMagic() { return localmagic; } - + public int getTotalWatk() { return localwatk; } @@ -5339,6 +5369,10 @@ public class MapleCharacter extends AbstractMapleCharacterObject { return playerShop; } + public MapleRockPaperScissor getRPS() { // thanks inhyuk for suggesting RPS addition + return rps; + } + public void setGMLevel(int level) { this.gmLevel = Math.min(level, 6); this.gmLevel = Math.max(level, 0); @@ -5356,6 +5390,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { closeTrade(); closePlayerShop(); closeMiniGame(true); + closeRPS(); closeHiredMerchant(false); closePlayerMessenger(); @@ -5512,23 +5547,19 @@ public class MapleCharacter extends AbstractMapleCharacterObject { public final byte getQuestStatus(final int quest) { synchronized (quests) { - for (final MapleQuestStatus q : quests.values()) { - if (q.getQuest().getId() == quest) { - return (byte) q.getStatus().getId(); - } + MapleQuestStatus mqs = quests.get((short) quest); + if (mqs != null) { + return (byte) mqs.getStatus().getId(); + } else { + return 0; } - return 0; } } public final MapleQuestStatus getMapleQuestStatus(final int quest) { synchronized (quests) { - for (final MapleQuestStatus q : quests.values()) { - if (q.getQuest().getId() == quest) { - return q; - } - } - return null; + MapleQuestStatus mqs = quests.get((short) quest); + return mqs; } } @@ -6085,15 +6116,11 @@ public class MapleCharacter extends AbstractMapleCharacterObject { public void leaveMap() { releaseControlledMonsters(); visibleMapObjects.clear(); - setChair(0); + setChair(-1); if (hpDecreaseTask != null) { hpDecreaseTask.cancel(false); } - if (map.unclaimOwnership(this)) { - map.dropMessage(5, "This lawn is now free real estate."); - } - AriantColiseum arena = this.getAriantColiseum(); if (arena != null) { arena.leaveArena(this); @@ -7411,12 +7438,12 @@ public class MapleCharacter extends AbstractMapleCharacterObject { private void unsitChairInternal() { int chairid = chair.get(); - if (chairid != 0) { + if (chairid >= 0) { if (ItemConstants.isFishingChair(chairid)) { this.getWorldServer().unregisterFisherPlayer(this); } - setChair(0); + setChair(-1); if (unregisterChairBuff()) { getMap().broadcastMessage(this, MaplePacketCreator.cancelForeignChairSkillEffect(this.getId()), false); } @@ -7430,22 +7457,24 @@ public class MapleCharacter extends AbstractMapleCharacterObject { public void sitChair(int itemId) { if (client.tryacquireClient()) { try { - if (itemId >= 1000000) { // sit on item chair - if (chair.get() == 0) { - setChair(itemId); - getMap().broadcastMessage(this, MaplePacketCreator.showChair(this.getId(), itemId), false); - } - announce(MaplePacketCreator.enableActions()); - } else if (itemId != 0) { // sit on map chair - if (chair.get() == 0) { - setChair(itemId); - if (registerChairBuff()) { - getMap().broadcastMessage(this, MaplePacketCreator.giveForeignChairSkillEffect(this.getId()), false); + if (this.isLoggedinWorld()) { + if (itemId >= 1000000) { // sit on item chair + if (chair.get() < 0) { + setChair(itemId); + getMap().broadcastMessage(this, MaplePacketCreator.showChair(this.getId(), itemId), false); } - announce(MaplePacketCreator.cancelChair(itemId)); + announce(MaplePacketCreator.enableActions()); + } else if (itemId >= 0) { // sit on map chair + if (chair.get() < 0) { + setChair(itemId); + if (registerChairBuff()) { + getMap().broadcastMessage(this, MaplePacketCreator.giveForeignChairSkillEffect(this.getId()), false); + } + announce(MaplePacketCreator.cancelChair(itemId)); + } + } else { // stand up + unsitChairInternal(); } - } else { // stand up - unsitChairInternal(); } } finally { client.releaseClient(); @@ -8955,6 +8984,18 @@ public class MapleCharacter extends AbstractMapleCharacterObject { public void setName(String name) { this.name = name; } + + public void setRPS(MapleRockPaperScissor rps) { + this.rps = rps; + } + + public void closeRPS() { + MapleRockPaperScissor rps = this.rps; + if (rps != null) { + rps.dispose(client); + setRPS(null); + } + } public void changeName(String name) { FredrickProcessor.removeFredrickReminders(this.getId()); diff --git a/src/client/command/Command.java b/src/client/command/Command.java index 874c9a36a6..8f1a45514a 100644 --- a/src/client/command/Command.java +++ b/src/client/command/Command.java @@ -27,6 +27,7 @@ import client.MapleClient; public abstract class Command { + protected int rank; protected String description; public abstract void execute(MapleClient client, String[] params); @@ -38,6 +39,14 @@ public abstract class Command { protected void setDescription(String description) { this.description = description; } + + public int getRank() { + return rank; + } + + public void setRank(int rank) { + this.rank = rank; + } protected String joinStringFrom(String arr[], int start) { StringBuilder builder = new StringBuilder(); diff --git a/src/client/command/CommandsExecutor.java b/src/client/command/CommandsExecutor.java index abaf090b18..b9d6e0fc6e 100644 --- a/src/client/command/CommandsExecutor.java +++ b/src/client/command/CommandsExecutor.java @@ -62,7 +62,7 @@ public class CommandsExecutor { return heading == USER_HEADING; } - private HashMap registeredCommands = new HashMap<>(); + private HashMap registeredCommands = new HashMap<>(); private Pair, List> levelCommandsCursor; private List, List>> commandsNameDesc = new ArrayList<>(); @@ -94,7 +94,7 @@ public class CommandsExecutor { private void handleInternal(MapleClient client, String message){ if (client.getPlayer().getMapId() == 300000012) { - client.getPlayer().yellowMessage("You not have permission to use this command while in jail."); + client.getPlayer().yellowMessage("You do not have permission to use commands while in jail."); return; } final String splitRegex = "[ ]"; @@ -107,13 +107,13 @@ public class CommandsExecutor { final String commandName = splitedMessage[0].toLowerCase(); final String[] lowercaseParams = splitedMessage[1].toLowerCase().split(splitRegex); - final RegisteredCommand command = registeredCommands.get(commandName); + final Command command = registeredCommands.get(commandName); if (command == null){ client.getPlayer().yellowMessage("Command '" + commandName + "' is not available. See @commands for a list of available commands."); return; } if (client.getPlayer().gmLevel() < command.getRank()){ - client.getPlayer().yellowMessage("You not have permission to use this command."); + client.getPlayer().yellowMessage("You do not have permission to use this command."); return; } String[] params; @@ -122,16 +122,9 @@ public class CommandsExecutor { } else { params = new String[]{}; } - try { - Command commandInstance = command.getCommandClass().newInstance(); - commandInstance.execute(client, params); - writeLog(client, message); - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - + + command.execute(client, params); + writeLog(client, message); } private void writeLog(MapleClient client, String command){ @@ -172,11 +165,19 @@ public class CommandsExecutor { return; } - RegisteredCommand registeredCommand = new RegisteredCommand(commandClass, rank); - String commandName = syntax.toLowerCase(); addCommandInfo(commandName, commandClass); - registeredCommands.put(commandName, registeredCommand); + + try { + Command commandInstance = commandClass.newInstance(); // thanks Halcyon for noticing commands getting reinstanced every call + commandInstance.setRank(rank); + + registeredCommands.put(commandName, commandInstance); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } } private void registerLv0Commands(){ diff --git a/src/client/command/commands/gm0/MapOwnerClaimCommand.java b/src/client/command/commands/gm0/MapOwnerClaimCommand.java index eac30717e6..1f6e5c0cdc 100644 --- a/src/client/command/commands/gm0/MapOwnerClaimCommand.java +++ b/src/client/command/commands/gm0/MapOwnerClaimCommand.java @@ -27,6 +27,7 @@ import client.command.Command; import client.MapleCharacter; import client.MapleClient; import constants.ServerConstants; +import server.maps.MapleMap; public class MapOwnerClaimCommand extends Command { { @@ -41,12 +42,20 @@ public class MapOwnerClaimCommand extends Command { if (ServerConstants.USE_MAP_OWNERSHIP_SYSTEM) { if (chr.getEventInstance() == null) { - if (chr.getMap().unclaimOwnership(chr)) { - chr.dropMessage(5, "This lawn is now free real estate."); - } else if (chr.getMap().claimOwnership(chr)) { + MapleMap ownedMap = chr.getOwnedMap(); // thanks Conrad for suggesting not unlease a map as soon as player exits it + if (ownedMap != null) { + ownedMap.unclaimOwnership(chr); + + if (chr.getMap() == ownedMap) { + chr.dropMessage(5, "This lawn is now free real estate."); + return; + } + } + + if (chr.getMap().claimOwnership(chr)) { chr.dropMessage(5, "You have leased this lawn for a while, until you leave here or after 1 minute of inactivity."); } else { - chr.dropMessage(5, "This lawn has already been leased by another player."); + chr.dropMessage(5, "This lawn has already been leased by a player."); } } else { chr.dropMessage(5, "This lawn cannot be leased."); diff --git a/src/client/command/commands/gm1/GotoCommand.java b/src/client/command/commands/gm1/GotoCommand.java index e97f41c7de..dcd3b76264 100644 --- a/src/client/command/commands/gm1/GotoCommand.java +++ b/src/client/command/commands/gm1/GotoCommand.java @@ -105,7 +105,7 @@ public class GotoCommand extends Command { gotomaps = new HashMap<>(GameConstants.GOTO_AREAS); // distinct map registry for GM/users suggested thanks to Vcoc gotomaps.putAll(GameConstants.GOTO_TOWNS); // thanks Halcyon for pointing out duplicates on listed entries functionality } else { - gotomaps = new HashMap<>(GameConstants.GOTO_TOWNS); + gotomaps = GameConstants.GOTO_TOWNS; } if (gotomaps.containsKey(params[0])) { diff --git a/src/client/command/commands/gm2/IdCommand.java b/src/client/command/commands/gm2/IdCommand.java index 304f19c62a..d1153fc8ce 100644 --- a/src/client/command/commands/gm2/IdCommand.java +++ b/src/client/command/commands/gm2/IdCommand.java @@ -55,7 +55,7 @@ public class IdCommand extends Command { } sb.append(String.format("Results found: #r%d#k | Returned: #b%d#k/100 | Refine search query to improve time.", resultList.size(), count) + "\r\n"); - player.getClient().getAbstractPlayerInteraction().npcTalk(9010000, sb.toString()); + player.getAbstractPlayerInteraction().npcTalk(9010000, sb.toString()); } else { player.yellowMessage(String.format("Id not found for item: %s, of type: %s.", queryItem, params[0])); } diff --git a/src/client/command/commands/gm3/QuestCompleteCommand.java b/src/client/command/commands/gm3/QuestCompleteCommand.java index 63a17198b3..3ea851b0f9 100644 --- a/src/client/command/commands/gm3/QuestCompleteCommand.java +++ b/src/client/command/commands/gm3/QuestCompleteCommand.java @@ -26,7 +26,6 @@ package client.command.commands.gm3; import client.command.Command; import client.MapleClient; import client.MapleCharacter; -import server.quest.MapleQuest; public class QuestCompleteCommand extends Command { { @@ -45,14 +44,8 @@ public class QuestCompleteCommand extends Command { int questId = Integer.parseInt(params[0]); if (player.getQuestStatus(questId) == 1) { - MapleQuest quest = MapleQuest.getInstance(questId); - if (quest != null) { - int npcid = quest.getNpcRequirement(true); - quest.forceComplete(player, npcid); - player.dropMessage(5, "QUEST " + questId + " completed."); - } else { // should not occur - player.dropMessage(5, "QUESTID " + questId + " is invalid."); - } + c.getAbstractPlayerInteraction().forceCompleteQuest(questId); + player.dropMessage(5, "QUEST " + questId + " completed."); } else { player.dropMessage(5, "QUESTID " + questId + " not started or already completed."); } diff --git a/src/client/command/commands/gm3/QuestStartCommand.java b/src/client/command/commands/gm3/QuestStartCommand.java index 747732d05f..c609e66d64 100644 --- a/src/client/command/commands/gm3/QuestStartCommand.java +++ b/src/client/command/commands/gm3/QuestStartCommand.java @@ -26,7 +26,6 @@ package client.command.commands.gm3; import client.command.Command; import client.MapleClient; import client.MapleCharacter; -import server.quest.MapleQuest; public class QuestStartCommand extends Command { { @@ -45,14 +44,8 @@ public class QuestStartCommand extends Command { int questid = Integer.parseInt(params[0]); if (player.getQuestStatus(questid) == 0) { - MapleQuest quest = MapleQuest.getInstance(questid); - if (quest != null) { - int npcid = quest.getNpcRequirement(false); - quest.forceStart(player, npcid); - player.dropMessage(5, "QUEST " + questid + " started."); - } else { - player.dropMessage(5, "QUESTID " + questid + " is invalid."); - } + c.getAbstractPlayerInteraction().forceStartQuest(questid); + player.dropMessage(5, "QUEST " + questid + " started."); } else { player.dropMessage(5, "QUESTID " + questid + " already started/completed."); } diff --git a/src/client/command/commands/gm5/DebugCommand.java b/src/client/command/commands/gm5/DebugCommand.java index e2617b73f4..bb2cab3d6b 100644 --- a/src/client/command/commands/gm5/DebugCommand.java +++ b/src/client/command/commands/gm5/DebugCommand.java @@ -34,7 +34,6 @@ import server.life.SpawnPoint; import server.maps.MapleMapObject; import server.maps.MapleMapObjectType; import server.maps.MapleReactor; -import tools.MaplePacketCreator; import java.awt.*; import java.util.Arrays; diff --git a/src/client/processor/DueyProcessor.java b/src/client/processor/DueyProcessor.java index 4415809184..c0490b64a6 100644 --- a/src/client/processor/DueyProcessor.java +++ b/src/client/processor/DueyProcessor.java @@ -112,10 +112,14 @@ public class DueyProcessor { return null; } - private static String getCurrentDate() { + private static String getCurrentDate(boolean quick) { String date = ""; Calendar cal = Calendar.getInstance(); - int day = cal.get(Calendar.DATE) - 1; // instant duey ? + if (!quick) { + cal.add(Calendar.DATE, 1); + } + + int day = cal.get(Calendar.DATE); int month = cal.get(Calendar.MONTH) + 1; // its an array of months. int year = cal.get(Calendar.YEAR); date += day <= 9 ? "0" + day + "-" : "" + day + "-"; @@ -132,7 +136,7 @@ public class DueyProcessor { ResultSet rs = null; try { con = DatabaseConnection.getConnection(); - ps = con.prepareStatement("SELECT Mesos FROM dueypackages WHERE ReceiverId = ? and Checked = 1"); + ps = con.prepareStatement("SELECT SenderName, Type FROM dueypackages WHERE ReceiverId = ? AND Checked = 1 ORDER BY Type DESC"); ps.setInt(1, player.getId()); rs = ps.executeQuery(); if (rs.next()) { @@ -143,11 +147,11 @@ public class DueyProcessor { pss.executeUpdate(); pss.close(); con2.close(); + + c.announce(MaplePacketCreator.sendDueyParcelReceived(rs.getString("SenderName"), rs.getInt("Type") == 1)); } catch (SQLException e) { e.printStackTrace(); } - - c.announce(MaplePacketCreator.sendDueyNotification(false)); } } catch (SQLException e) { e.printStackTrace(); @@ -241,7 +245,7 @@ public class DueyProcessor { return packages; } - private static int createPackage(int mesos, String message, String sender, int toCid) { + private static int createPackage(int mesos, String message, String sender, int toCid, boolean quick) { try { Connection con = null; PreparedStatement ps = null; @@ -249,16 +253,17 @@ public class DueyProcessor { try { con = DatabaseConnection.getConnection(); - ps = con.prepareStatement("INSERT INTO `dueypackages` (ReceiverId, SenderName, Mesos, TimeStamp, Message, Checked) VALUES (?, ?, ?, ?, ?, 1)", Statement.RETURN_GENERATED_KEYS); + ps = con.prepareStatement("INSERT INTO `dueypackages` (ReceiverId, SenderName, Mesos, TimeStamp, Message, Type, Checked) VALUES (?, ?, ?, ?, ?, ?, 1)", Statement.RETURN_GENERATED_KEYS); ps.setInt(1, toCid); ps.setString(2, sender); ps.setInt(3, mesos); - ps.setString(4, getCurrentDate()); + ps.setString(4, getCurrentDate(quick)); ps.setString(5, message); + ps.setInt(6, quick ? 1 : 0); int updateRows = ps.executeUpdate(); if (updateRows < 1) { - FilePrinter.printError(FilePrinter.INSERT_CHAR, "Error trying to create package [mesos: " + mesos + ", " + sender + ", to CharacterId: " + toCid + "]"); + FilePrinter.printError(FilePrinter.INSERT_CHAR, "Error trying to create package [mesos: " + mesos + ", " + sender + ", quick: " + quick + ", to CharacterId: " + toCid + "]"); return -1; } @@ -267,7 +272,7 @@ public class DueyProcessor { if (rs.next()) { packageId = rs.getInt(1); } else { - FilePrinter.printError(FilePrinter.INSERT_CHAR, "Failed inserting package [mesos: " + mesos + ", " + sender + ", to CharacterId: " + toCid + "]"); + FilePrinter.printError(FilePrinter.INSERT_CHAR, "Failed inserting package [mesos: " + mesos + ", " + sender + ", quick: " + quick + ", to CharacterId: " + toCid + "]"); return -1; } @@ -348,10 +353,18 @@ public class DueyProcessor { return 0; } - public static void dueySendItem(MapleClient c, byte invTypeId, short itemPos, short amount, int sendMesos, String sendMessage, String recipient) { + public static void dueySendItem(MapleClient c, byte invTypeId, short itemPos, short amount, int sendMesos, String sendMessage, String recipient, boolean quick) { if (c.tryacquireClient()) { try { - final int fee = 5000 + MapleTrade.getFee(sendMesos); + int fee = MapleTrade.getFee(sendMesos); + if (!quick) { + fee += 5000; + } else if (!c.getPlayer().haveItem(5330000)) { + AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit with Quick Delivery on duey."); + FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to use duey with Quick Delivery, mesos " + sendMesos + " and amount " + amount); + c.disconnect(true, false); + return; + } long finalcost = (long) sendMesos + fee; if (finalcost < 0 || finalcost > Integer.MAX_VALUE || (amount < 1 && sendMesos == 0)) { @@ -385,7 +398,11 @@ public class DueyProcessor { return; } - int packageId = createPackage(sendMesos, sendMessage, c.getPlayer().getName(), recipientCid); + if (quick) { + MapleInventoryManipulator.removeById(c, MapleInventoryType.CASH, 5330000, (short) 1, false, false); + } + + int packageId = createPackage(sendMesos, sendMessage, c.getPlayer().getName(), recipientCid, quick); if (packageId == -1) { c.announce(MaplePacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_ENABLE_ACTIONS.getCode())); return; @@ -490,10 +507,17 @@ public class DueyProcessor { } } - public static void dueySendTalk(MapleClient c) { + public static void dueySendTalk(MapleClient c, boolean quickDelivery) { if (c.tryacquireClient()) { try { - c.announce(MaplePacketCreator.sendDuey((byte) 8, loadPackages(c.getPlayer()))); + long timeNow = System.currentTimeMillis(); + if(timeNow - c.getPlayer().getNpcCooldown() < ServerConstants.BLOCK_NPC_RACE_CONDT) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + c.getPlayer().setNpcCooldown(timeNow); + + c.announce(MaplePacketCreator.sendDuey(quickDelivery ? 0x1A : 0x8, loadPackages(c.getPlayer()))); } finally { c.releaseClient(); } @@ -501,7 +525,7 @@ public class DueyProcessor { } public static void dueyCreatePackage(Item item, int mesos, String sender, int recipientCid) { - int packageId = createPackage(mesos, "", sender, recipientCid); + int packageId = createPackage(mesos, "", sender, recipientCid, false); if (packageId != -1) { insertPackageItem(packageId, item); } diff --git a/src/client/processor/MakerProcessor.java b/src/client/processor/MakerProcessor.java index e08d7d97d3..7c4ec841dc 100644 --- a/src/client/processor/MakerProcessor.java +++ b/src/client/processor/MakerProcessor.java @@ -33,6 +33,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; import server.MakerItemFactory; +import server.MakerItemFactory.MakerItemCreateEntry; import server.MapleItemInformationProvider; import tools.FilePrinter; import tools.MaplePacketCreator; @@ -44,6 +45,7 @@ import tools.data.input.SeekableLittleEndianAccessor; * @author Ronan */ public class MakerProcessor { + private static MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); public static void makerAction(SeekableLittleEndianAccessor slea, MapleClient c) { @@ -54,7 +56,7 @@ public class MakerProcessor { int toDisassemble = -1, pos = -1; boolean makerSucceeded = true; - MakerItemFactory.MakerItemCreateEntry recipe; + MakerItemCreateEntry recipe; Map reagentids = new LinkedHashMap<>(); int stimulantid = -1; @@ -62,29 +64,31 @@ public class MakerProcessor { int fromLeftover = toCreate; toCreate = ii.getMakerCrystalFromLeftover(toCreate); if(toCreate == -1) { - c.announce(MaplePacketCreator.serverNotice(1, ii.getName(toCreate) + " is unavailable for Monster Crystal conversion.")); + c.announce(MaplePacketCreator.serverNotice(1, ii.getName(fromLeftover) + " is unavailable for Monster Crystal conversion.")); + c.announce(MaplePacketCreator.makerEnableActions()); return; } - - recipe = MakerItemFactory.generateLeftoverCrystalEntry(fromLeftover); + + recipe = MakerItemFactory.generateLeftoverCrystalEntry(fromLeftover, toCreate); } else if(type == 4) { // disassembling slea.readInt(); // 1... probably inventory type pos = slea.readInt(); Item it = c.getPlayer().getInventory(MapleInventoryType.EQUIP).getItem((short) pos); if(it != null && it.getItemId() == toCreate) { - Pair p; - - if((p = generateDisassemblyInfo(toCreate)) != null) { - recipe = MakerItemFactory.generateDisassemblyCrystalEntry(p.getLeft(), p.getRight()); - toDisassemble = toCreate; - toCreate = ii.getMakerCrystalFromEquip(toCreate); + toDisassemble = toCreate; + + Pair>> p = generateDisassemblyInfo(toDisassemble); + if(p != null) { + recipe = MakerItemFactory.generateDisassemblyCrystalEntry(toDisassemble, p.getLeft(), p.getRight()); } else { c.announce(MaplePacketCreator.serverNotice(1, ii.getName(toCreate) + " is unavailable for Monster Crystal disassembly.")); + c.announce(MaplePacketCreator.makerEnableActions()); return; } } else { c.announce(MaplePacketCreator.serverNotice(1, "An unknown error occurred when trying to apply that item for disassembly.")); + c.announce(MaplePacketCreator.makerEnableActions()); return; } } else { @@ -132,6 +136,7 @@ public class MakerProcessor { if(!reagentids.isEmpty()) { if(!removeOddMakerReagents(toCreate, reagentids)) { c.announce(MaplePacketCreator.serverNotice(1, "You can only use WATK and MATK Strengthening Gems on weapon items.")); + c.announce(MaplePacketCreator.makerEnableActions()); return; } } @@ -146,65 +151,80 @@ public class MakerProcessor { case -1:// non-available for Maker itemid has been tried to forge FilePrinter.printError(FilePrinter.EXPLOITS, "Player " + c.getPlayer().getName() + " tried to craft itemid " + toCreate + " using the Maker skill."); c.announce(MaplePacketCreator.serverNotice(1, "The requested item could not be crafted on this operation.")); + c.announce(MaplePacketCreator.makerEnableActions()); break; case 1: // no items - c.announce(MaplePacketCreator.serverNotice(1, "You don't have all required items in your inventory to make " + recipe.getRewardAmount() + " " + ii.getName(toCreate) + ".")); + c.announce(MaplePacketCreator.serverNotice(1, "You don't have all required items in your inventory to make " + ii.getName(toCreate) + ".")); + c.announce(MaplePacketCreator.makerEnableActions()); break; case 2: // no meso c.announce(MaplePacketCreator.serverNotice(1, "You don't have enough mesos (" + GameConstants.numberWithCommas(recipe.getCost()) + ") to complete this operation.")); + c.announce(MaplePacketCreator.makerEnableActions()); break; case 3: // no req level c.announce(MaplePacketCreator.serverNotice(1, "You don't have enough level to complete this operation.")); + c.announce(MaplePacketCreator.makerEnableActions()); break; case 4: // no req skill level c.announce(MaplePacketCreator.serverNotice(1, "You don't have enough Maker level to complete this operation.")); + c.announce(MaplePacketCreator.makerEnableActions()); + break; + + case 5: // inventory full + c.announce(MaplePacketCreator.serverNotice(1, "Your inventory is full.")); + c.announce(MaplePacketCreator.makerEnableActions()); break; default: - if (MapleInventoryManipulator.checkSpace(c, toCreate, (short) recipe.getRewardAmount(), "")) { + if(toDisassemble != -1) { + MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.EQUIP, (short) pos, (short) 1, false); + } else { for (Pair p : recipe.getReqItems()) { - c.getAbstractPlayerInteraction().gainItem(p.getLeft(), (short) -p.getRight()); + c.getAbstractPlayerInteraction().gainItem(p.getLeft(), (short) -p.getRight(), false); } + } - if(toDisassemble != -1) { - MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.EQUIP, (short) pos, (short) 1, false); - c.announce(MaplePacketCreator.getShowItemGain(toDisassemble, (short) -1, true)); - } - - int cost = recipe.getCost(); - if(stimulantid == -1 && reagentids.isEmpty()) { - if(cost > 0) c.getPlayer().gainMeso(-cost); - + int cost = recipe.getCost(); + if(stimulantid == -1 && reagentids.isEmpty()) { + if(cost > 0) c.getPlayer().gainMeso(-cost, false); + + for (Pair p : recipe.getGainItems()) { c.getPlayer().setCS(true); - c.getAbstractPlayerInteraction().gainItem(toCreate, (short) recipe.getRewardAmount()); + c.getAbstractPlayerInteraction().gainItem(p.getLeft(), p.getRight().shortValue(), false); c.getPlayer().setCS(false); - } else { - if(stimulantid != -1) c.getAbstractPlayerInteraction().gainItem(stimulantid, (short) -1); - if(!reagentids.isEmpty()) { - for(Map.Entry r : reagentids.entrySet()) { - c.getAbstractPlayerInteraction().gainItem(r.getKey(), (short) (-1 * r.getValue())); - } - } - - if(cost > 0) c.getPlayer().gainMeso(-cost); - makerSucceeded = addBoostedMakerItem(c, toCreate, stimulantid, reagentids); - } - - if(makerSucceeded) c.announce(MaplePacketCreator.serverNotice(1, "You have successfully created " + recipe.getRewardAmount() + " " + ii.getName(toCreate) + ".")); - else c.getPlayer().dropMessage(5, "The Maker skill lights up, but the skill winds up as if nothing happened."); - - c.announce(MaplePacketCreator.showMakerEffect(makerSucceeded)); - c.getPlayer().getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.showForeignMakerEffect(c.getPlayer().getId(), makerSucceeded), false); - - if(toCreate == 4260003 && type == 3 && c.getPlayer().getQuestStatus(6033) == 1) { - c.getAbstractPlayerInteraction().setQuestProgress(6033, 1); } } else { - c.announce(MaplePacketCreator.serverNotice(1, "Your inventory is full.")); + toCreate = recipe.getGainItems().get(0).getLeft(); + + if(stimulantid != -1) c.getAbstractPlayerInteraction().gainItem(stimulantid, (short) -1, false); + if(!reagentids.isEmpty()) { + for(Map.Entry r : reagentids.entrySet()) { + c.getAbstractPlayerInteraction().gainItem(r.getKey(), (short) (-1 * r.getValue()), false); + } + } + + if(cost > 0) c.getPlayer().gainMeso(-cost, false); + makerSucceeded = addBoostedMakerItem(c, toCreate, stimulantid, reagentids); + } + + // thanks inhyuk for noticing missing MAKER_RESULT packets + if (type == 3) { + c.announce(MaplePacketCreator.makerResultCrystal(recipe.getGainItems().get(0).getLeft(), recipe.getReqItems().get(0).getLeft())); + } else if (type == 4) { + c.announce(MaplePacketCreator.makerResultDesynth(recipe.getReqItems().get(0).getLeft(), recipe.getCost(), recipe.getGainItems())); + } else { + c.announce(MaplePacketCreator.makerResult(makerSucceeded, recipe.getGainItems().get(0).getLeft(), recipe.getGainItems().get(0).getRight(), recipe.getCost(), recipe.getReqItems(), stimulantid, new LinkedList<>(reagentids.keySet()))); + } + + c.announce(MaplePacketCreator.showMakerEffect(makerSucceeded)); + c.getPlayer().getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.showForeignMakerEffect(c.getPlayer().getId(), makerSucceeded), false); + + if(toCreate == 4260003 && type == 3 && c.getPlayer().getQuestStatus(6033) == 1) { + c.getAbstractPlayerInteraction().setQuestProgress(6033, 1); } } } finally { @@ -271,12 +291,12 @@ public class MakerProcessor { } } - private static Pair generateDisassemblyInfo(int itemId) { + private static Pair>> generateDisassemblyInfo(int itemId) { int recvFee = ii.getMakerDisassembledFee(itemId); if(recvFee > -1) { - int recvQty = ii.getMakerDisassembledQuantity(itemId); - if(recvQty > 0) { - return new Pair<>(recvFee, recvQty); + List> gains = ii.getMakerDisassembledItems(itemId); + if(!gains.isEmpty()) { + return new Pair<>(recvFee, gains); } } @@ -287,7 +307,7 @@ public class MakerProcessor { return chr.getSkillLevel((chr.getJob().getId() / 1000) * 10000000 + 1007); } - private static short getCreateStatus(MapleClient c, MakerItemFactory.MakerItemCreateEntry recipe) { + private static short getCreateStatus(MapleClient c, MakerItemCreateEntry recipe) { if(recipe == null) { return -1; } @@ -308,10 +328,29 @@ public class MakerProcessor { return 4; } + List addItemids = new LinkedList<>(); + List addQuantity = new LinkedList<>(); + List rmvItemids = new LinkedList<>(); + List rmvQuantity = new LinkedList<>(); + + for (Pair p : recipe.getReqItems()) { + rmvItemids.add(p.getLeft()); + rmvQuantity.add(p.getRight()); + } + + for (Pair p : recipe.getGainItems()) { + addItemids.add(p.getLeft()); + addQuantity.add(p.getRight()); + } + + if (!c.getAbstractPlayerInteraction().canHoldAllAfterRemoving(addItemids, addQuantity, rmvItemids, rmvQuantity)) { + return 5; + } + return 0; } - private static boolean hasItems(MapleClient c, MakerItemFactory.MakerItemCreateEntry recipe) { + private static boolean hasItems(MapleClient c, MakerItemCreateEntry recipe) { for (Pair p : recipe.getReqItems()) { int itemId = p.getLeft(); if (c.getPlayer().getInventory(ItemConstants.getInventoryType(itemId)).countById(itemId) < p.getRight()) { @@ -397,7 +436,6 @@ public class MakerProcessor { } MapleInventoryManipulator.addFromDrop(c, item, false, -1); - c.announce(MaplePacketCreator.getShowItemGain(itemid, (short) 1, true)); return true; } } diff --git a/src/constants/ItemConstants.java b/src/constants/ItemConstants.java index fbbbfc900b..ab7ea7d240 100644 --- a/src/constants/ItemConstants.java +++ b/src/constants/ItemConstants.java @@ -247,4 +247,12 @@ public final class ItemConstants { public static boolean isHair(int itemId) { return itemId >= 30000 && itemId < 35000; } + + public static boolean isFaceExpression(int itemId) { + return itemId / 10000 == 516; + } + + public static boolean isChair(int itemId) { + return itemId / 10000 == 301; + } } diff --git a/src/constants/ScriptableNPCConstants.java b/src/constants/ScriptableNPCConstants.java index d5eb2e4eca..14c27aaf1e 100644 --- a/src/constants/ScriptableNPCConstants.java +++ b/src/constants/ScriptableNPCConstants.java @@ -17,6 +17,7 @@ public class ScriptableNPCConstants { public static final Set> SCRIPTABLE_NPCS = new HashSet>(){{ add(new Pair<>(9200000, "Cody")); + add(new Pair<>(9001105, "Grandpa Moon Bunny")); }}; } diff --git a/src/constants/ServerConstants.java b/src/constants/ServerConstants.java index 1e9085b326..8ebbe4537b 100644 --- a/src/constants/ServerConstants.java +++ b/src/constants/ServerConstants.java @@ -94,7 +94,7 @@ public class ServerConstants { public static final boolean USE_ENFORCE_JOB_LEVEL_RANGE = false;//Caps the player level on the minimum required to advance their current jobs. public static final boolean USE_ENFORCE_JOB_SP_RANGE = false; //Caps the player SP level on the total obtainable by their current jobs. After changing jobs, missing SP will be retrieved. public static final boolean USE_ENFORCE_ITEM_SUGGESTION = false;//Forces the Owl of Minerva and the Cash Shop to always display the defined item array instead of those featured by the players. - public static final boolean USE_ENFORCE_UNMERCHABLE_CASH = false;//Forces players to not sell CASH items via merchants. + public static final boolean USE_ENFORCE_UNMERCHABLE_CASH = true;//Forces players to not sell CASH items via merchants. public static final boolean USE_ENFORCE_UNMERCHABLE_PET = false; //Forces players to not sell pets via merchants. (since non-named pets gets dirty name and other possible DB-related issues) public static final boolean USE_ENFORCE_MERCHANT_SAVE = true; //Forces automatic DB save on merchant owners, at every item movement on shop. public static final boolean USE_ENFORCE_MDOOR_POSITION = false; //Forces mystic door to be spawned near spawnpoints. @@ -112,7 +112,7 @@ public class ServerConstants { public static final boolean USE_ENABLE_CHAT_LOG = false; //Write in-game chat to log public static final boolean USE_REBIRTH_SYSTEM = false; //Flag to enable/disable rebirth system public static final boolean USE_MAP_OWNERSHIP_SYSTEM = true; //Flag to enable/disable map ownership system - public static final boolean USE_FISHING_SYSTEM = true; //Flag to enable/disable fishing system + public static final boolean USE_FISHING_SYSTEM = true; //Flag to enable/disable custom fishing system public static final boolean USE_NPCS_SCRIPTABLE = true; //Flag to enable/disable serverside predefined script NPCs. //Events/PQs Configuration diff --git a/src/net/PacketProcessor.java b/src/net/PacketProcessor.java index 0e03f0d0e7..0112631fff 100644 --- a/src/net/PacketProcessor.java +++ b/src/net/PacketProcessor.java @@ -163,6 +163,7 @@ public final class PacketProcessor { registerHandler(RecvOpcode.CANCEL_BUFF, new CancelBuffHandler()); registerHandler(RecvOpcode.CANCEL_ITEM_EFFECT, new CancelItemEffectHandler()); registerHandler(RecvOpcode.PLAYER_INTERACTION, new PlayerInteractionHandler()); + registerHandler(RecvOpcode.RPS_ACTION, new RPSActionHandler()); registerHandler(RecvOpcode.DISTRIBUTE_AP, new DistributeAPHandler()); registerHandler(RecvOpcode.DISTRIBUTE_SP, new DistributeSPHandler()); registerHandler(RecvOpcode.CHANGE_KEYMAP, new KeymapChangeHandler()); diff --git a/src/net/opcodes/SendOpcode.java b/src/net/opcodes/SendOpcode.java index 42e14c9b8f..623728b177 100644 --- a/src/net/opcodes/SendOpcode.java +++ b/src/net/opcodes/SendOpcode.java @@ -239,6 +239,7 @@ public enum SendOpcode { MESO_BAG_MESSAGE(0xD2), UPDATE_QUEST_INFO(0xD3), PLAYER_HINT(0xD6), + MAKER_RESULT(0xD9), KOREAN_EVENT(0xDB), OPEN_UI(0xDC), LOCK_UI(0xDD), diff --git a/src/net/server/Server.java b/src/net/server/Server.java index b32e2d12ca..f20261411f 100644 --- a/src/net/server/Server.java +++ b/src/net/server/Server.java @@ -57,6 +57,7 @@ import net.server.channel.Channel; import net.server.guild.MapleAlliance; import net.server.guild.MapleGuild; import net.server.guild.MapleGuildCharacter; +import net.server.worker.BossLogWorker; import net.server.worker.CharacterDiseaseWorker; import net.server.worker.CouponWorker; import net.server.worker.EventRecallCoordinatorWorker; @@ -96,6 +97,7 @@ import server.CashShop.CashItemFactory; import server.MapleSkillbookInformationProvider; import server.ThreadManager; import server.TimerManager; +import server.expeditions.MapleExpeditionBossLog; import server.life.MaplePlayerNPCFactory; import server.quest.MapleQuest; import tools.AutoJCE; @@ -527,6 +529,16 @@ public class Server { return Math.max(0, nextHour.getTimeInMillis() - System.currentTimeMillis()); } + private static long getTimeLeftForNextDay() { + Calendar nextDay = Calendar.getInstance(); + nextDay.add(Calendar.DAY_OF_MONTH, 1); + nextDay.set(Calendar.HOUR, 0); + nextDay.set(Calendar.MINUTE, 0); + nextDay.set(Calendar.SECOND, 0); + + return Math.max(0, nextDay.getTimeInMillis() - System.currentTimeMillis()); + } + public Map getCouponRates() { return couponRates; } @@ -895,6 +907,10 @@ public class Server { tMan.register(new FredrickWorker(), 60 * 60 * 1000, 60 * 60 * 1000); tMan.register(new InvitationWorker(), 30 * 1000, 30 * 1000); + timeLeft = getTimeLeftForNextDay(); + MapleExpeditionBossLog.resetBossLogTable(); + tMan.register(new BossLogWorker(), 24 * 60 * 60 * 1000, timeLeft); + long timeToTake = System.currentTimeMillis(); SkillFactory.loadAllSkills(); System.out.println("Skills loaded in " + ((System.currentTimeMillis() - timeToTake) / 1000.0) + " seconds"); diff --git a/src/net/server/channel/Channel.java b/src/net/server/channel/Channel.java index 17ffdc03a7..1c14e708b5 100644 --- a/src/net/server/channel/Channel.java +++ b/src/net/server/channel/Channel.java @@ -199,12 +199,12 @@ public final class Channel { disconnectAwayPlayers(); players.disconnectAll(); - mapManager.dispose(); - mapManager = null; - eventSM.cancel(); eventSM = null; + mapManager.dispose(); + mapManager = null; + closeChannelSchedules(); players = null; @@ -683,7 +683,7 @@ public final class Channel { if(dungeons.containsKey(dungeonid)) return false; MapleMiniDungeonInfo mmdi = MapleMiniDungeonInfo.getDungeon(dungeonid); - MapleMiniDungeon mmd = new MapleMiniDungeon(mmdi.getBase(), 30); // all minidungeons timeout on 30 mins + MapleMiniDungeon mmd = new MapleMiniDungeon(mmdi.getBase(), this.getMapFactory().getMap(mmdi.getDungeonId()).getTimeLimit()); // thanks Conrad for noticing hardcoded time limit for minidungeons dungeons.put(dungeonid, mmd); return true; diff --git a/src/net/server/channel/handlers/CancelChairHandler.java b/src/net/server/channel/handlers/CancelChairHandler.java index 0b6693be51..e6672f5c44 100644 --- a/src/net/server/channel/handlers/CancelChairHandler.java +++ b/src/net/server/channel/handlers/CancelChairHandler.java @@ -32,8 +32,11 @@ public final class CancelChairHandler extends AbstractMaplePacketHandler { public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { int id = slea.readShort(); MapleCharacter mc = c.getPlayer(); - if(!mc.isLoggedinWorld()) return; - mc.sitChair(id == -1 ? 0 : id); + if (id >= mc.getMap().getSeats()) { + return; + } + + mc.sitChair(id); } } diff --git a/src/net/server/channel/handlers/DueyHandler.java b/src/net/server/channel/handlers/DueyHandler.java index ae2fc17a6e..34a07e3945 100644 --- a/src/net/server/channel/handlers/DueyHandler.java +++ b/src/net/server/channel/handlers/DueyHandler.java @@ -45,8 +45,9 @@ public final class DueyHandler extends AbstractMaplePacketHandler { short amount = slea.readShort(); int mesos = slea.readInt(); String recipient = slea.readMapleAsciiString(); - String message = slea.readByte() != 0 ? slea.readMapleAsciiString() : ""; - DueyProcessor.dueySendItem(c, inventId, itemPos, amount, mesos, message, recipient); + boolean quick = slea.readByte() != 0; + String message = quick ? slea.readMapleAsciiString() : ""; + DueyProcessor.dueySendItem(c, inventId, itemPos, amount, mesos, message, recipient, quick); } else if (operation == DueyProcessor.Actions.TOSERVER_REMOVE_PACKAGE.getCode()) { int packageid = slea.readInt(); @@ -55,6 +56,8 @@ public final class DueyHandler extends AbstractMaplePacketHandler { int packageid = slea.readInt(); DueyProcessor.dueyClaimPackage(c, packageid); + } else if (operation == DueyProcessor.Actions.TOSERVER_CLAIM_PACKAGE.getCode()) { + DueyProcessor.dueySendTalk(c, false); } } } diff --git a/src/net/server/channel/handlers/FaceExpressionHandler.java b/src/net/server/channel/handlers/FaceExpressionHandler.java index dd6d0cb577..b5be532a12 100644 --- a/src/net/server/channel/handlers/FaceExpressionHandler.java +++ b/src/net/server/channel/handlers/FaceExpressionHandler.java @@ -34,15 +34,17 @@ public final class FaceExpressionHandler extends AbstractMaplePacketHandler { int emote = slea.readInt(); if (emote > 7) { - int emoteid = 5159992 + emote; - if (chr.getInventory(ItemConstants.getInventoryType(emoteid)).findById(emoteid) == null) { + int itemid = 5159992 + emote; // thanks Rajan (Darter) for reporting unchecked emote itemid + if (!ItemConstants.isFaceExpression(itemid) || chr.getInventory(ItemConstants.getInventoryType(itemid)).findById(itemid) == null) { return; } + } else if (emote < 1) { + return; } if(c.tryacquireClient()) { try { // expecting players never intends to wear the emote 0 (default face, that changes back after 5sec timeout) - if (emote != 0 && chr.isLoggedinWorld()) { + if (chr.isLoggedinWorld()) { chr.changeFaceExpression(emote); } } finally { diff --git a/src/net/server/channel/handlers/MobDamageMobFriendlyHandler.java b/src/net/server/channel/handlers/MobDamageMobFriendlyHandler.java index 672c2496f9..9146417f5a 100644 --- a/src/net/server/channel/handlers/MobDamageMobFriendlyHandler.java +++ b/src/net/server/channel/handlers/MobDamageMobFriendlyHandler.java @@ -72,8 +72,15 @@ public final class MobDamageMobFriendlyHandler extends AbstractMaplePacketHandle map.addBunnyHit(); } } + + monster.applyAndGetHpDamage(damage, false); + int remainingHp = monster.getHp(); + if(remainingHp <= 0) { + remainingHp = 0; + monster.getMap().removeMapObject(monster); + } - c.getPlayer().getMap().broadcastMessage(MaplePacketCreator.MobDamageMobFriendly(monster, damage), monster.getPosition()); + c.getPlayer().getMap().broadcastMessage(MaplePacketCreator.MobDamageMobFriendly(monster, damage, remainingHp), monster.getPosition()); c.announce(MaplePacketCreator.enableActions()); } } \ No newline at end of file diff --git a/src/net/server/channel/handlers/MobDamageMobHandler.java b/src/net/server/channel/handlers/MobDamageMobHandler.java index e3e11cebac..f6d8ac7b0d 100644 --- a/src/net/server/channel/handlers/MobDamageMobHandler.java +++ b/src/net/server/channel/handlers/MobDamageMobHandler.java @@ -21,16 +21,24 @@ */ package net.server.channel.handlers; +import java.util.Map; import client.MapleClient; import client.MapleCharacter; +import client.autoban.AutobanFactory; +import client.status.MonsterStatus; +import client.status.MonsterStatusEffect; import net.AbstractMaplePacketHandler; +import server.life.MapleMonster; +import server.life.MapleMonsterInformationProvider; import server.maps.MapleMap; +import tools.FilePrinter; import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; /** * * @author Jay Estrella + * @author Ronan */ public final class MobDamageMobHandler extends AbstractMaplePacketHandler { @Override @@ -38,14 +46,69 @@ public final class MobDamageMobHandler extends AbstractMaplePacketHandler { int from = slea.readInt(); slea.readInt(); int to = slea.readInt(); - slea.readByte(); + boolean magic = slea.readByte() == 0; int dmg = slea.readInt(); MapleCharacter chr = c.getPlayer(); MapleMap map = chr.getMap(); - if (map.getMonsterByOid(from) != null && map.getMonsterByOid(to) != null) { - map.damageMonster(chr, map.getMonsterByOid(to), dmg); - map.broadcastMessage(MaplePacketCreator.damageMonster(to, dmg)); + MapleMonster attacker = map.getMonsterByOid(from); + MapleMonster damaged = map.getMonsterByOid(to); + + if (attacker != null && damaged != null) { + int maxDmg = calcMaxDamage(attacker, damaged, magic); // thanks Darter (YungMoozi) for reporting unchecked dmg + + if (dmg > maxDmg) { + AutobanFactory.DAMAGE_HACK.alert(c.getPlayer(), "Possible packet editing hypnotize damage exploit."); // thanks Rien dev team + + FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " had hypnotized " + MapleMonsterInformationProvider.getInstance().getMobNameFromId(attacker.getId()) + " to attack " + MapleMonsterInformationProvider.getInstance().getMobNameFromId(damaged.getId()) + " with damage " + dmg + " (max: " + maxDmg + ")"); + dmg = maxDmg; + } + + map.damageMonster(chr, damaged, dmg); + map.broadcastMessage(chr, MaplePacketCreator.damageMonster(to, dmg), false); } } + + private static int calcMaxDamage(MapleMonster attacker, MapleMonster damaged, boolean magic) { + int attackerAtk, damagedDef, attackerLevel = attacker.getLevel(); + double maxDamage; + if (magic) { + int atkRate = calcModifier(attacker, MonsterStatus.MAGIC_ATTACK_UP, MonsterStatus.MATK); + attackerAtk = (attacker.getStats().getMADamage() * atkRate) / 100; + + int defRate = calcModifier(damaged, MonsterStatus.MAGIC_DEFENSE_UP, MonsterStatus.MDEF); + damagedDef = (damaged.getStats().getMDDamage() * defRate) / 100; + + maxDamage = ((attackerAtk * (1.15 + (0.025 * attackerLevel))) - (0.75 * damagedDef)) * (Math.log(Math.abs(damagedDef - attackerAtk)) / Math.log(12)); + } else { + int atkRate = calcModifier(attacker, MonsterStatus.WEAPON_ATTACK_UP, MonsterStatus.WATK); + attackerAtk = (attacker.getStats().getPADamage() * atkRate) / 100; + + int defRate = calcModifier(damaged, MonsterStatus.WEAPON_DEFENSE_UP, MonsterStatus.WDEF); + damagedDef = (damaged.getStats().getPDDamage() * defRate) / 100; + + maxDamage = ((attackerAtk * (1.15 + (0.025 * attackerLevel))) - (0.75 * damagedDef)) * (Math.log(Math.abs(damagedDef - attackerAtk)) / Math.log(17)); + } + + return (int) maxDamage; + } + + private static int calcModifier(MapleMonster monster, MonsterStatus buff, MonsterStatus nerf) { + int atkModifier; + final Map monsterStati = monster.getStati(); + + MonsterStatusEffect atkBuff = monsterStati.get(buff); + if (atkBuff != null) { + atkModifier = atkBuff.getStati().get(buff); + } else { + atkModifier = 100; + } + + MonsterStatusEffect atkNerf = monsterStati.get(nerf); + if (atkNerf != null) { + atkModifier -= atkNerf.getStati().get(nerf); + } + + return atkModifier; + } } diff --git a/src/net/server/channel/handlers/NPCTalkHandler.java b/src/net/server/channel/handlers/NPCTalkHandler.java index 64f5a3b7fe..a9165d8ee2 100644 --- a/src/net/server/channel/handlers/NPCTalkHandler.java +++ b/src/net/server/channel/handlers/NPCTalkHandler.java @@ -53,8 +53,7 @@ public final class NPCTalkHandler extends AbstractMaplePacketHandler { if(ServerConstants.USE_DEBUG == true) c.getPlayer().dropMessage(5, "Talking to NPC " + npc.getId()); if (npc.getId() == 9010009) { //is duey - c.getPlayer().setNpcCooldown(currentServerTime()); - DueyProcessor.dueySendTalk(c); + DueyProcessor.dueySendTalk(c, false); } else { if (c.getCM() != null || c.getQM() != null) { c.announce(MaplePacketCreator.enableActions()); diff --git a/src/net/server/channel/handlers/PlayerLoggedinHandler.java b/src/net/server/channel/handlers/PlayerLoggedinHandler.java index 223149d23e..b51161b6ce 100644 --- a/src/net/server/channel/handlers/PlayerLoggedinHandler.java +++ b/src/net/server/channel/handlers/PlayerLoggedinHandler.java @@ -424,22 +424,22 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { ResultSet rs = null; try { con = DatabaseConnection.getConnection(); - ps = con.prepareStatement("SELECT Mesos FROM dueypackages WHERE ReceiverId = ? and Checked = 1"); + ps = con.prepareStatement("SELECT Type FROM dueypackages WHERE ReceiverId = ? AND Checked = 1 ORDER BY Type DESC"); ps.setInt(1, player.getId()); rs = ps.executeQuery(); if (rs.next()) { try { Connection con2 = DatabaseConnection.getConnection(); - pss = con2.prepareStatement("UPDATE dueypackages SET Checked = 0 where ReceiverId = ?"); + pss = con2.prepareStatement("UPDATE dueypackages SET Checked = 0 WHERE ReceiverId = ?"); pss.setInt(1, player.getId()); pss.executeUpdate(); pss.close(); con2.close(); + + c.announce(MaplePacketCreator.sendDueyParcelNotification(rs.getInt("Type") == 1)); } catch (SQLException e) { e.printStackTrace(); } - - c.announce(MaplePacketCreator.sendDueyNotification(false)); } } catch (SQLException e) { e.printStackTrace(); diff --git a/src/net/server/channel/handlers/QuestActionHandler.java b/src/net/server/channel/handlers/QuestActionHandler.java index cd318e042c..50f3547bfb 100644 --- a/src/net/server/channel/handlers/QuestActionHandler.java +++ b/src/net/server/channel/handlers/QuestActionHandler.java @@ -38,13 +38,19 @@ public final class QuestActionHandler extends AbstractMaplePacketHandler { // isNpcNearby credits to GabrielSin private static boolean isNpcNearby(SeekableLittleEndianAccessor slea, MapleCharacter player, MapleQuest quest, int npcId) { - Point playerP = null; + Point playerP; + Point pos = player.getPosition(); if(slea.available() >= 4) { playerP = new Point(slea.readShort(), slea.readShort()); + if (playerP.distance(pos) > 1000) { // thanks Darter (YungMoozi) for reporting unchecked player position + playerP = pos; + } + } else { + playerP = pos; } - if (playerP != null && !quest.isAutoStart() && !quest.isAutoComplete()) { + if (!quest.isAutoStart() && !quest.isAutoComplete()) { MapleNPC npc = player.getMap().getNPCById(npcId); if(npc == null) { return false; diff --git a/src/net/server/channel/handlers/RPSActionHandler.java b/src/net/server/channel/handlers/RPSActionHandler.java new file mode 100644 index 0000000000..f3eea78053 --- /dev/null +++ b/src/net/server/channel/handlers/RPSActionHandler.java @@ -0,0 +1,71 @@ +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import server.minigame.MapleRockPaperScissor; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * @Author Arnah + * @Website http://Vertisy.ca/ + * @since Aug 15, 2016 + */ +public final class RPSActionHandler extends AbstractMaplePacketHandler{ + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c){ + MapleCharacter chr = c.getPlayer(); + MapleRockPaperScissor rps = chr.getRPS(); + + if (c.tryacquireClient()) { + try { + if(slea.available() == 0 || !chr.getMap().containsNPC(9000019)){ + if(rps != null){ + rps.dispose(c); + } + return; + } + final byte mode = slea.readByte(); + switch (mode){ + case 0: // start game + case 5: // retry + if(rps != null){ + rps.reward(c); + } + if(chr.getMeso() >= 1000){ + chr.setRPS(new MapleRockPaperScissor(c, mode)); + }else{ + c.announce(MaplePacketCreator.rpsMesoError(-1)); + } + break; + case 1: // answer + if(rps == null || !rps.answer(c, slea.readByte())){ + c.announce(MaplePacketCreator.rpsMode((byte) 0x0D));// 13 + } + break; + case 2: // time over + if(rps == null || !rps.timeOut(c)){ + c.announce(MaplePacketCreator.rpsMode((byte) 0x0D)); + } + break; + case 3: // continue + if(rps == null || !rps.nextRound(c)){ + c.announce(MaplePacketCreator.rpsMode((byte) 0x0D)); + } + break; + case 4: // leave + if(rps != null){ + rps.dispose(c); + }else{ + c.announce(MaplePacketCreator.rpsMode((byte) 0x0D)); + } + break; + } + } finally { + c.releaseClient(); + } + } + } +} diff --git a/src/net/server/channel/handlers/ScrollHandler.java b/src/net/server/channel/handlers/ScrollHandler.java index 654463ec36..9655473d52 100644 --- a/src/net/server/channel/handlers/ScrollHandler.java +++ b/src/net/server/channel/handlers/ScrollHandler.java @@ -78,17 +78,17 @@ public final class ScrollHandler extends AbstractMaplePacketHandler { if (ItemConstants.isCleanSlate(scroll.getItemId())) { Map eqStats = ii.getEquipStats(toScroll.getItemId()); // clean slate issue found thanks to Masterrulax if (eqStats == null || eqStats.get("tuc") == 0) { - c.announce(MaplePacketCreator.getInventoryFull()); + announceCannotScroll(c, legendarySpirit); return; } } else if (!ItemConstants.isModifierScroll(scroll.getItemId()) && ((Equip) toScroll).getUpgradeSlots() < 1) { - c.announce(MaplePacketCreator.getInventoryFull()); + announceCannotScroll(c, legendarySpirit); // thanks onechord for noticing zero upgrade slots freezing Legendary Scroll UI return; } List scrollReqs = ii.getScrollReqs(scroll.getItemId()); if (scrollReqs.size() > 0 && !scrollReqs.contains(toScroll.getItemId())) { - c.announce(MaplePacketCreator.getInventoryFull()); + announceCannotScroll(c, legendarySpirit); return; } if (whiteScroll) { @@ -100,11 +100,13 @@ public final class ScrollHandler extends AbstractMaplePacketHandler { if (!ItemConstants.isChaosScroll(scroll.getItemId()) && !ItemConstants.isCleanSlate(scroll.getItemId())) { if (!canScroll(scroll.getItemId(), toScroll.getItemId())) { + announceCannotScroll(c, legendarySpirit); return; } } if (ItemConstants.isCleanSlate(scroll.getItemId()) && !ii.canUseCleanSlate(toScroll)) { + announceCannotScroll(c, legendarySpirit); return; } @@ -119,11 +121,13 @@ public final class ScrollHandler extends AbstractMaplePacketHandler { useInventory.lockInventory(); try { if (scroll.getQuantity() < 1) { + announceCannotScroll(c, legendarySpirit); return; } if (whiteScroll && !ItemConstants.isCleanSlate(scroll.getItemId())) { if (wscroll.getQuantity() < 1) { + announceCannotScroll(c, legendarySpirit); return; } @@ -171,7 +175,7 @@ public final class ScrollHandler extends AbstractMaplePacketHandler { mods.add(new ModifyInventory(0, scrolled)); } c.announce(MaplePacketCreator.modifyInventory(true, mods)); - chr.getMap().broadcastMessage(MaplePacketCreator.getScrollEffect(chr.getId(), scrollSuccess, legendarySpirit)); + chr.getMap().broadcastMessage(MaplePacketCreator.getScrollEffect(chr.getId(), scrollSuccess, legendarySpirit, whiteScroll)); if (dst < 0 && (scrollSuccess == Equip.ScrollResult.SUCCESS || scrollSuccess == Equip.ScrollResult.CURSE)) { chr.equipChanged(); } @@ -180,6 +184,14 @@ public final class ScrollHandler extends AbstractMaplePacketHandler { } } } + + private static void announceCannotScroll(MapleClient c, boolean legendarySpirit) { + if (legendarySpirit) { + c.announce(MaplePacketCreator.getScrollEffect(c.getPlayer().getId(), Equip.ScrollResult.FAIL, false, false)); + } else { + c.announce(MaplePacketCreator.getInventoryFull()); + } + } private static boolean canScroll(int scrollid, int itemid) { int sid = scrollid / 100; diff --git a/src/net/server/channel/handlers/SpecialMoveHandler.java b/src/net/server/channel/handlers/SpecialMoveHandler.java index 46e0020c8b..aa0aeb1fa0 100644 --- a/src/net/server/channel/handlers/SpecialMoveHandler.java +++ b/src/net/server/channel/handlers/SpecialMoveHandler.java @@ -101,7 +101,8 @@ public final class SpecialMoveHandler extends AbstractMaplePacketHandler { monster.aggroClearDamages(); monster.aggroMonsterDamage(chr, 1); - // thanks onechord for pointing out Magnet disconnecting the caster (issue would actually happen upon failing to catch mob) + // thanks onechord for pointing out Magnet crashing the caster (issue would actually happen upon failing to catch mob) + // thanks Conrad for noticing Magnet crashing when trying to pull bosses and fixed mobs monster.aggroSwitchController(chr, true); } } diff --git a/src/net/server/channel/handlers/SummonDamageHandler.java b/src/net/server/channel/handlers/SummonDamageHandler.java index 5604eee16a..0cebf49aa2 100644 --- a/src/net/server/channel/handlers/SummonDamageHandler.java +++ b/src/net/server/channel/handlers/SummonDamageHandler.java @@ -25,24 +25,32 @@ import client.MapleCharacter; import client.MapleClient; import client.Skill; import client.SkillFactory; +import client.autoban.AutobanFactory; import client.status.MonsterStatusEffect; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import server.MapleStatEffect; import server.life.MapleMonster; +import server.life.MapleMonsterInformationProvider; import server.maps.MapleSummon; +import tools.FilePrinter; import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; public final class SummonDamageHandler extends AbstractDealDamageHandler { + public final class SummonAttackEntry { private int monsterOid; private int damage; + private boolean magic; - public SummonAttackEntry(int monsterOid, int damage) { + public SummonAttackEntry(int monsterOid, int damage, boolean magic) { this.monsterOid = monsterOid; this.damage = damage; + this.magic = magic; } public int getMonsterOid() { @@ -52,6 +60,10 @@ public final class SummonDamageHandler extends AbstractDealDamageHandler { public int getDamage() { return damage; } + + public boolean isMagic() { + return magic; + } } @Override @@ -79,18 +91,34 @@ public final class SummonDamageHandler extends AbstractDealDamageHandler { slea.skip(8); //Thanks Gerald :D, I failed lol (mob x,y and summon x,y) for (int x = 0; x < numAttacked; x++) { int monsterOid = slea.readInt(); // attacked oid - slea.skip(18); + slea.skip(17); + boolean magic = slea.readByte() != 0; int damage = slea.readInt(); - allDamage.add(new SummonAttackEntry(monsterOid, damage)); + allDamage.add(new SummonAttackEntry(monsterOid, damage, magic)); } player.getMap().broadcastMessage(player, MaplePacketCreator.summonAttack(player.getId(), summon.getObjectId(), direction, allDamage), summon.getPosition()); if (player.getMap().isOwnershipRestricted(player)) { return; } + + Map maxDmgEntries = new HashMap<>(); for (SummonAttackEntry attackEntry : allDamage) { int damage = attackEntry.getDamage(); MapleMonster target = player.getMap().getMonsterByOid(attackEntry.getMonsterOid()); if (target != null) { + Integer maxDmg = maxDmgEntries.get(attackEntry.getMonsterOid()); + if (maxDmg == null) { + maxDmg = calcMaxDamage(summonEffect, player, attackEntry.isMagic()); // thanks Darter (YungMoozi) for reporting unchecked max dmg + maxDmgEntries.put(attackEntry.getMonsterOid(), maxDmg); + } + + if (damage > maxDmg) { + AutobanFactory.DAMAGE_HACK.alert(c.getPlayer(), "Possible packet editing summon damage exploit."); + + FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " used a summon of skillid " + summon.getSkill() + " to attack " + MapleMonsterInformationProvider.getInstance().getMobNameFromId(target.getId()) + " with damage " + damage + " (max: " + maxDmg + ")"); + damage = maxDmg; + } + if (damage > 0 && summonEffect.getMonsterStati().size() > 0) { if (summonEffect.makeChanceResult()) { target.applyStatus(player, new MonsterStatusEffect(summonEffect.getMonsterStati(), summonSkill, null, false), summonEffect.isPoison(), 4000); @@ -100,4 +128,16 @@ public final class SummonDamageHandler extends AbstractDealDamageHandler { } } } -} \ No newline at end of file + + private static int calcMaxDamage(MapleStatEffect summonEffect, MapleCharacter player, boolean magic) { + double maxDamage; + + if (magic) { + maxDamage = player.calculateMaxBaseMagicDamage() * (0.05 * summonEffect.getMatk()); + } else { + maxDamage = player.calculateMaxBaseDamage(player.getTotalWatk()) * (0.021 * summonEffect.getWatk()); + } + + return (int) maxDamage; + } +} diff --git a/src/net/server/channel/handlers/TakeDamageHandler.java b/src/net/server/channel/handlers/TakeDamageHandler.java index 63bb21195b..c1a4cb0ee2 100644 --- a/src/net/server/channel/handlers/TakeDamageHandler.java +++ b/src/net/server/channel/handlers/TakeDamageHandler.java @@ -44,7 +44,6 @@ import java.util.List; import net.AbstractMaplePacketHandler; import client.inventory.manipulator.MapleInventoryManipulator; import server.MapleStatEffect; -import server.life.MapleLifeFactory; import server.life.MapleLifeFactory.loseItem; import server.life.MapleMonster; import server.life.MobAttackInfo; @@ -88,16 +87,6 @@ public final class TakeDamageHandler extends AbstractMaplePacketHandler { } } - if (monsteridfrom == 9300166 && attacker == null) { - if (c.tryacquireClient()) { - try { - attacker = MapleLifeFactory.getMonster(monsteridfrom); - } finally { - c.releaseClient(); - } - } - } - if (attacker != null) { if (attacker.isBuffed(MonsterStatus.NEUTRALISE)) { return; @@ -149,7 +138,7 @@ public final class TakeDamageHandler extends AbstractMaplePacketHandler { map.removeMapObject(attacker); } } - } else { + } else if (damagefrom != 0 || !map.removeSelfDestructive(oid)) { // thanks inhyuk for noticing self-destruct damage not being handled properly return; } } catch(ClassCastException e) { @@ -196,21 +185,23 @@ public final class TakeDamageHandler extends AbstractMaplePacketHandler { } } } + if (damage == -1) { fake = 4020002 + (chr.getJob().getId() / 10 - 40) * 100000; } + if (damage > 0) { + chr.getAutobanManager().resetMisses(); + } else { + chr.getAutobanManager().addMiss(); + } + //in dojo player cannot use pot, so deadly attacks should be turned off as well if(is_deadly && chr.getMap().isDojoMap() && !ServerConstants.USE_DEADLY_DOJO) { damage = 0; mpattack = 0; } - if (damage == 0) { - chr.getAutobanManager().addMiss(); - } else { - chr.getAutobanManager().resetMisses(); - } if (damage > 0 && !chr.isHidden()) { if (attacker != null) { if (damagefrom == -1) { diff --git a/src/net/server/channel/handlers/UseCashItemHandler.java b/src/net/server/channel/handlers/UseCashItemHandler.java index 2ee9dcac3c..eba9f4be09 100644 --- a/src/net/server/channel/handlers/UseCashItemHandler.java +++ b/src/net/server/channel/handlers/UseCashItemHandler.java @@ -294,11 +294,9 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler { if (item == null) //hack { return; - } else if (item.isUntradeable() || ii.isUnmerchable(item.getItemId())) { - player.dropMessage(1, "You cannot trade this item."); - c.announce(MaplePacketCreator.enableActions()); - return; } + + // thanks Conrad for noticing that untradeable items should be allowed in megas } Server.getInstance().broadcastMessage(c.getWorld(), MaplePacketCreator.itemMegaphone(msg, whisper, c.getChannel(), item)); break; @@ -398,7 +396,7 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler { ii.getItemEffect(itemId).applyTo(player); remove(c, position, itemId); } else if (itemType == 533) { - DueyProcessor.dueySendTalk(c); + DueyProcessor.dueySendTalk(c, true); } else if (itemType == 537) { if (GameConstants.isFreeMarketRoom(player.getMapId())) { player.dropMessage(5, "You cannot use the chalkboard here."); @@ -569,7 +567,7 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler { client.announce(MaplePacketCreator.modifyInventory(true, mods)); ScrollResult scrollResult = scrolled.getLevel() > curlevel ? ScrollResult.SUCCESS : ScrollResult.FAIL; - player.getMap().broadcastMessage(MaplePacketCreator.getScrollEffect(player.getId(), scrollResult, false)); + player.getMap().broadcastMessage(MaplePacketCreator.getScrollEffect(player.getId(), scrollResult, false, false)); if (eSlot < 0 && (scrollResult == ScrollResult.SUCCESS)) { player.equipChanged(); } diff --git a/src/net/server/channel/handlers/UseChairHandler.java b/src/net/server/channel/handlers/UseChairHandler.java index 2b3989d3e7..353b36f087 100644 --- a/src/net/server/channel/handlers/UseChairHandler.java +++ b/src/net/server/channel/handlers/UseChairHandler.java @@ -23,6 +23,7 @@ package net.server.channel.handlers; import client.MapleClient; import client.inventory.MapleInventoryType; +import constants.ItemConstants; import net.AbstractMaplePacketHandler; import tools.data.input.SeekableLittleEndianAccessor; @@ -30,7 +31,9 @@ public final class UseChairHandler extends AbstractMaplePacketHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { int itemId = slea.readInt(); - if (c.getPlayer().getInventory(MapleInventoryType.SETUP).findById(itemId) == null) { + + // thanks Darter (YungMoozi) for reporting unchecked chair item + if (!ItemConstants.isChair(itemId) || c.getPlayer().getInventory(MapleInventoryType.SETUP).findById(itemId) == null) { return; } diff --git a/src/client/command/RegisteredCommand.java b/src/net/server/worker/BossLogWorker.java similarity index 59% rename from src/client/command/RegisteredCommand.java rename to src/net/server/worker/BossLogWorker.java index 6bbe94e184..0711e9d3b4 100644 --- a/src/client/command/RegisteredCommand.java +++ b/src/net/server/worker/BossLogWorker.java @@ -1,5 +1,5 @@ /* - This file is part of the HeavenMS MapleStory Server, commands OdinMS-based + This file is part of the HeavenMS MapleStory Server Copyleft (L) 2016 - 2018 RonanLana This program is free software: you can redistribute it and/or modify @@ -17,27 +17,17 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ +package net.server.worker; -/* - @Author: Arthur L - Refactored command content into modules -*/ -package client.command; +import server.expeditions.MapleExpeditionBossLog; -class RegisteredCommand { - - private final Class commandClass; - private final int rank; - - RegisteredCommand(Class commandClass, int rank){ - this.commandClass = commandClass; - this.rank = rank; - } - - public Class getCommandClass() { - return commandClass; - } - - public int getRank() { - return rank; +/** + * @author Ronan + */ +public class BossLogWorker implements Runnable { + + @Override + public void run() { + MapleExpeditionBossLog.resetBossLogTable(); } } diff --git a/src/scripting/AbstractPlayerInteraction.java b/src/scripting/AbstractPlayerInteraction.java index 2fe19c8f1f..9d107b28ab 100644 --- a/src/scripting/AbstractPlayerInteraction.java +++ b/src/scripting/AbstractPlayerInteraction.java @@ -1073,12 +1073,12 @@ public class AbstractPlayerInteraction { public boolean createExpedition(MapleExpeditionType type, boolean silent, int minPlayers, int maxPlayers) { MapleExpedition exped = new MapleExpedition(getPlayer(), type, silent, minPlayers, maxPlayers); - return getPlayer().getClient().getChannelServer().addExpedition(exped); + return exped.addChannelExpedition(getPlayer().getClient().getChannelServer()); } public void endExpedition(MapleExpedition exped) { exped.dispose(true); - getPlayer().getClient().getChannelServer().removeExpedition(exped); + exped.removeChannelExpedition(getPlayer().getClient().getChannelServer()); } public MapleExpedition getExpedition(MapleExpeditionType type) { diff --git a/src/scripting/event/EventInstanceManager.java b/src/scripting/event/EventInstanceManager.java index c710dc1f71..9b0048c4a9 100644 --- a/src/scripting/event/EventInstanceManager.java +++ b/src/scripting/event/EventInstanceManager.java @@ -1062,7 +1062,7 @@ public class EventInstanceManager { sL.lock(); try { - em.getChannelServer().removeExpedition(expedition); + expedition.removeChannelExpedition(em.getChannelServer()); } finally { sL.unlock(); } @@ -1127,8 +1127,8 @@ public class EventInstanceManager { if(eventCleared) { if(leavingEventMap && getPlayerCount() <= 1) return true; } else { - if(leavingEventMap && getLeaderId() == quitter.getId()) return true; - if(getPlayerCount() <= (ServerConstants.USE_ENABLE_SOLO_EXPEDITIONS ? 1 : minPlayers)) return true; + // thanks Conrad for noticing expeditions don't need to have neither the leader nor meet the minimum requirement inside the event + if(getPlayerCount() <= 1) return true; } return false; diff --git a/src/server/DueyPackage.java b/src/server/DueyPackage.java index 0aba4868f8..ae61a27e78 100644 --- a/src/server/DueyPackage.java +++ b/src/server/DueyPackage.java @@ -78,6 +78,10 @@ public class DueyPackage { public long sentTimeInMilliseconds() { Calendar cal = Calendar.getInstance(); cal.set(year, month, day); + cal.set(Calendar.HOUR, 0); + cal.set(Calendar.MINUTE, 0); + cal.set(Calendar.SECOND, 0); + cal.set(Calendar.MILLISECOND, 0); return cal.getTimeInMillis(); } diff --git a/src/server/MakerItemFactory.java b/src/server/MakerItemFactory.java index 99c6eda687..bdfaf6a38a 100644 --- a/src/server/MakerItemFactory.java +++ b/src/server/MakerItemFactory.java @@ -57,14 +57,19 @@ public class MakerItemFactory { return makerEntry; } - public static MakerItemCreateEntry generateLeftoverCrystalEntry(int fromLeftoverid) { - MakerItemCreateEntry ret = new MakerItemCreateEntry(0, 0, 1, 1); + public static MakerItemCreateEntry generateLeftoverCrystalEntry(int fromLeftoverid, int crystalId) { + MakerItemCreateEntry ret = new MakerItemCreateEntry(0, 0, 1); ret.addReqItem(fromLeftoverid, 100); + ret.addGainItem(crystalId, 1); return ret; } - public static MakerItemCreateEntry generateDisassemblyCrystalEntry(int cost, int crystalGain) { // equipment at specific position already taken - MakerItemCreateEntry ret = new MakerItemCreateEntry(cost, 0, 1, crystalGain); + public static MakerItemCreateEntry generateDisassemblyCrystalEntry(int fromEquipid, int cost, List> gains) { // equipment at specific position already taken + MakerItemCreateEntry ret = new MakerItemCreateEntry(cost, 0, 1); + ret.addReqItem(fromEquipid, 1); + for (Pair p : gains) { + ret.addGainItem(p.getLeft(), p.getRight()); + } return ret; } @@ -143,33 +148,35 @@ public class MakerItemFactory { private double cost; private int reqCost; private List> reqItems = new ArrayList<>(); // itemId / amount - private int toGive; + private List> gainItems = new ArrayList<>(); // itemId / amount - public MakerItemCreateEntry(int cost, int reqLevel, int reqMakerLevel, int toGive) { + public MakerItemCreateEntry(int cost, int reqLevel, int reqMakerLevel) { this.cost = cost; this.reqLevel = reqLevel; this.reqMakerLevel = reqMakerLevel; - this.toGive = toGive; } public MakerItemCreateEntry(MakerItemCreateEntry mi) { this.cost = mi.cost; this.reqLevel = mi.reqLevel; this.reqMakerLevel = mi.reqMakerLevel; - this.toGive = mi.toGive; for(Pair p : mi.reqItems) { reqItems.add(p); } - } - - public int getRewardAmount() { - return toGive; + + for(Pair p : mi.gainItems) { + gainItems.add(p); + } } public List> getReqItems() { return reqItems; } + + public List> getGainItems() { + return gainItems; + } public int getReqLevel() { return reqLevel; @@ -191,6 +198,10 @@ public class MakerItemFactory { reqItems.add(new Pair<>(itemId, amount)); } + protected void addGainItem(int itemId, int amount) { + gainItems.add(new Pair<>(itemId, amount)); + } + public void trimCost() { reqCost = (int) (cost / 1000); reqCost *= 1000; diff --git a/src/server/MapleItemInformationProvider.java b/src/server/MapleItemInformationProvider.java index 9bd172329f..1547bd0371 100644 --- a/src/server/MapleItemInformationProvider.java +++ b/src/server/MapleItemInformationProvider.java @@ -1968,7 +1968,8 @@ public class MapleItemInformationProvider { } ps.close(); rs.close(); - makerEntry = new MakerItemCreateEntry(cost, reqLevel, reqMakerLevel, toGive); + makerEntry = new MakerItemCreateEntry(cost, reqLevel, reqMakerLevel); + makerEntry.addGainItem(toCreate, toGive); ps = con.prepareStatement("SELECT req_item, count FROM makerrecipedata WHERE itemid = ?"); ps.setInt(1, toCreate); rs = ps.executeQuery(); @@ -2008,17 +2009,18 @@ public class MapleItemInformationProvider { return -1; } - public int getMakerDisassembledQuantity(Integer itemId) { - int avail = 0; + public List> getMakerDisassembledItems(Integer itemId) { + List> items = new LinkedList<>(); + Connection con; try { con = DatabaseConnection.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT count FROM makerrecipedata WHERE itemid = ? AND req_item >= 4260000 AND req_item <= 4260008 ORDER BY count DESC"); + PreparedStatement ps = con.prepareStatement("SELECT req_item, count FROM makerrecipedata WHERE itemid = ? AND req_item >= 4260000 AND req_item < 4270000"); ps.setInt(1, itemId); ResultSet rs = ps.executeQuery(); - if(rs.next()) { - avail = (int) Math.ceil(rs.getInt("count") / 2); // return to the player half of the crystals needed + while (rs.next()) { + items.add(new Pair<>(rs.getInt("req_item"), rs.getInt("count") / 2)); // return to the player half of the crystals needed } rs.close(); @@ -2028,7 +2030,7 @@ public class MapleItemInformationProvider { e.printStackTrace(); } - return avail; + return items; } public int getMakerDisassembledFee(Integer itemId) { diff --git a/src/server/events/RescueGaga.java b/src/server/events/RescueGaga.java index b9dd84b4ab..bd19544754 100644 --- a/src/server/events/RescueGaga.java +++ b/src/server/events/RescueGaga.java @@ -13,57 +13,46 @@ import client.SkillFactory; * @author kevintjuh93 */ public class RescueGaga extends MapleEvents { - private byte fallen; - private int completed; + + private int completed; + + public RescueGaga(int completed) { + super(); + this.completed = completed; + } - public RescueGaga(int completed) { - super(); - this.completed = completed; - this.fallen = 0; - } + public int getCompleted() { + return completed; + } - public int fallAndGet() { - fallen++; - if (fallen > 3) { - fallen = 0; - return 4; - } - return fallen; - } + public void complete() { + completed++; + } - public byte getFallen() { - return fallen; - } - - public int getCompleted() { - return completed; - } - - public void complete() { - completed++; + @Override + public int getInfo() { + return getCompleted(); + } + + public void giveSkill(MapleCharacter chr) { + int skillid = 0; + switch (chr.getJobType()) { + case 0: + skillid = 1013; + break; + case 1: + case 2: + skillid = 10001014; } - public int getInfo() { - return getCompleted(); - } - - public void giveSkill(MapleCharacter chr) { - int skillid = 0; - switch (chr.getJobType()) { - case 0: - skillid = 1013; - break; - case 1: - case 2: - skillid = 10001014; - } - long expiration = (System.currentTimeMillis() + (long) (3600 * 24 * 20 * 1000));//20 days - if (completed < 20) { - chr.changeSkillLevel(SkillFactory.getSkill(skillid), (byte) 1, 1, expiration); - chr.changeSkillLevel(SkillFactory.getSkill(skillid + 1), (byte) 1, 1, expiration); - chr.changeSkillLevel(SkillFactory.getSkill(skillid + 2), (byte) 1, 1, expiration); - } else { - chr.changeSkillLevel(SkillFactory.getSkill(skillid), (byte) 2, 2, chr.getSkillExpiration(skillid)); - } + long expiration = (System.currentTimeMillis() + 3600 * 24 * 20 * 1000);//20 days + if (completed < 20) { + chr.changeSkillLevel(SkillFactory.getSkill(skillid), (byte) 1, 1, expiration); + chr.changeSkillLevel(SkillFactory.getSkill(skillid + 1), (byte) 1, 1, expiration); + chr.changeSkillLevel(SkillFactory.getSkill(skillid + 2), (byte) 1, 1, expiration); + } else { + chr.changeSkillLevel(SkillFactory.getSkill(skillid), (byte) 2, 2, chr.getSkillExpiration(skillid)); } + } + } diff --git a/src/server/expeditions/MapleExpedition.java b/src/server/expeditions/MapleExpedition.java index 5a3c0dab03..fef1ee2f15 100644 --- a/src/server/expeditions/MapleExpedition.java +++ b/src/server/expeditions/MapleExpedition.java @@ -46,6 +46,7 @@ import java.util.Properties; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.MonitoredReentrantLock; import net.server.audit.locks.factory.MonitoredReentrantLockFactory; +import net.server.channel.Channel; /** * @@ -137,7 +138,7 @@ public class MapleExpedition { @Override public void run() { if (registering){ - startMap.getChannelServer().removeExpedition(exped); + exped.removeChannelExpedition(startMap.getChannelServer()); if (!silent) startMap.broadcastMessage(MaplePacketCreator.serverNotice(6, "[Expedition] The time limit has been reached. Expedition has been disbanded.")); dispose(false); @@ -163,6 +164,7 @@ public class MapleExpedition { public void start(){ finishRegistration(); + registerExpeditionAttempt(); broadcastExped(MaplePacketCreator.removeClock()); if (!silent) broadcastExped(MaplePacketCreator.serverNotice(6, "[Expedition] The expedition has started! Good luck, brave heroes!")); startTime = System.currentTimeMillis(); @@ -180,6 +182,11 @@ public class MapleExpedition { return "Sorry, this expedition is full!"; } + int channel = this.getRecruitingMap().getChannelServer().getId(); + if (!MapleExpeditionBossLog.attemptBoss(player.getId(), channel, this, false)) { // thanks Conrad, Cato for noticing some expeditions have entry limit + return "Sorry, you've already reached the quota of attempts for this expedition! Try again another day..."; + } + members.put(player.getId(), player.getName()); player.announce(MaplePacketCreator.getClock((int)(startTime - System.currentTimeMillis()) / 1000)); if (!silent) broadcastExped(MaplePacketCreator.serverNotice(6, "[Expedition] " + player.getName() + " has joined the expedition!")); @@ -202,13 +209,21 @@ public class MapleExpedition { if (!silent) broadcastExped(MaplePacketCreator.serverNotice(6, "[Expedition] " + player.getName() + " has joined the expedition!")); return 0; //"You have registered for the expedition successfully!"; } + + private void registerExpeditionAttempt(){ + int channel = this.getRecruitingMap().getChannelServer().getId(); + for (MapleCharacter chr : getActiveMembers()){ + MapleExpeditionBossLog.attemptBoss(chr.getId(), channel, this, true); + } + } + private void broadcastExped(byte[] packet){ for (MapleCharacter chr : getActiveMembers()){ chr.announce(packet); } } - + public boolean removeMember(MapleCharacter chr) { if(members.remove(chr.getId()) != null) { chr.announce(MaplePacketCreator.removeClock()); @@ -359,6 +374,14 @@ public class MapleExpedition { chr.changeMap(warpTo, toSp); } } + + public final boolean addChannelExpedition(Channel ch) { + return ch.addExpedition(this); + } + + public final void removeChannelExpedition(Channel ch) { + ch.removeExpedition(this); + } public MapleCharacter getLeader(){ return leader; diff --git a/src/server/expeditions/MapleExpeditionBossLog.java b/src/server/expeditions/MapleExpeditionBossLog.java new file mode 100644 index 0000000000..3e4402b102 --- /dev/null +++ b/src/server/expeditions/MapleExpeditionBossLog.java @@ -0,0 +1,205 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2018 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.expeditions; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Timestamp; +import java.util.Calendar; +import java.util.LinkedList; +import java.util.List; +import tools.DatabaseConnection; +import tools.Pair; + +/** + * + * @author Conrad + * @author Ronan + */ +public class MapleExpeditionBossLog { + + public enum BossLogEntry { + ZAKUM(2, 1, false), + HORNTAIL(2, 1, false), + PINKBEAN(1, 1, false), + SCARGA(1, 1, false), + PAPULATUS(2, 1, false); + + private int entries; + private int timeLength; + private int minChannel, maxChannel; + private boolean week; + + private BossLogEntry(int entries, int timeLength, boolean week) { + this(entries, 0, Integer.MAX_VALUE, timeLength, week); + } + + private BossLogEntry(int entries, int minChannel, int maxChannel, int timeLength, boolean week) { + this.entries = entries; + this.minChannel = minChannel; + this.maxChannel = maxChannel; + this.timeLength = timeLength; + this.week = week; + } + + private static List> getBossLogResetTimestamps(Calendar timeNow, boolean week) { + List> resetTimestamps = new LinkedList<>(); + + for (BossLogEntry b : BossLogEntry.values()) { + if (b.week == week) { + Calendar c = (Calendar) timeNow.clone(); + c.roll(Calendar.DAY_OF_MONTH, -1 * (week ? 7 : 1) * b.timeLength); + Timestamp ts = new Timestamp(c.getTime().getTime()); + + resetTimestamps.add(new Pair<>(ts, b)); + } + } + + return resetTimestamps; + } + + private static BossLogEntry getBossEntryByName(String name) { + for (BossLogEntry b : BossLogEntry.values()) { + if (name.contentEquals(b.name())) { + return b; + } + } + + return null; + } + + } + + public static void resetBossLogTable() { + /* + Boss logs resets 12am, weekly thursday 12AM - thanks Smitty Werbenjagermanjensen (superadlez) - https://www.reddit.com/r/Maplestory/comments/61tiup/about_reset_time/ + */ + + Calendar thursday = Calendar.getInstance(); + thursday.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY); + thursday.set(Calendar.HOUR, 0); + thursday.set(Calendar.MINUTE, 0); + thursday.set(Calendar.SECOND, 0); + + Calendar now = Calendar.getInstance(); + + long weekLength = 7 * 24 * 60 * 60 * 1000; + long halfDayLength = 12 * 60 * 60 * 1000; + + long deltaTime = now.getTime().getTime() - thursday.getTime().getTime(); // 2x time: get Date into millis + deltaTime += halfDayLength; + deltaTime %= weekLength; + deltaTime -= halfDayLength; + + if (deltaTime < halfDayLength) { + MapleExpeditionBossLog.resetBossLogTable(true, thursday); + } + + now.set(Calendar.HOUR, 0); + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + + MapleExpeditionBossLog.resetBossLogTable(false, now); + } + + private static void resetBossLogTable(boolean week, Calendar c) { + List> resetTimestamps = BossLogEntry.getBossLogResetTimestamps(c, week); + + try { + Connection con = DatabaseConnection.getConnection(); + + for (Pair p : resetTimestamps) { + PreparedStatement ps = con.prepareStatement("DELETE FROM " + getBossLogTable(week) + " WHERE attempttime <= ? AND bosstype LIKE ?"); + ps.setTimestamp(1, p.getLeft()); + ps.setString(2, p.getRight().name()); + ps.executeUpdate(); + ps.close(); + } + + con.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + private static String getBossLogTable(boolean week) { + return week ? "bosslog_weekly" : "bosslog_daily"; + } + + private static int countPlayerEntries(int cid, BossLogEntry boss) { + int ret_count = 0; + try { + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps; + ps = con.prepareStatement("SELECT COUNT(*) FROM " + getBossLogTable(boss.week) + " WHERE characterid = ? AND bosstype LIKE ?"); + ps.setInt(1, cid); + ps.setString(2, boss.name()); + ResultSet rs = ps.executeQuery(); + if (rs.next()) { + ret_count = rs.getInt(1); + } else { + ret_count = -1; + } + rs.close(); + ps.close(); + con.close(); + return ret_count; + } catch (SQLException e) { + e.printStackTrace(); + return -1; + } + } + + private static void insertPlayerEntry(int cid, BossLogEntry boss) { + try { + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("INSERT INTO " + getBossLogTable(boss.week) + " (characterid, bosstype) VALUES (?,?)"); + ps.setInt(1, cid); + ps.setString(2, boss.name()); + ps.executeUpdate(); + ps.close(); + con.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public static boolean attemptBoss(int cid, int channel, MapleExpedition exped, boolean log) { + BossLogEntry boss = BossLogEntry.getBossEntryByName(exped.getType().name()); + if (boss == null) { + return true; + } + + if (channel < boss.minChannel || channel > boss.maxChannel) { + return false; + } + + if (countPlayerEntries(cid, boss) >= boss.entries) { + return false; + } + + if (log) { + insertPlayerEntry(cid, boss); + } + return true; + } +} diff --git a/src/server/life/MapleMonster.java b/src/server/life/MapleMonster.java index 26a389e837..6df1bd3204 100644 --- a/src/server/life/MapleMonster.java +++ b/src/server/life/MapleMonster.java @@ -415,7 +415,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { */ if (damage > 0) { - this.applyDamage(attacker, damage, stayAlive); + this.applyDamage(attacker, damage, stayAlive, false); if (!this.isAlive()) { // monster just died lastHit = true; } @@ -433,7 +433,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { * @param damage * @param stayAlive */ - private void applyDamage(MapleCharacter from, int damage, boolean stayAlive) { + private void applyDamage(MapleCharacter from, int damage, boolean stayAlive, boolean fake) { Integer trueDamage = applyAndGetHpDamage(damage, stayAlive); if (trueDamage == null) { return; @@ -442,8 +442,11 @@ public class MapleMonster extends AbstractLoadedMapleLife { if (ServerConstants.USE_DEBUG) { from.dropMessage(5, "Hitted MOB " + this.getId() + ", OID " + this.getObjectId()); } - dispatchMonsterDamaged(from, trueDamage); - + + if (!fake) { + dispatchMonsterDamaged(from, trueDamage); + } + if (!takenDamage.containsKey(from.getId())) { takenDamage.put(from.getId(), new AtomicLong(trueDamage)); } else { @@ -453,6 +456,10 @@ public class MapleMonster extends AbstractLoadedMapleLife { broadcastMobHpBar(from); } + public void applyFakeDamage(MapleCharacter from, int damage, boolean stayAlive) { + applyDamage(from, damage, stayAlive, true); + } + public void heal(int hp, int mp) { Integer hpHealed = applyAndGetHpDamage(-hp, false); if (hpHealed == null) { @@ -744,21 +751,6 @@ public class MapleMonster extends AbstractLoadedMapleLife { if (toSpawn.contains(timeMob.getLeft())) { reviveMap.broadcastMessage(MaplePacketCreator.serverNotice(6, timeMob.getRight())); } - - if (timeMob.getLeft() == 9300338 && (reviveMap.getId() >= 922240100 && reviveMap.getId() <= 922240119)) { - if (!reviveMap.containsNPC(9001108)) { - MapleNPC npc = MapleLifeFactory.getNPC(9001108); - npc.setPosition(new Point(172, 9)); - npc.setCy(9); - npc.setRx0(172 + 50); - npc.setRx1(172 - 50); - npc.setFh(27); - reviveMap.addMapObject(npc); - reviveMap.broadcastMessage(MaplePacketCreator.spawnNPC(npc)); - } else { - reviveMap.toggleHiddenNPC(9001108); - } - } } if(toSpawn.size() > 0) { @@ -1621,7 +1613,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { if (damage > 0) { lockMonster(); try { - applyDamage(chr, damage, true); + applyDamage(chr, damage, true, false); } finally { unlockMonster(); } diff --git a/src/server/maps/MapleMap.java b/src/server/maps/MapleMap.java index 2bc9ca9a0c..58c80c194f 100644 --- a/src/server/maps/MapleMap.java +++ b/src/server/maps/MapleMap.java @@ -101,6 +101,7 @@ public class MapleMap { private static final Map> dropBoundsCache = new HashMap<>(100); private Map mapobjects = new LinkedHashMap<>(); + private Set selfDestructives = new LinkedHashSet<>(); private Collection monsterSpawn = Collections.synchronizedList(new LinkedList()); private Collection allMonsterSpawn = Collections.synchronizedList(new LinkedList()); private AtomicInteger spawnedMonstersOnMap = new AtomicInteger(0); @@ -122,6 +123,7 @@ public class MapleMap { private AtomicInteger runningOid = new AtomicInteger(1000000001); private int returnMapId; private int channel, world; + private int seats; private byte monsterRate; private boolean clock; private boolean boat; @@ -132,7 +134,8 @@ public class MapleMap { private MapleMapEffect mapEffect = null; private boolean everlast = false; private int forcedReturnMap = 999999999; - private long timeLimit; + private int timeLimit; + private long mapTimer; private int decHP = 0; private int protectItem = 0; private boolean town; @@ -145,7 +148,6 @@ public class MapleMap { private int fieldLimit = 0; private int mobCapacity = -1; private MapleMonsterAggroCoordinator aggroMonitor = null; // aggroMonitor activity in sync with itemMonitor - private ScheduledFuture mapMonitor = null; private ScheduledFuture itemMonitor = null; private ScheduledFuture expireItemsTask = null; private ScheduledFuture mobSpawnLootTask = null; @@ -307,7 +309,7 @@ public class MapleMap { this.forcedReturnMap = map; } - public long getTimeLimit() { + public int getTimeLimit() { return timeLimit; } @@ -316,7 +318,7 @@ public class MapleMap { } public int getTimeLeft() { - return (int) ((timeLimit - System.currentTimeMillis()) / 1000); + return (int) ((mapTimer - System.currentTimeMillis()) / 1000); } public void setReactorState() { @@ -398,6 +400,16 @@ public class MapleMap { } } + public void addSelfDestructive(MapleMonster mob) { + if (mob.getStats().selfDestruction() != null) { + this.selfDestructives.add(mob.getObjectId()); + } + } + + public boolean removeSelfDestructive(int mapobjectid) { + return this.selfDestructives.remove(mapobjectid); + } + private void spawnAndAddRangedMapObject(MapleMapObject mapobject, DelayedPacketCreation packetbakery) { spawnAndAddRangedMapObject(mapobject, packetbakery, null); } @@ -1331,9 +1343,11 @@ public class MapleMap { } if (monster.isAlive()) { boolean killed = monster.damage(chr, damage, false); - if (monster.getStats().selfDestruction() != null && monster.getStats().selfDestruction().getHp() > -1) {// should work ;p - if (monster.getHp() <= monster.getStats().selfDestruction().getHp()) { - killMonster(monster, chr, true, monster.getStats().selfDestruction().getAction()); + + selfDestruction selfDestr = monster.getStats().selfDestruction(); + if (selfDestr != null && selfDestr.getHp() > -1) {// should work ;p + if (monster.getHp() <= selfDestr.getHp()) { + killMonster(monster, chr, true, selfDestr.getAction()); return true; } } @@ -1907,7 +1921,6 @@ public class MapleMap { spawnAndAddRangedMapObject(monster, new DelayedPacketCreation() { @Override public void sendPackets(MapleClient c) { - c.announce(MaplePacketCreator.spawnMonster(monster, false)); } }); @@ -1919,6 +1932,7 @@ public class MapleMap { } spawnedMonstersOnMap.incrementAndGet(); + addSelfDestructive(monster); applyRemoveAfter(monster); } @@ -2052,6 +2066,7 @@ public class MapleMap { } spawnedMonstersOnMap.incrementAndGet(); + addSelfDestructive(monster); applyRemoveAfter(monster); // thanks LightRyuzaki for pointing issues with spawned CWKPQ mobs not applying this } @@ -2088,6 +2103,7 @@ public class MapleMap { } spawnedMonstersOnMap.incrementAndGet(); + addSelfDestructive(monster); applyRemoveAfter(monster); } @@ -2102,6 +2118,7 @@ public class MapleMap { }); spawnedMonstersOnMap.incrementAndGet(); + addSelfDestructive(monster); } public void makeMonsterReal(final MapleMonster monster) { @@ -3812,6 +3829,14 @@ public class MapleMap { public boolean getDocked() { return this.docked; } + + public void setSeats(int seats) { + this.seats = seats; + } + + public int getSeats() { + return seats; + } public void broadcastGMMessage(MapleCharacter source, final byte[] packet, boolean repeatToSource) { broadcastGMMessage(repeatToSource ? null : source, packet, Double.POSITIVE_INFINITY, source.getPosition()); @@ -3904,35 +3929,7 @@ public class MapleMap { this.broadcastMessage(MaplePacketCreator.removeItemFromMap(i.getObjectId(), 0, 0)); } } - - public void addMapTimer(int time) { - timeLimit = System.currentTimeMillis() + (time * 1000); - broadcastMessage(MaplePacketCreator.getClock(time)); - mapMonitor = TimerManager.getInstance().register(new Runnable() { - @Override - public void run() { - if (timeLimit != 0 && timeLimit < System.currentTimeMillis()) { - warpEveryone(getForcedReturnId()); - } - - if (getCharacters().isEmpty()) { - resetReactors(); - killAllMonsters(); - clearDrops(); - timeLimit = 0; - if (mapid >= 922240100 && mapid <= 922240119) { - toggleHiddenNPC(9001108); - } - - if (mapMonitor != null) { - mapMonitor.cancel(true); - mapMonitor = null; - } - } - } - }, 1000); - } - + public void setFieldLimit(int fieldLimit) { this.fieldLimit = fieldLimit; } @@ -4079,7 +4076,7 @@ public class MapleMap { return this.mapid >= 109010000 && this.mapid < 109050000 || this.mapid > 109050001 && this.mapid <= 109090000; } - public void timeMob(int id, String msg) { + public void setTimeMob(int id, String msg) { timeMob = new Pair<>(id, msg); } @@ -4206,8 +4203,8 @@ public class MapleMap { @Override public void monsterDamaged(MapleCharacter from, int trueDmg) { - ht.applyAndGetHpDamage(trueDmg, true); - ht.broadcastMobHpBar(from); + // thanks Halcyon for noticing HT not dropping loots due to propagated damage not registering attacker + ht.applyFakeDamage(from, trueDmg, true); } @Override @@ -4222,7 +4219,9 @@ public class MapleMap { public boolean claimOwnership(MapleCharacter chr) { if (mapOwner == null) { - mapOwner = chr; + this.mapOwner = chr; + chr.setOwnedMap(this); + mapOwnerLastActivityTime = Server.getInstance().getCurrentTime(); getChannelServer().registerOwnedMap(this); @@ -4234,7 +4233,9 @@ public class MapleMap { public boolean unclaimOwnership(MapleCharacter chr) { if (mapOwner == chr) { - mapOwner = null; + this.mapOwner = null; + chr.setOwnedMap(null); + mapOwnerLastActivityTime = Long.MAX_VALUE; getChannelServer().unregisterOwnedMap(this); @@ -4533,11 +4534,6 @@ public class MapleMap { portals.clear(); mapEffect = null; - if(mapMonitor != null) { - mapMonitor.cancel(false); - mapMonitor = null; - } - chrWLock.lock(); try { aggroMonitor.dispose(); diff --git a/src/server/maps/MapleMapFactory.java b/src/server/maps/MapleMapFactory.java index e3c33db3fa..761cda3931 100644 --- a/src/server/maps/MapleMapFactory.java +++ b/src/server/maps/MapleMapFactory.java @@ -172,8 +172,7 @@ public class MapleMapFactory { } MapleData timeMob = infoData.getChildByPath("timeMob"); if (timeMob != null) { - map.timeMob(MapleDataTool.getInt(timeMob.getChildByPath("id")), - MapleDataTool.getString(timeMob.getChildByPath("message"))); + map.setTimeMob(MapleDataTool.getInt(timeMob.getChildByPath("id")), MapleDataTool.getString(timeMob.getChildByPath("message"))); } int bounds[] = new int[4]; @@ -243,6 +242,10 @@ public class MapleMapFactory { map.addMapleArea(new Rectangle(x1, y1, (x2 - x1), (y2 - y1))); } } + if (mapData.getChildByPath("seat") != null) { + int seats = mapData.getChildByPath("seat").getChildren().size(); + map.setSeats(seats); + } if (event == null) { try { Connection con = DatabaseConnection.getConnection(); diff --git a/src/server/maps/MapleMiniDungeon.java b/src/server/maps/MapleMiniDungeon.java index ce2d386ffb..e4b653688f 100644 --- a/src/server/maps/MapleMiniDungeon.java +++ b/src/server/maps/MapleMiniDungeon.java @@ -42,9 +42,9 @@ public class MapleMiniDungeon { int baseMap; long expireTime; - public MapleMiniDungeon(int base, int durationMin) { + public MapleMiniDungeon(int base, long timeLimit) { baseMap = base; - expireTime = durationMin * 60 * 1000; + expireTime = timeLimit * 1000; timeoutTask = TimerManager.getInstance().schedule(new Runnable() { @Override diff --git a/src/server/minigame/MapleRockPaperScissor.java b/src/server/minigame/MapleRockPaperScissor.java new file mode 100644 index 0000000000..16832abcc0 --- /dev/null +++ b/src/server/minigame/MapleRockPaperScissor.java @@ -0,0 +1,84 @@ +package server.minigame; + +import client.MapleClient; +import client.inventory.Item; +import client.inventory.manipulator.MapleInventoryManipulator; +import tools.MaplePacketCreator; +import tools.Randomizer; + +/** + * @Author Arnah + * @Website http://Vertisy.ca/ + * @since Aug 15, 2016 + */ +public class MapleRockPaperScissor{ + + private int round = 0; + private boolean ableAnswer = true; + private boolean win = false; + + public MapleRockPaperScissor(final MapleClient c, final byte mode){ + c.announce(MaplePacketCreator.rpsMode((byte) (9 + mode))); + if(mode == 0){ + c.getPlayer().gainMeso(-1000, true, true, true); + } + } + + public final boolean answer(final MapleClient c, final int answer){ + if(ableAnswer && !win && answer >= 0 && answer <= 2){ + final int response = Randomizer.nextInt(3); + if(response == answer){ + c.announce(MaplePacketCreator.rpsSelection((byte) response, (byte) round)); + // dont do anything. they can still answer once a draw + }else if((answer == 0 && response == 2) || (answer == 1 && response == 0) || (answer == 2 && response == 1)){ // they win + c.announce(MaplePacketCreator.rpsSelection((byte) response, (byte) (round + 1))); + ableAnswer = false; + win = true; + }else{ // they lose + c.announce(MaplePacketCreator.rpsSelection((byte) response, (byte) -1)); + ableAnswer = false; + } + return true; + } + reward(c); + return false; + } + + public final boolean timeOut(final MapleClient c){ + if(ableAnswer && !win){ + ableAnswer = false; + c.announce(MaplePacketCreator.rpsMode((byte) 0x0A)); + return true; + } + reward(c); + return false; + } + + public final boolean nextRound(final MapleClient c){ + if(win){ + round++; + if(round < 10){ + win = false; + ableAnswer = true; + c.announce(MaplePacketCreator.rpsMode((byte) 0x0C)); + return true; + } else { + round = 10; + } + } + reward(c); + return false; + } + + public final void reward(final MapleClient c){ + if(win){ + MapleInventoryManipulator.addFromDrop(c, new Item(4031332 + round, (short) 0, (short) 1), true); + } + c.getPlayer().setRPS(null); + } + + public final void dispose(final MapleClient c){ + reward(c); + c.announce(MaplePacketCreator.rpsMode((byte) 0x0D)); + } +} diff --git a/src/server/partyquest/AriantColiseum.java b/src/server/partyquest/AriantColiseum.java index 02d2d71e27..4032332343 100644 --- a/src/server/partyquest/AriantColiseum.java +++ b/src/server/partyquest/AriantColiseum.java @@ -272,7 +272,7 @@ public class AriantColiseum { } private void enterKingsRoom() { - map.getChannelServer().removeExpedition(exped); + exped.removeChannelExpedition(map.getChannelServer()); cancelAriantSchedules(); for (MapleCharacter chr : map.getAllPlayers()) { diff --git a/src/server/quest/MapleQuest.java b/src/server/quest/MapleQuest.java index 48b1131c4a..369f650273 100644 --- a/src/server/quest/MapleQuest.java +++ b/src/server/quest/MapleQuest.java @@ -73,9 +73,9 @@ public class MapleQuest { private boolean repeatable = false; private String name = "", parent = ""; private final static MapleDataProvider questData = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/Quest.wz")); - private static MapleData questInfo; - private static MapleData questAct; - private static MapleData questReq; + private final static MapleData questInfo = questData.getData("QuestInfo.img"); + private final static MapleData questAct = questData.getData("Act.img"); + private final static MapleData questReq = questData.getData("Check.img"); private MapleQuest(int id) { this.id = (short) id; @@ -186,10 +186,6 @@ public class MapleQuest { public static MapleQuest getInstance(int id) { MapleQuest ret = quests.get(id); if (ret == null) { - questInfo = questData.getData("QuestInfo.img"); - questReq = questData.getData("Check.img"); - questAct = questData.getData("Act.img"); - ret = new MapleQuest(id); quests.put(id, ret); } @@ -590,10 +586,6 @@ public class MapleQuest { } public static void loadAllQuest() { - questInfo = questData.getData("QuestInfo.img"); - questReq = questData.getData("Check.img"); - questAct = questData.getData("Act.img"); - try { for(MapleData quest : questInfo.getChildren()) { int questID = Integer.parseInt(quest.getName()); diff --git a/src/tools/MaplePacketCreator.java b/src/tools/MaplePacketCreator.java index 03cf40c399..284c8599e8 100644 --- a/src/tools/MaplePacketCreator.java +++ b/src/tools/MaplePacketCreator.java @@ -110,6 +110,7 @@ import constants.ServerConstants; import constants.skills.Buccaneer; import constants.skills.Corsair; import constants.skills.ThunderBreaker; +import scripting.npc.NPCConversationManager; import server.maps.AbstractMapleMapObject; /** @@ -479,8 +480,7 @@ public class MaplePacketCreator { equipped.add((Item) item); } } - Collections.sort(equipped); - for (Item item : equipped) { + for (Item item : equipped) { // equipped doesn't actually need sorting, thanks Pllsz addItemInfo(mplew, item); } mplew.writeShort(0); // start of equip cash @@ -1194,7 +1194,7 @@ public class MaplePacketCreator { return mplew.getPacket(); } - public static byte[] removeKite(int objectid, int animationType) { // thanks to Arnah + public static byte[] removeKite(int objectid, int animationType) { // thanks to Arnah (Vertisy) MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.REMOVE_KITE.getValue()); mplew.write(animationType); // 0 is 10/10, 1 just vanishes @@ -2511,25 +2511,14 @@ public class MaplePacketCreator { return mplew.getPacket(); } - public static byte[] getScrollEffect(int chr, ScrollResult scrollSuccess, boolean legendarySpirit) { + public static byte[] getScrollEffect(int chr, ScrollResult scrollSuccess, boolean legendarySpirit, boolean whiteScroll) { // thanks to Rien dev team final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.SHOW_SCROLL_EFFECT.getValue()); mplew.writeInt(chr); - switch (scrollSuccess) { - case SUCCESS: - mplew.writeShort(1); - mplew.writeShort(legendarySpirit ? 1 : 0); - break; - case FAIL: - mplew.writeShort(0); - mplew.writeShort(legendarySpirit ? 1 : 0); - break; - case CURSE: - mplew.write(0); - mplew.write(1); - mplew.writeShort(legendarySpirit ? 1 : 0); - break; - } + mplew.writeBool(scrollSuccess == ScrollResult.SUCCESS); + mplew.writeBool(scrollSuccess == ScrollResult.CURSE); + mplew.writeBool(legendarySpirit); + mplew.writeBool(whiteScroll); return mplew.getPacket(); } @@ -3441,6 +3430,44 @@ public class MaplePacketCreator { mplew.writeInt(0); return mplew.getPacket(); } + + // thanks NPC Quiz packets thanks to Eric + public static byte[] OnAskQuiz(int nSpeakerTypeID, int nSpeakerTemplateID, int nResCode, String sTitle, String sProblemText, String sHintText, int nMinInput, int nMaxInput, int tRemainInitialQuiz) { + MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.NPC_TALK.getValue()); + mplew.write(nSpeakerTypeID); + mplew.writeInt(nSpeakerTemplateID); + mplew.write(0x6); + mplew.write(0); + mplew.write(nResCode); + if (nResCode == 0x0) {//fail has no bytes <3 + mplew.writeMapleAsciiString(sTitle); + mplew.writeMapleAsciiString(sProblemText); + mplew.writeMapleAsciiString(sHintText); + mplew.writeShort(nMinInput); + mplew.writeShort(nMaxInput); + mplew.writeInt(tRemainInitialQuiz); + } + return mplew.getPacket(); + } + + public static byte[] OnAskSpeedQuiz(int nSpeakerTypeID, int nSpeakerTemplateID, int nResCode, int nType, int dwAnswer, int nCorrect, int nRemain, int tRemainInitialQuiz) { + MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.NPC_TALK.getValue()); + mplew.write(nSpeakerTypeID); + mplew.writeInt(nSpeakerTemplateID); + mplew.write(0x7); + mplew.write(0); + mplew.write(nResCode); + if (nResCode == 0x0) {//fail has no bytes <3 + mplew.writeInt(nType); + mplew.writeInt(dwAnswer); + mplew.writeInt(nCorrect); + mplew.writeInt(nRemain); + mplew.writeInt(tRemainInitialQuiz); + } + return mplew.getPacket(); + } public static byte[] showBuffeffect(int cid, int skillid, int effectid) { return showBuffeffect(cid, skillid, effectid, (byte) 3); @@ -4246,7 +4273,7 @@ public class MaplePacketCreator { public static byte[] cancelChair(int id) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.CANCEL_CHAIR.getValue()); - if (id == -1) { + if (id < 0) { mplew.write(0); } else { mplew.write(1); @@ -5414,6 +5441,41 @@ public class MaplePacketCreator { } return mplew.getPacket(); } + + // RPS_GAME packets thanks to Arnah (Vertisy) + public static byte[] openRPSNPC() { + MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.RPS_GAME.getValue()); + mplew.write(8);// open npc + mplew.writeInt(9000019); + return mplew.getPacket(); + } + + public static byte[] rpsMesoError(int mesos) { + MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.RPS_GAME.getValue()); + mplew.write(0x06); + if (mesos != -1) { + mplew.writeInt(mesos); + } + return mplew.getPacket(); + } + + public static byte[] rpsSelection(byte selection, byte answer) { + MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.RPS_GAME.getValue()); + mplew.write(0x0B);// 11l + mplew.write(selection); + mplew.write(answer); + return mplew.getPacket(); + } + + public static byte[] rpsMode(byte mode) { + MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.RPS_GAME.getValue()); + mplew.write(mode); + return mplew.getPacket(); + } public static byte[] fredrickMessage(byte operation) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); @@ -6678,6 +6740,72 @@ public class MaplePacketCreator { mplew.writeShort(quest); return mplew.getPacket(); } + + // MAKER_RESULT packets thanks to Arnah (Vertisy) + public static byte[] makerResult(boolean success, int itemMade, int itemCount, int mesos, List> itemsLost, int catalystID, List INCBuffGems) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MAKER_RESULT.getValue()); + mplew.writeInt(success ? 0 : 1); // 0 = success, 1 = fail + mplew.writeInt(1); // 1 or 2 doesn't matter, same methods + mplew.writeBool(!success); + if (success) { + mplew.writeInt(itemMade); + mplew.writeInt(itemCount); + } + mplew.writeInt(itemsLost.size()); // Loop + for (Pair item : itemsLost) { + mplew.writeInt(item.getLeft()); + mplew.writeInt(item.getRight()); + } + mplew.writeInt(INCBuffGems.size()); + for (Integer gem : INCBuffGems) { + mplew.writeInt(gem); + } + if (catalystID != -1) { + mplew.write(1); // stimulator + mplew.writeInt(catalystID); + } else { + mplew.write(0); + } + + mplew.writeInt(mesos); + return mplew.getPacket(); + } + + public static byte[] makerResultCrystal(int itemIdGained, int itemIdLost) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MAKER_RESULT.getValue()); + mplew.writeInt(0); // Always successful! + mplew.writeInt(3); // Monster Crystal + mplew.writeInt(itemIdGained); + mplew.writeInt(itemIdLost); + return mplew.getPacket(); + } + + public static byte[] makerResultDesynth(int itemId, int mesos, List> itemsGained) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MAKER_RESULT.getValue()); + mplew.writeInt(0); // Always successful! + mplew.writeInt(4); // Mode Desynth + mplew.writeInt(itemId); // Item desynthed + mplew.writeInt(itemsGained.size()); // Loop of items gained, (int, int) + for (Pair item : itemsGained) { + mplew.writeInt(item.getLeft()); + mplew.writeInt(item.getRight()); + } + mplew.writeInt(mesos); // Mesos spent. + return mplew.getPacket(); + } + + public static byte[] makerEnableActions() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MAKER_RESULT.getValue()); + mplew.writeInt(0); // Always successful! + mplew.writeInt(0); // Monster Crystal + mplew.writeInt(0); + mplew.writeInt(0); + return mplew.getPacket(); + } public static byte[] getMultiMegaphone(String[] messages, int channel, boolean showEar) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); @@ -7025,13 +7153,21 @@ public class MaplePacketCreator { mplew.write(remove ? 3 : 4); return mplew.getPacket(); } + + public static byte[] sendDueyParcelReceived(String from, boolean quick) { // thanks inhyuk + MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PARCEL.getValue()); + mplew.write(0x19); + mplew.writeMapleAsciiString(from); + mplew.writeBool(quick); + return mplew.getPacket(); + } - public static byte[] sendDueyNotification(boolean quickDelivery) { + public static byte[] sendDueyParcelNotification(boolean quick) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.PARCEL.getValue()); mplew.write(0x1B); - mplew.writeBool(quickDelivery); // 0 : package received, 1 : quick delivery package - + mplew.writeBool(quick); // 0 : package received, 1 : quick delivery package return mplew.getPacket(); } @@ -7039,7 +7175,7 @@ public class MaplePacketCreator { return sendDuey(operation, null); } - public static byte[] sendDuey(byte operation, List packages) { + public static byte[] sendDuey(int operation, List packages) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.PARCEL.getValue()); mplew.write(operation); @@ -7261,20 +7397,12 @@ public class MaplePacketCreator { return builder.toString(); } - public static byte[] MobDamageMobFriendly(MapleMonster mob, int damage) { + public static byte[] MobDamageMobFriendly(MapleMonster mob, int damage, int remainingHp) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.DAMAGE_MONSTER.getValue()); mplew.writeInt(mob.getObjectId()); mplew.write(1); // direction ? mplew.writeInt(damage); - - mob.applyAndGetHpDamage(damage, false); - int remainingHp = mob.getHp(); - if(remainingHp <= 0) { - remainingHp = 0; - mob.getMap().removeMapObject(mob); - } - mplew.writeInt(remainingHp); mplew.writeInt(mob.getMaxHp()); return mplew.getPacket(); diff --git a/tools/MapleSkillMakerFetcher/lib/MakerData.sql b/tools/MapleSkillMakerFetcher/lib/MakerData.sql index 5100226037..72806f71b6 100644 --- a/tools/MapleSkillMakerFetcher/lib/MakerData.sql +++ b/tools/MapleSkillMakerFetcher/lib/MakerData.sql @@ -62,6 +62,8 @@ INSERT IGNORE INTO `makercreatedata` (`id`, `itemid`, `req_level`, `req_maker_le (0, 4032312, 70, 1, 0, 0, 0, 0, 1, 0), (0, 2041058, 50, 1, 55000, 0, 1122013, 0, 1, 0), (0, 2040727, 50, 1, 55000, 0, 1122013, 0, 1, 0), + (0, 4260007, 105, 3, 2200000, 4001126, 0, 0, 5, 0), + (0, 4260008, 105, 3, 5500000, 4001126, 0, 0, 10, 0), (1, 1002028, 45, 1, 55000, 0, 0, 4130018, 1, 1), (1, 1002085, 45, 1, 50000, 0, 0, 4130018, 1, 1), (1, 1002086, 45, 1, 41000, 0, 0, 4130018, 1, 1), @@ -945,6 +947,10 @@ INSERT IGNORE INTO `makerrecipedata` (`itemid`, `req_item`, `count`) VALUES (2041058, 4000299, 10), (2040727, 4000159, 50), (2040727, 4000299, 10), + (4260007, 4260006, 100), + (4260007, 4001126, 5), + (4260008, 4260007, 50), + (4260008, 4001126, 5), (1002028, 4007001, 5), (1002028, 4260000, 5), (1002085, 4007002, 5), @@ -1790,7 +1796,7 @@ INSERT IGNORE INTO `makerrecipedata` (`itemid`, `req_item`, `count`) VALUES (1372016, 4011002, 3), (1372016, 4260003, 26), (1382008, 4011002, 3), - (1382008, 4260003, 26), + (1382008, 4260004, 26), (1372009, 4011002, 4), (1372009, 4260004, 28), (1382035, 4011002, 4), @@ -2432,7 +2438,7 @@ INSERT IGNORE INTO `makerrecipedata` (`itemid`, `req_item`, `count`) VALUES (1072194, 4260004, 9), (1072195, 4007006, 9), (1072195, 4260004, 9), - (1072213, 4007001, 10), + (1072213, 4007003, 10), (1072213, 4260005, 10), (1072214, 4007002, 10), (1072214, 4260005, 10), diff --git a/tools/MapleSkillbookChanceFetcher/lib/meso_drop_data.sql b/tools/MapleSkillbookChanceFetcher/lib/meso_drop_data.sql deleted file mode 100644 index 41b45f9522..0000000000 --- a/tools/MapleSkillbookChanceFetcher/lib/meso_drop_data.sql +++ /dev/null @@ -1,447 +0,0 @@ - # SQL File autogenerated from the MapleMesoFetcher feature by Ronan Lana. - # Generated data takes into account mob stats such as level and boss for the meso ranges. - # Only mobs with 4 or more items with no meso entry on the DB it was compiled are presented here. - - INSERT IGNORE INTO drop_data (`dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES -(100122, 0, 35, 52, 0, 400000), -(100123, 0, 38, 55, 0, 400000), -(100124, 0, 40, 59, 0, 400000), -(100130, 0, 31, 45, 0, 400000), -(100131, 0, 33, 49, 0, 400000), -(100132, 0, 35, 52, 0, 400000), -(100133, 0, 38, 55, 0, 400000), -(100134, 0, 40, 59, 0, 400000), -(1110130, 0, 49, 72, 0, 400000), -(1140130, 0, 56, 83, 0, 400000), -(2100100, 0, 58, 85, 0, 400000), -(2100101, 0, 60, 88, 0, 400000), -(2100106, 0, 66, 97, 0, 400000), -(2100107, 0, 73, 108, 0, 400000), -(2100108, 0, 78, 115, 0, 400000), -(2110300, 0, 66, 97, 0, 400000), -(2110301, 0, 78, 115, 0, 400000), -(2230105, 0, 64, 94, 0, 400000), -(2230107, 0, 66, 97, 0, 400000), -(2230110, 0, 64, 94, 0, 400000), -(2230111, 0, 66, 97, 0, 400000), -(2230131, 0, 66, 97, 0, 400000), -(3000005, 0, 81, 119, 0, 400000), -(3100101, 0, 86, 127, 0, 400000), -(3100102, 0, 81, 119, 0, 400000), -(3110301, 0, 86, 127, 0, 400000), -(3110302, 0, 95, 140, 0, 400000), -(3110303, 0, 105, 155, 0, 400000), -(3220000, 0, 285, 1400, 0, 400000), -(3220001, 0, 315, 1550, 0, 400000), -(3300000, 0, 81, 119, 0, 400000), -(3300001, 0, 81, 119, 0, 400000), -(3300002, 0, 83, 123, 0, 400000), -(3300003, 0, 86, 127, 0, 400000), -(3300004, 0, 89, 131, 0, 400000), -(3300005, 0, 95, 140, 0, 400000), -(3300006, 0, 95, 140, 0, 400000), -(3300007, 0, 95, 140, 0, 400000), -(3300008, 0, 315, 1550, 0, 400000), -(4110300, 0, 120, 177, 0, 400000), -(4110301, 0, 132, 195, 0, 400000), -(4130103, 0, 423, 2080, 0, 400000), -(4220000, 0, 396, 1950, 0, 400000), -(4230122, 0, 120, 177, 0, 400000), -(4230125, 0, 128, 189, 0, 400000), -(4230400, 0, 132, 195, 0, 400000), -(4230502, 0, 124, 182, 0, 400000), -(4230503, 0, 132, 195, 0, 400000), -(4230504, 0, 132, 195, 0, 400000), -(4230600, 0, 112, 165, 0, 400000), -(4240000, 0, 151, 222, 0, 400000), -(4250000, 0, 120, 177, 0, 400000), -(4250001, 0, 137, 201, 0, 400000), -(5110300, 0, 156, 230, 0, 400000), -(5120500, 0, 190, 280, 0, 400000), -(5120501, 0, 172, 254, 0, 400000), -(5120502, 0, 178, 262, 0, 400000), -(5120505, 0, 203, 299, 0, 400000), -(5120506, 0, 184, 271, 0, 400000), -(5130105, 0, 190, 280, 0, 400000), -(5130108, 0, 196, 289, 0, 400000), -(5220000, 0, 552, 2710, 0, 400000), -(5220002, 0, 468, 2300, 0, 400000), -(5220003, 0, 630, 3090, 0, 400000), -(5220004, 0, 468, 2300, 0, 400000), -(5250000, 0, 184, 271, 0, 400000), -(5250001, 0, 161, 237, 0, 400000), -(5250002, 0, 196, 289, 0, 400000), -(6110300, 0, 255, 377, 0, 400000), -(6130102, 0, 217, 320, 0, 400000), -(6130103, 0, 217, 320, 0, 400000), -(6130203, 0, 217, 320, 0, 400000), -(6130207, 0, 231, 341, 0, 400000), -(6130209, 0, 264, 389, 0, 400000), -(6220000, 0, 765, 3770, 0, 400000), -(6220001, 0, 765, 3770, 0, 400000), -(6230100, 0, 231, 341, 0, 400000), -(6230401, 0, 239, 353, 0, 400000), -(6300005, 0, 765, 3770, 0, 400000), -(6400006, 0, 384, 1890, 0, 400000), -(6400008, 0, 552, 2710, 0, 400000), -(6400009, 0, 552, 2710, 0, 400000), -(7110300, 0, 355, 524, 0, 400000), -(7110301, 0, 332, 490, 0, 400000), -(7120103, 0, 301, 444, 0, 400000), -(7120104, 0, 311, 459, 0, 400000), -(7120106, 0, 355, 524, 0, 400000), -(7120107, 0, 355, 524, 0, 400000), -(7120108, 0, 379, 559, 0, 400000), -(7120109, 0, 405, 597, 0, 400000), -(7130000, 0, 332, 490, 0, 400000), -(7130002, 0, 321, 474, 0, 400000), -(7130003, 0, 367, 541, 0, 400000), -(7130004, 0, 391, 578, 0, 400000), -(7130102, 0, 391, 578, 0, 400000), -(7130103, 0, 332, 490, 0, 400000), -(7130400, 0, 903, 4440, 0, 400000), -(7130401, 0, 903, 4440, 0, 400000), -(7130402, 0, 903, 4440, 0, 400000), -(7130601, 0, 367, 541, 0, 400000), -(7220000, 0, 933, 4590, 0, 400000), -(7220001, 0, 903, 4440, 0, 400000), -(7220002, 0, 1137, 5590, 0, 400000), -(8110300, 0, 418, 617, 0, 400000), -(8120102, 0, 446, 659, 0, 400000), -(8120103, 0, 477, 704, 0, 400000), -(8120104, 0, 509, 752, 0, 400000), -(8120105, 0, 544, 803, 0, 400000), -(8120106, 0, 562, 830, 0, 400000), -(8120107, 0, 562, 830, 0, 400000), -(8140000, 0, 418, 617, 0, 400000), -(8140100, 0, 446, 659, 0, 400000), -(8140511, 0, 581, 871, 0, 400000), -(8140512, 0, 608, 908, 0, 400000), -(8140600, 0, 594, 889, 0, 400000), -(8140702, 0, 637, 946, 0, 400000), -(8140703, 0, 666, 986, 0, 400000), -(8141300, 0, 622, 927, 0, 400000), -(8150000, 0, 2142, 10490, 0, 400000), -(8150100, 0, 714, 1049, 0, 400000), -(8150101, 0, 747, 1093, 0, 400000), -(8150200, 0, 714, 1049, 0, 400000), -(8150201, 0, 800, 1162, 0, 400000), -(8150300, 0, 666, 986, 0, 400000), -(8150301, 0, 730, 1070, 0, 400000), -(8150302, 0, 764, 1115, 0, 400000), -(8190001, 0, 800, 1162, 0, 400000), -(8220003, 0, 3381, 15830, 0, 400000), -(8220005, 0, 4350, 19860, 0, 400000), -(8220006, 0, 5466, 24400, 0, 400000), -(8220007, 0, 1704, 8530, 0, 400000), -(8220009, 0, 1479, 7280, 0, 400000), -(8830000, 0, 2400, 11620, 0, 400000), -(9001009, 0, 1254, 6170, 0, 400000), -(9001011, 0, 95, 140, 0, 400000), -(9200016, 0, 81, 119, 0, 400000), -(9200019, 0, 203, 299, 0, 400000), -(9300011, 0, 109, 160, 0, 400000), -(9300058, 0, 38, 55, 0, 400000), -(9300059, 0, 42, 61, 0, 400000), -(9300060, 0, 120, 177, 0, 400000), -(9300078, 0, 800, 1162, 0, 400000), -(9300080, 0, 282, 416, 0, 400000), -(9300096, 0, 544, 803, 0, 400000), -(9300105, 0, 717, 3530, 0, 400000), -(9300106, 0, 846, 4160, 0, 400000), -(9300127, 0, 81, 119, 0, 400000), -(9300129, 0, 81, 119, 0, 400000), -(9300131, 0, 109, 160, 0, 400000), -(9300132, 0, 81, 119, 0, 400000), -(9300133, 0, 81, 119, 0, 400000), -(9300134, 0, 81, 119, 0, 400000), -(9300136, 0, 243, 1190, 0, 400000), -(9300139, 0, 1296, 6380, 0, 400000), -(9300155, 0, 38, 55, 0, 400000), -(9300160, 0, 396, 1950, 0, 400000), -(9300161, 0, 396, 1950, 0, 400000), -(9300163, 0, 1127, 1583, 0, 400000), -(9300164, 0, 1127, 1583, 0, 400000), -(9300165, 0, 1127, 1583, 0, 400000), -(9300182, 0, 1479, 7280, 0, 400000), -(9300184, 0, 174, 850, 0, 400000), -(9300185, 0, 285, 1400, 0, 400000), -(9300186, 0, 315, 1550, 0, 400000), -(9300187, 0, 336, 1650, 0, 400000), -(9300188, 0, 468, 2300, 0, 400000), -(9300189, 0, 468, 2300, 0, 400000), -(9300190, 0, 552, 2710, 0, 400000), -(9300191, 0, 651, 3200, 0, 400000), -(9300192, 0, 570, 2800, 0, 400000), -(9300193, 0, 630, 3090, 0, 400000), -(9300194, 0, 765, 3770, 0, 400000), -(9300195, 0, 765, 3770, 0, 400000), -(9300196, 0, 765, 3770, 0, 400000), -(9300197, 0, 765, 3770, 0, 400000), -(9300198, 0, 651, 3200, 0, 400000), -(9300199, 0, 903, 4440, 0, 400000), -(9300200, 0, 933, 4590, 0, 400000), -(9300201, 0, 1479, 7280, 0, 400000), -(9300202, 0, 1137, 5590, 0, 400000), -(9300203, 0, 1254, 6170, 0, 400000), -(9300204, 0, 1383, 6810, 0, 400000), -(9300205, 0, 1296, 6380, 0, 400000), -(9300206, 0, 1479, 7280, 0, 400000), -(9300207, 0, 1479, 7280, 0, 400000), -(9300208, 0, 1704, 8530, 0, 400000), -(9300209, 0, 1704, 8530, 0, 400000), -(9300210, 0, 2142, 10490, 0, 400000), -(9300211, 0, 2400, 11620, 0, 400000), -(9300212, 0, 2400, 11620, 0, 400000), -(9300213, 0, 3381, 15830, 0, 400000), -(9300214, 0, 3792, 17550, 0, 400000), -(9300215, 0, 6714, 29370, 0, 400000), -(9300217, 0, 32, 47, 0, 400000), -(9300218, 0, 34, 50, 0, 400000), -(9300219, 0, 34, 50, 0, 400000), -(9300220, 0, 52, 77, 0, 400000), -(9300221, 0, 68, 101, 0, 400000), -(9300222, 0, 75, 111, 0, 400000), -(9300223, 0, 36, 54, 0, 400000), -(9300224, 0, 102, 150, 0, 400000), -(9300225, 0, 102, 150, 0, 400000), -(9300226, 0, 112, 165, 0, 400000), -(9300227, 0, 102, 150, 0, 400000), -(9300228, 0, 146, 215, 0, 400000), -(9300229, 0, 39, 57, 0, 400000), -(9300230, 0, 116, 171, 0, 400000), -(9300231, 0, 137, 201, 0, 400000), -(9300232, 0, 92, 136, 0, 400000), -(9300233, 0, 112, 165, 0, 400000), -(9300234, 0, 86, 127, 0, 400000), -(9300235, 0, 167, 245, 0, 400000), -(9300236, 0, 190, 280, 0, 400000), -(9300237, 0, 210, 309, 0, 400000), -(9300238, 0, 66, 97, 0, 400000), -(9300239, 0, 120, 177, 0, 400000), -(9300240, 0, 132, 195, 0, 400000), -(9300241, 0, 282, 416, 0, 400000), -(9300242, 0, 301, 444, 0, 400000), -(9300243, 0, 190, 280, 0, 400000), -(9300244, 0, 190, 280, 0, 400000), -(9300245, 0, 217, 320, 0, 400000), -(9300246, 0, 231, 341, 0, 400000), -(9300247, 0, 255, 377, 0, 400000), -(9300248, 0, 264, 389, 0, 400000), -(9300249, 0, 301, 444, 0, 400000), -(9300250, 0, 355, 524, 0, 400000), -(9300251, 0, 332, 490, 0, 400000), -(9300252, 0, 132, 195, 0, 400000), -(9300253, 0, 156, 230, 0, 400000), -(9300254, 0, 332, 490, 0, 400000), -(9300255, 0, 141, 208, 0, 400000), -(9300256, 0, 217, 320, 0, 400000), -(9300257, 0, 217, 320, 0, 400000), -(9300258, 0, 255, 377, 0, 400000), -(9300259, 0, 58, 85, 0, 400000), -(9300260, 0, 418, 617, 0, 400000), -(9300261, 0, 544, 803, 0, 400000), -(9300262, 0, 544, 803, 0, 400000), -(9300263, 0, 544, 803, 0, 400000), -(9300264, 0, 764, 1115, 0, 400000), -(9300265, 0, 730, 1070, 0, 400000), -(9300266, 0, 933, 4590, 0, 400000), -(9300267, 0, 1254, 6170, 0, 400000), -(9300268, 0, 933, 4590, 0, 400000), -(9300269, 0, 174, 850, 0, 400000), -(9300270, 0, 418, 617, 0, 400000), -(9300274, 0, 39, 57, 0, 400000), -(9300289, 0, 1704, 8530, 0, 400000), -(9300294, 0, 2142, 10490, 0, 400000), -(9300315, 0, 483, 2370, 0, 400000), -(9300316, 0, 516, 2540, 0, 400000), -(9300317, 0, 552, 2710, 0, 400000), -(9300318, 0, 588, 2890, 0, 400000), -(9300319, 0, 630, 3090, 0, 400000), -(9300320, 0, 672, 3300, 0, 400000), -(9300321, 0, 717, 3530, 0, 400000), -(9300322, 0, 765, 3770, 0, 400000), -(9300332, 0, 112, 165, 0, 400000), -(9300334, 0, 151, 222, 0, 400000), -(9300335, 0, 116, 171, 0, 400000), -(9300336, 0, 137, 201, 0, 400000), -(9300337, 0, 137, 201, 0, 400000), -(9300367, 0, 126, 610, 0, 400000), -(9300368, 0, 174, 850, 0, 400000), -(9300369, 0, 243, 1190, 0, 400000), -(9300370, 0, 336, 1650, 0, 400000), -(9300371, 0, 468, 2300, 0, 400000), -(9300372, 0, 651, 3200, 0, 400000), -(9300373, 0, 903, 4440, 0, 400000), -(9300374, 0, 1254, 6170, 0, 400000), -(9300375, 0, 1704, 8530, 0, 400000), -(9300376, 0, 1704, 8530, 0, 400000), -(9300377, 0, 2691, 12890, 0, 400000), -(9303000, 0, 42, 61, 0, 400000), -(9303001, 0, 42, 61, 0, 400000), -(9303003, 0, 42, 61, 0, 400000), -(9303004, 0, 42, 61, 0, 400000), -(9303005, 0, 71, 104, 0, 400000), -(9303006, 0, 71, 104, 0, 400000), -(9303007, 0, 71, 104, 0, 400000), -(9303008, 0, 71, 104, 0, 400000), -(9303009, 0, 161, 237, 0, 400000), -(9303010, 0, 161, 237, 0, 400000), -(9303011, 0, 161, 237, 0, 400000), -(9303013, 0, 432, 638, 0, 400000), -(9303014, 0, 432, 638, 0, 400000), -(9303016, 0, 432, 638, 0, 400000), -(9400009, 0, 7014, 8225, 0, 400000), -(9400012, 0, 217, 320, 0, 400000), -(9400120, 0, 1911, 9460, 0, 400000), -(9400122, 0, 1911, 9460, 0, 400000), -(9400200, 0, 184, 271, 0, 400000), -(9400203, 0, 112, 165, 0, 400000), -(9400205, 0, 1704, 8530, 0, 400000), -(9400238, 0, 81, 119, 0, 400000), -(9400239, 0, 66, 97, 0, 400000), -(9400241, 0, 38, 55, 0, 400000), -(9400242, 0, 42, 61, 0, 400000), -(9400243, 0, 184, 271, 0, 400000), -(9400244, 0, 210, 309, 0, 400000), -(9400245, 0, 66, 97, 0, 400000), -(9400246, 0, 62, 91, 0, 400000), -(9400247, 0, 81, 119, 0, 400000), -(9400248, 0, 66, 97, 0, 400000), -(9400500, 0, 93, 450, 0, 400000), -(9400501, 0, 35, 52, 0, 400000), -(9400502, 0, 105, 520, 0, 400000), -(9400503, 0, 105, 520, 0, 400000), -(9400504, 0, 31, 45, 0, 400000), -(9400538, 0, 56, 83, 0, 400000), -(9400539, 0, 60, 88, 0, 400000), -(9400540, 0, 68, 101, 0, 400000), -(9400541, 0, 68, 101, 0, 400000), -(9400542, 0, 98, 145, 0, 400000), -(9400543, 0, 116, 171, 0, 400000), -(9400544, 0, 156, 230, 0, 400000), -(9400546, 0, 128, 189, 0, 400000), -(9400547, 0, 73, 108, 0, 400000), -(9400548, 0, 81, 119, 0, 400000), -(9400550, 0, 73, 108, 0, 400000), -(9400556, 0, 60, 88, 0, 400000), -(9400558, 0, 81, 119, 0, 400000), -(9400560, 0, 156, 230, 0, 400000), -(9400561, 0, 217, 320, 0, 400000), -(9400562, 0, 217, 320, 0, 400000), -(9400563, 0, 112, 165, 0, 400000), -(9400565, 0, 60, 88, 0, 400000), -(9400570, 0, 49, 72, 0, 400000), -(9400571, 0, 468, 2300, 0, 400000), -(9400573, 0, 112, 165, 0, 400000), -(9400574, 0, 714, 1049, 0, 400000), -(9400576, 0, 301, 444, 0, 400000), -(9400578, 0, 568, 853, 0, 400000), -(9400579, 0, 714, 1049, 0, 400000), -(9400580, 0, 637, 946, 0, 400000), -(9400581, 0, 418, 617, 0, 400000), -(9400582, 0, 1127, 1583, 0, 400000), -(9400609, 0, 204, 1010, 0, 400000), -(9400612, 0, 204, 1010, 0, 400000), -(9400633, 0, 258, 1270, 0, 400000), -(9400644, 0, 42, 61, 0, 400000), -(9410014, 0, 493, 728, 0, 400000), -(9410015, 0, 1479, 7280, 0, 400000), -(9420507, 0, 146, 215, 0, 400000), -(9420527, 0, 132, 195, 0, 400000), -(9420528, 0, 141, 208, 0, 400000), -(9420529, 0, 167, 245, 0, 400000), -(9420530, 0, 190, 280, 0, 400000), -(9420531, 0, 210, 309, 0, 400000), -(9420532, 0, 210, 309, 0, 400000), -(9420533, 0, 224, 330, 0, 400000), -(9420534, 0, 255, 377, 0, 400000), -(9420535, 0, 282, 416, 0, 400000), -(9420536, 0, 321, 474, 0, 400000), -(9420537, 0, 355, 524, 0, 400000), -(9420538, 0, 446, 659, 0, 400000), -(9420539, 0, 526, 777, 0, 400000), -(9420545, 0, 210, 309, 0, 400000), -(9420550, 0, 210, 309, 0, 400000), -(9500101, 0, 38, 55, 0, 400000), -(9500102, 0, 39, 57, 0, 400000), -(9500103, 0, 49, 72, 0, 400000), -(9500104, 0, 44, 65, 0, 400000), -(9500105, 0, 49, 72, 0, 400000), -(9500106, 0, 62, 91, 0, 400000), -(9500107, 0, 81, 119, 0, 400000), -(9500108, 0, 86, 127, 0, 400000), -(9500109, 0, 86, 127, 0, 400000), -(9500110, 0, 95, 140, 0, 400000), -(9500111, 0, 95, 140, 0, 400000), -(9500112, 0, 95, 140, 0, 400000), -(9500113, 0, 98, 145, 0, 400000), -(9500115, 0, 102, 150, 0, 400000), -(9500116, 0, 112, 165, 0, 400000), -(9500117, 0, 98, 145, 0, 400000), -(9500118, 0, 109, 160, 0, 400000), -(9500119, 0, 109, 160, 0, 400000), -(9500120, 0, 132, 195, 0, 400000), -(9500121, 0, 146, 215, 0, 400000), -(9500122, 0, 151, 222, 0, 400000), -(9500123, 0, 210, 309, 0, 400000), -(9500124, 0, 651, 3200, 0, 400000), -(9500125, 0, 217, 320, 0, 400000), -(9500126, 0, 247, 365, 0, 400000), -(9500127, 0, 273, 402, 0, 400000), -(9500128, 0, 282, 416, 0, 400000), -(9500129, 0, 301, 444, 0, 400000), -(9500130, 0, 903, 4440, 0, 400000), -(9500131, 0, 332, 490, 0, 400000), -(9500132, 0, 355, 524, 0, 400000), -(9500134, 0, 418, 617, 0, 400000), -(9500135, 0, 493, 728, 0, 400000), -(9500136, 0, 682, 1006, 0, 400000), -(9500137, 0, 637, 946, 0, 400000), -(9500138, 0, 568, 853, 0, 400000), -(9500139, 0, 1254, 6170, 0, 400000), -(9500140, 0, 2142, 10490, 0, 400000), -(9500156, 0, 146, 215, 0, 400000), -(9500157, 0, 95, 140, 0, 400000), -(9500158, 0, 903, 4440, 0, 400000), -(9500159, 0, 903, 4440, 0, 400000), -(9500160, 0, 903, 4440, 0, 400000), -(9500161, 0, 418, 617, 0, 400000), -(9500162, 0, 418, 617, 0, 400000), -(9500163, 0, 461, 681, 0, 400000), -(9500164, 0, 544, 803, 0, 400000), -(9500165, 0, 544, 803, 0, 400000), -(9500166, 0, 544, 803, 0, 400000), -(9500178, 0, 112, 165, 0, 400000), -(9500180, 0, 1704, 8530, 0, 400000), -(9500181, 0, 1704, 8530, 0, 400000), -(9500306, 0, 174, 850, 0, 400000), -(9500307, 0, 285, 1400, 0, 400000), -(9500308, 0, 468, 2300, 0, 400000), -(9500309, 0, 552, 2710, 0, 400000), -(9500310, 0, 630, 3090, 0, 400000), -(9500311, 0, 765, 3770, 0, 400000), -(9500312, 0, 903, 4440, 0, 400000), -(9500313, 0, 933, 4590, 0, 400000), -(9500314, 0, 1137, 5590, 0, 400000), -(9500317, 0, 126, 610, 0, 400000), -(9500318, 0, 336, 1650, 0, 400000), -(9500319, 0, 903, 4440, 0, 400000), -(9500321, 0, 42, 61, 0, 400000), -(9500326, 0, 396, 1950, 0, 400000), -(9500327, 0, 243, 1190, 0, 400000), -(9500328, 0, 285, 1400, 0, 400000), -(9500331, 0, 552, 2710, 0, 400000), -(9500332, 0, 396, 1950, 0, 400000), -(9500333, 0, 468, 2300, 0, 400000), -(9500334, 0, 552, 2710, 0, 400000), -(9500335, 0, 468, 2300, 0, 400000), -(9500366, 0, 49, 72, 0, 400000), -(9500367, 0, 49, 72, 0, 400000), -(9500368, 0, 49, 72, 0, 400000), -(9500369, 0, 49, 72, 0, 400000), -(9500370, 0, 49, 72, 0, 400000), -(9500371, 0, 49, 72, 0, 400000), -(9500372, 0, 49, 72, 0, 400000); - - DELETE FROM drop_data WHERE dropperid >= 9300184 AND dropperid <= 9300215 AND itemid = 0; diff --git a/tools/MapleSkillbookChanceFetcher/lib/skillbook_drop_data.sql b/tools/MapleSkillbookChanceFetcher/lib/skillbook_drop_data.sql index 8dc97ded65..01a6890faf 100644 --- a/tools/MapleSkillbookChanceFetcher/lib/skillbook_drop_data.sql +++ b/tools/MapleSkillbookChanceFetcher/lib/skillbook_drop_data.sql @@ -3,525 +3,525 @@ REPLACE INTO drop_data (`dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES (851000, 2290132, 1, 1, 0, 3861), -(7090000, 2290087, 1, 1, 0, 40000), -(8090000, 2290045, 1, 1, 0, 40000), -(8140103, 2290044, 1, 1, 0, 2000), -(8140511, 2290009, 1, 1, 0, 2000), -(8140511, 2290050, 1, 1, 0, 2000), -(8140511, 2290083, 1, 1, 0, 2000), -(8140511, 2290134, 1, 1, 0, 6000), -(8140512, 2290013, 1, 1, 0, 2000), -(8140512, 2290067, 1, 1, 0, 2000), -(8140512, 2290082, 1, 1, 0, 2000), -(8140512, 2290097, 1, 1, 0, 2000), -(8140512, 2290116, 1, 1, 0, 2000), -(8140512, 2290131, 1, 1, 0, 6000), -(8140600, 2290132, 1, 1, 0, 6000), -(8140700, 2290106, 1, 1, 0, 2000), -(8140700, 2290126, 1, 1, 0, 6000), -(8140701, 2290122, 1, 1, 0, 2000), -(8140702, 2290112, 1, 1, 0, 2000), -(8140703, 2290088, 1, 1, 0, 2000), -(8140703, 2290099, 1, 1, 0, 2000), -(8141000, 2290082, 1, 1, 0, 2000), -(8141000, 2290097, 1, 1, 0, 2000), -(8141100, 2280005, 1, 1, 0, 2000), -(8141300, 2290098, 1, 1, 0, 2000), -(8142100, 2290032, 1, 1, 0, 2000), -(8142100, 2290082, 1, 1, 0, 2000), -(8142100, 2290114, 1, 1, 0, 2000), -(8143000, 2280004, 1, 1, 0, 2000), -(8150000, 2280013, 1, 1, 0, 120000), -(8150000, 2290070, 1, 1, 0, 40000), -(8150000, 2290091, 1, 1, 0, 40000), -(8150100, 2290042, 1, 1, 0, 2000), -(8150100, 2290053, 1, 1, 0, 2000), -(8150100, 2290073, 1, 1, 0, 2000), -(8150100, 2290102, 1, 1, 0, 2000), -(8150100, 2290118, 1, 1, 0, 2000), -(8150101, 2290017, 1, 1, 0, 2000), -(8150101, 2290021, 1, 1, 0, 2000), -(8150101, 2290035, 1, 1, 0, 2000), -(8150101, 2290042, 1, 1, 0, 2000), -(8150101, 2290052, 1, 1, 0, 2000), -(8150101, 2290102, 1, 1, 0, 2000), -(8150200, 2290024, 1, 1, 0, 2000), -(8150200, 2290100, 1, 1, 0, 2000), -(8150200, 2290135, 1, 1, 0, 6000), -(8150201, 2290004, 1, 1, 0, 2000), -(8150201, 2290006, 1, 1, 0, 2000), -(8150201, 2290024, 1, 1, 0, 2000), -(8150201, 2290036, 1, 1, 0, 2000), -(8150201, 2290056, 1, 1, 0, 2000), -(8150201, 2290072, 1, 1, 0, 2000), -(8150201, 2290078, 1, 1, 0, 2000), -(8150201, 2290117, 1, 1, 0, 2000), -(8150300, 2290003, 1, 1, 0, 2000), -(8150300, 2290033, 1, 1, 0, 2000), -(8150300, 2290111, 1, 1, 0, 2000), -(8150300, 2290120, 1, 1, 0, 2000), -(8150300, 2290127, 1, 1, 0, 6000), -(8150301, 2290023, 1, 1, 0, 2000), -(8150301, 2290029, 1, 1, 0, 2000), -(8150301, 2290101, 1, 1, 0, 2000), -(8150301, 2290107, 1, 1, 0, 2000), -(8150302, 2290010, 1, 1, 0, 2000), -(8150302, 2290019, 1, 1, 0, 2000), -(8150302, 2290026, 1, 1, 0, 2000), -(8150302, 2290076, 1, 1, 0, 2000), -(8150302, 2290085, 1, 1, 0, 2000), -(8150302, 2290096, 1, 1, 0, 2000), -(8150302, 2290113, 1, 1, 0, 2000), -(8150302, 2290119, 1, 1, 0, 2000), -(8150302, 2290128, 1, 1, 0, 6000), -(8160000, 2290017, 1, 1, 0, 2000), -(8160000, 2290045, 1, 1, 0, 2000), -(8160000, 2290065, 1, 1, 0, 2000), -(8160000, 2290067, 1, 1, 0, 2000), -(8160000, 2290081, 1, 1, 0, 2000), -(8170000, 2290012, 1, 1, 0, 2000), -(8170000, 2290086, 1, 1, 0, 2000), -(8170000, 2290087, 1, 1, 0, 2000), -(8170000, 2290134, 1, 1, 0, 6000), -(8180000, 2290002, 1, 1, 0, 40000), -(8180000, 2290003, 1, 1, 0, 40000), -(8180000, 2290014, 1, 1, 0, 40000), -(8180000, 2290015, 1, 1, 0, 40000), -(8180000, 2290030, 1, 1, 0, 40000), -(8180000, 2290035, 1, 1, 0, 40000), -(8180000, 2290036, 1, 1, 0, 40000), -(8180000, 2290063, 1, 1, 0, 40000), -(8180000, 2290080, 1, 1, 0, 40000), -(8180000, 2290098, 1, 1, 0, 40000), -(8180000, 2290101, 1, 1, 0, 40000), -(8180000, 2290117, 1, 1, 0, 40000), -(8180000, 2290130, 1, 1, 0, 120000), -(8180001, 2290018, 1, 1, 0, 40000), -(8180001, 2290019, 1, 1, 0, 40000), -(8180001, 2290032, 1, 1, 0, 40000), -(8180001, 2290042, 1, 1, 0, 40000), -(8180001, 2290058, 1, 1, 0, 40000), -(8180001, 2290059, 1, 1, 0, 40000), -(8180001, 2290068, 1, 1, 0, 40000), -(8180001, 2290069, 1, 1, 0, 40000), -(8180001, 2290072, 1, 1, 0, 40000), -(8180001, 2290092, 1, 1, 0, 40000), -(8180001, 2290099, 1, 1, 0, 40000), -(8180001, 2290100, 1, 1, 0, 40000), -(8180001, 2290102, 1, 1, 0, 40000), -(8180001, 2290119, 1, 1, 0, 40000), -(8180001, 2290128, 1, 1, 0, 120000), -(8190000, 2280016, 1, 1, 0, 6000), -(8190000, 2290030, 1, 1, 0, 2000), -(8190000, 2290044, 1, 1, 0, 2000), -(8190000, 2290054, 1, 1, 0, 2000), -(8190000, 2290066, 1, 1, 0, 2000), -(8190000, 2290075, 1, 1, 0, 2000), -(8190000, 2290092, 1, 1, 0, 2000), -(8190000, 2290103, 1, 1, 0, 2000), -(8190002, 2290000, 1, 1, 0, 2000), -(8190002, 2290008, 1, 1, 0, 2000), -(8190002, 2290018, 1, 1, 0, 2000), -(8190002, 2290038, 1, 1, 0, 2000), -(8190002, 2290060, 1, 1, 0, 2000), -(8190002, 2290080, 1, 1, 0, 2000), -(8190002, 2290124, 1, 1, 0, 2000), -(8190003, 2280013, 1, 1, 0, 6000), -(8190003, 2290007, 1, 1, 0, 2000), -(8190003, 2290012, 1, 1, 0, 2000), -(8190003, 2290014, 1, 1, 0, 2000), -(8190003, 2290033, 1, 1, 0, 2000), -(8190003, 2290045, 1, 1, 0, 2000), -(8190003, 2290050, 1, 1, 0, 2000), -(8190003, 2290055, 1, 1, 0, 2000), -(8190003, 2290062, 1, 1, 0, 2000), -(8190003, 2290063, 1, 1, 0, 2000), -(8190003, 2290070, 1, 1, 0, 2000), -(8190003, 2290086, 1, 1, 0, 2000), -(8190003, 2290108, 1, 1, 0, 2000), -(8190003, 2290133, 1, 1, 0, 6000), -(8190004, 2290002, 1, 1, 0, 2000), -(8190004, 2290009, 1, 1, 0, 2000), -(8190004, 2290021, 1, 1, 0, 2000), -(8190004, 2290034, 1, 1, 0, 2000), -(8190004, 2290041, 1, 1, 0, 2000), -(8190004, 2290052, 1, 1, 0, 2000), -(8190004, 2290053, 1, 1, 0, 2000), -(8190004, 2290058, 1, 1, 0, 2000), -(8190004, 2290068, 1, 1, 0, 2000), -(8190004, 2290071, 1, 1, 0, 2000), -(8190004, 2290073, 1, 1, 0, 2000), -(8190004, 2290090, 1, 1, 0, 2000), -(8190004, 2290112, 1, 1, 0, 2000), -(8190004, 2290121, 1, 1, 0, 2000), -(8190004, 2290130, 1, 1, 0, 6000), -(8190005, 2290000, 1, 1, 0, 2000), -(8190005, 2290008, 1, 1, 0, 2000), -(8190005, 2290018, 1, 1, 0, 2000), -(8190005, 2290038, 1, 1, 0, 2000), -(8190005, 2290060, 1, 1, 0, 2000), -(8190005, 2290080, 1, 1, 0, 2000), -(8190005, 2290124, 1, 1, 0, 2000), -(8200000, 2290005, 1, 1, 0, 2000), -(8200000, 2290011, 1, 1, 0, 2000), -(8200000, 2290114, 1, 1, 0, 2000), -(8200001, 2280015, 1, 1, 0, 6000), -(8200001, 2290050, 1, 1, 0, 2000), -(8200001, 2290059, 1, 1, 0, 2000), -(8200001, 2290065, 1, 1, 0, 2000), -(8200001, 2290129, 1, 1, 0, 6000), -(8200002, 2290062, 1, 1, 0, 2000), -(8200002, 2290066, 1, 1, 0, 2000), -(8200002, 2290070, 1, 1, 0, 2000), -(8200002, 2290131, 1, 1, 0, 6000), -(8200002, 2290139, 1, 1, 0, 6000), -(8200003, 2290012, 1, 1, 0, 2000), -(8200003, 2290056, 1, 1, 0, 2000), -(8200003, 2290071, 1, 1, 0, 2000), -(8200003, 2290101, 1, 1, 0, 2000), -(8200003, 2290136, 1, 1, 0, 6000), -(8200004, 2280016, 1, 1, 0, 6000), -(8200004, 2290069, 1, 1, 0, 2000), -(8200004, 2290072, 1, 1, 0, 2000), -(8200004, 2290073, 1, 1, 0, 2000), -(8200004, 2290127, 1, 1, 0, 6000), -(8200004, 2290134, 1, 1, 0, 6000), -(8200005, 2280014, 1, 1, 0, 6000), -(8200005, 2290078, 1, 1, 0, 2000), -(8200005, 2290079, 1, 1, 0, 2000), -(8200005, 2290095, 1, 1, 0, 2000), -(8200006, 2290003, 1, 1, 0, 2000), -(8200006, 2290064, 1, 1, 0, 2000), -(8200006, 2290076, 1, 1, 0, 2000), -(8200006, 2290077, 1, 1, 0, 2000), -(8200006, 2290129, 1, 1, 0, 6000), -(8200006, 2290138, 1, 1, 0, 6000), -(8200007, 2290006, 1, 1, 0, 2000), -(8200007, 2290007, 1, 1, 0, 2000), -(8200007, 2290011, 1, 1, 0, 2000), -(8200007, 2290016, 1, 1, 0, 2000), -(8200007, 2290125, 1, 1, 0, 2000), -(8200007, 2290136, 1, 1, 0, 6000), -(8200008, 2290006, 1, 1, 0, 2000), -(8200008, 2290051, 1, 1, 0, 2000), -(8200008, 2290121, 1, 1, 0, 2000), -(8200008, 2290122, 1, 1, 0, 2000), -(8200008, 2290133, 1, 1, 0, 6000), -(8200009, 2290013, 1, 1, 0, 2000), -(8200009, 2290016, 1, 1, 0, 2000), -(8200009, 2290031, 1, 1, 0, 2000), -(8200009, 2290039, 1, 1, 0, 2000), -(8200010, 2290026, 1, 1, 0, 2000), -(8200010, 2290059, 1, 1, 0, 2000), -(8200010, 2290088, 1, 1, 0, 2000), -(8200010, 2290089, 1, 1, 0, 2000), -(8200010, 2290127, 1, 1, 0, 6000), -(8200011, 2290001, 1, 1, 0, 3000), -(8200011, 2290040, 1, 1, 0, 3000), -(8200011, 2290046, 1, 1, 0, 3000), -(8200011, 2290048, 1, 1, 0, 3000), -(8200011, 2290049, 1, 1, 0, 3000), -(8200011, 2290114, 1, 1, 0, 3000), -(8200011, 2290137, 1, 1, 0, 9000), -(8200012, 2290041, 1, 1, 0, 3000), -(8200012, 2290092, 1, 1, 0, 3000), -(8200012, 2290093, 1, 1, 0, 3000), -(8200012, 2290115, 1, 1, 0, 3000), -(8200012, 2290137, 1, 1, 0, 9000), -(8200012, 2290139, 1, 1, 0, 9000), -(8220002, 2290020, 1, 1, 0, 40000), -(8220002, 2290081, 1, 1, 0, 40000), -(8220002, 2290085, 1, 1, 0, 40000), -(8220002, 2290133, 1, 1, 0, 120000), -(8220003, 2290006, 1, 1, 0, 40000), -(8220003, 2290030, 1, 1, 0, 40000), -(8220003, 2290031, 1, 1, 0, 40000), -(8220003, 2290032, 1, 1, 0, 40000), -(8220003, 2290033, 1, 1, 0, 40000), -(8220003, 2290060, 1, 1, 0, 40000), -(8220003, 2290061, 1, 1, 0, 40000), -(8220003, 2290076, 1, 1, 0, 40000), -(8220003, 2290077, 1, 1, 0, 40000), -(8220003, 2290104, 1, 1, 0, 40000), -(8220003, 2290105, 1, 1, 0, 40000), -(8220003, 2290117, 1, 1, 0, 40000), -(8220003, 2290118, 1, 1, 0, 40000), -(8220004, 2290018, 1, 1, 0, 40000), -(8220004, 2290019, 1, 1, 0, 40000), -(8220004, 2290024, 1, 1, 0, 40000), -(8220004, 2290025, 1, 1, 0, 40000), -(8220004, 2290058, 1, 1, 0, 40000), -(8220004, 2290059, 1, 1, 0, 40000), -(8220004, 2290076, 1, 1, 0, 40000), -(8220004, 2290077, 1, 1, 0, 40000), -(8220004, 2290106, 1, 1, 0, 40000), -(8220004, 2290127, 1, 1, 0, 120000), -(8220004, 2290134, 1, 1, 0, 120000), -(8220005, 2290002, 1, 1, 0, 60000), -(8220005, 2290003, 1, 1, 0, 60000), -(8220005, 2290036, 1, 1, 0, 60000), -(8220005, 2290037, 1, 1, 0, 60000), -(8220005, 2290055, 1, 1, 0, 60000), -(8220005, 2290080, 1, 1, 0, 60000), -(8220005, 2290099, 1, 1, 0, 60000), -(8220005, 2290131, 1, 1, 0, 180000), -(8220005, 2290136, 1, 1, 0, 180000), -(8220006, 2290012, 1, 1, 0, 80000), -(8220006, 2290013, 1, 1, 0, 80000), -(8220006, 2290042, 1, 1, 0, 80000), -(8220006, 2290043, 1, 1, 0, 80000), -(8220006, 2290060, 1, 1, 0, 80000), -(8220006, 2290061, 1, 1, 0, 80000), -(8220006, 2290090, 1, 1, 0, 80000), -(8220006, 2290119, 1, 1, 0, 80000), -(8220006, 2290120, 1, 1, 0, 80000), -(8220006, 2290135, 1, 1, 0, 240000), -(8220006, 2290138, 1, 1, 0, 240000), -(8220007, 2290035, 1, 1, 0, 40000), -(8220007, 2290091, 1, 1, 0, 40000), -(8220007, 2290108, 1, 1, 0, 40000), -(8220009, 2290031, 1, 1, 0, 40000), -(8220009, 2290129, 1, 1, 0, 120000), -(8220015, 2280004, 1, 1, 0, 40000), -(8220015, 2280005, 1, 1, 0, 40000), -(8220015, 2280006, 1, 1, 0, 40000), -(8500002, 2280007, 1, 1, 0, 60000), -(8500002, 2280008, 1, 1, 0, 60000), -(8500002, 2280009, 1, 1, 0, 60000), -(8500002, 2280010, 1, 1, 0, 60000), -(8500002, 2290006, 1, 1, 0, 60000), -(8500002, 2290010, 1, 1, 0, 60000), -(8500002, 2290011, 1, 1, 0, 60000), -(8500002, 2290013, 1, 1, 0, 60000), -(8500002, 2290028, 1, 1, 0, 60000), -(8500002, 2290037, 1, 1, 0, 60000), -(8500002, 2290043, 1, 1, 0, 60000), -(8500002, 2290051, 1, 1, 0, 60000), -(8500002, 2290056, 1, 1, 0, 60000), -(8500002, 2290061, 1, 1, 0, 60000), -(8500002, 2290066, 1, 1, 0, 60000), -(8500002, 2290071, 1, 1, 0, 60000), -(8500002, 2290078, 1, 1, 0, 60000), -(8500002, 2290089, 1, 1, 0, 60000), -(8500002, 2290091, 1, 1, 0, 60000), -(8500002, 2290104, 1, 1, 0, 60000), -(8500002, 2290107, 1, 1, 0, 60000), -(8500002, 2290121, 1, 1, 0, 60000), -(8500002, 2290123, 1, 1, 0, 60000), -(8500002, 2290126, 1, 1, 0, 180000), -(8500002, 2290129, 1, 1, 0, 180000), -(8510000, 2280007, 1, 1, 0, 40000), -(8510000, 2280008, 1, 1, 0, 40000), -(8510000, 2280009, 1, 1, 0, 40000), -(8510000, 2280010, 1, 1, 0, 40000), -(8510000, 2290000, 1, 1, 0, 40000), -(8510000, 2290001, 1, 1, 0, 40000), -(8510000, 2290004, 1, 1, 0, 40000), -(8510000, 2290005, 1, 1, 0, 40000), -(8510000, 2290024, 1, 1, 0, 40000), -(8510000, 2290025, 1, 1, 0, 40000), -(8510000, 2290026, 1, 1, 0, 40000), -(8510000, 2290027, 1, 1, 0, 40000), -(8510000, 2290052, 1, 1, 0, 40000), -(8510000, 2290053, 1, 1, 0, 40000), -(8510000, 2290054, 1, 1, 0, 40000), -(8510000, 2290055, 1, 1, 0, 40000), -(8510000, 2290076, 1, 1, 0, 40000), -(8510000, 2290077, 1, 1, 0, 40000), -(8510000, 2290082, 1, 1, 0, 40000), -(8510000, 2290083, 1, 1, 0, 40000), -(8510000, 2290097, 1, 1, 0, 40000), -(8510000, 2290099, 1, 1, 0, 40000), -(8510000, 2290106, 1, 1, 0, 40000), -(8510000, 2290108, 1, 1, 0, 40000), -(8510000, 2290112, 1, 1, 0, 40000), -(8510000, 2290114, 1, 1, 0, 40000), -(8510000, 2290122, 1, 1, 0, 40000), -(8510000, 2290124, 1, 1, 0, 40000), -(8510000, 2290132, 1, 1, 0, 120000), -(8520000, 2280007, 1, 1, 0, 40000), -(8520000, 2280008, 1, 1, 0, 40000), -(8520000, 2280009, 1, 1, 0, 40000), -(8520000, 2280010, 1, 1, 0, 40000), -(8520000, 2290000, 1, 1, 0, 40000), -(8520000, 2290001, 1, 1, 0, 40000), -(8520000, 2290004, 1, 1, 0, 40000), -(8520000, 2290005, 1, 1, 0, 40000), -(8520000, 2290024, 1, 1, 0, 40000), -(8520000, 2290025, 1, 1, 0, 40000), -(8520000, 2290026, 1, 1, 0, 40000), -(8520000, 2290027, 1, 1, 0, 40000), -(8520000, 2290052, 1, 1, 0, 40000), -(8520000, 2290053, 1, 1, 0, 40000), -(8520000, 2290054, 1, 1, 0, 40000), -(8520000, 2290055, 1, 1, 0, 40000), -(8520000, 2290076, 1, 1, 0, 40000), -(8520000, 2290077, 1, 1, 0, 40000), -(8520000, 2290082, 1, 1, 0, 40000), -(8520000, 2290083, 1, 1, 0, 40000), -(8520000, 2290097, 1, 1, 0, 40000), -(8520000, 2290099, 1, 1, 0, 40000), -(8520000, 2290106, 1, 1, 0, 40000), -(8520000, 2290108, 1, 1, 0, 40000), -(8520000, 2290112, 1, 1, 0, 40000), -(8520000, 2290114, 1, 1, 0, 40000), -(8520000, 2290122, 1, 1, 0, 40000), -(8520000, 2290124, 1, 1, 0, 40000), -(8520000, 2290132, 1, 1, 0, 120000), -(8800002, 2280007, 1, 1, 0, 80000), -(8800002, 2280008, 1, 1, 0, 80000), -(8800002, 2280009, 1, 1, 0, 80000), -(8800002, 2280010, 1, 1, 0, 80000), -(8800002, 2280013, 1, 1, 0, 240000), -(8800002, 2280014, 1, 1, 0, 240000), -(8800002, 2280015, 1, 1, 0, 240000), -(8800002, 2280016, 1, 1, 0, 240000), -(8800002, 2290006, 1, 1, 0, 80000), -(8800002, 2290007, 1, 1, 0, 80000), -(8800002, 2290016, 1, 1, 0, 80000), -(8800002, 2290020, 1, 1, 0, 80000), -(8800002, 2290022, 1, 1, 0, 80000), -(8800002, 2290024, 1, 1, 0, 80000), -(8800002, 2290028, 1, 1, 0, 80000), -(8800002, 2290029, 1, 1, 0, 80000), -(8800002, 2290040, 1, 1, 0, 80000), -(8800002, 2290046, 1, 1, 0, 80000), -(8800002, 2290048, 1, 1, 0, 80000), -(8800002, 2290056, 1, 1, 0, 80000), -(8800002, 2290057, 1, 1, 0, 80000), -(8800002, 2290058, 1, 1, 0, 80000), -(8800002, 2290064, 1, 1, 0, 80000), -(8800002, 2290067, 1, 1, 0, 80000), -(8800002, 2290074, 1, 1, 0, 80000), -(8800002, 2290079, 1, 1, 0, 80000), -(8800002, 2290084, 1, 1, 0, 80000), -(8800002, 2290094, 1, 1, 0, 80000), -(8800002, 2290110, 1, 1, 0, 80000), -(8800002, 2290115, 1, 1, 0, 80000), -(8810018, 2290017, 1, 1, 0, 100000), -(8810018, 2290021, 1, 1, 0, 100000), -(8810018, 2290023, 1, 1, 0, 100000), -(8810018, 2290041, 1, 1, 0, 100000), -(8810018, 2290047, 1, 1, 0, 100000), -(8810018, 2290049, 1, 1, 0, 100000), -(8810018, 2290065, 1, 1, 0, 100000), -(8810018, 2290075, 1, 1, 0, 100000), -(8810018, 2290085, 1, 1, 0, 100000), -(8810018, 2290095, 1, 1, 0, 100000), -(8810018, 2290096, 1, 1, 0, 100000), -(8810018, 2290111, 1, 1, 0, 100000), -(8810018, 2290116, 1, 1, 0, 100000), -(8810018, 2290125, 1, 1, 0, 100000), -(8810018, 2290133, 1, 1, 0, 300000), -(8810018, 2290137, 1, 1, 0, 300000), -(8810018, 2290139, 1, 1, 0, 300000), -(8820000, 2290010, 1, 1, 0, 120000), -(8820000, 2290022, 1, 1, 0, 120000), -(8820000, 2290040, 1, 1, 0, 120000), -(8820000, 2290046, 1, 1, 0, 120000), -(8820000, 2290048, 1, 1, 0, 120000), -(8820000, 2290052, 1, 1, 0, 120000), -(8820000, 2290084, 1, 1, 0, 120000), -(8820000, 2290090, 1, 1, 0, 120000), -(8820000, 2290106, 1, 1, 0, 120000), -(8820000, 2290119, 1, 1, 0, 120000), -(8820001, 2290010, 1, 1, 0, 120000), -(8820001, 2290022, 1, 1, 0, 120000), -(8820001, 2290040, 1, 1, 0, 120000), -(8820001, 2290046, 1, 1, 0, 120000), -(8820001, 2290048, 1, 1, 0, 120000), -(8820001, 2290052, 1, 1, 0, 120000), -(8820001, 2290084, 1, 1, 0, 120000), -(8820001, 2290090, 1, 1, 0, 120000), -(8820001, 2290106, 1, 1, 0, 120000), -(8820001, 2290119, 1, 1, 0, 120000), -(9300028, 2280015, 1, 1, 0, 120000), -(9300028, 2290026, 1, 1, 0, 40000), -(9300028, 2290064, 1, 1, 0, 40000), -(9300028, 2290075, 1, 1, 0, 40000), -(9300028, 2290093, 1, 1, 0, 40000), -(9300028, 2290111, 1, 1, 0, 40000), -(9300094, 2280004, 1, 1, 0, 40000), -(9300094, 2280005, 1, 1, 0, 40000), -(9300094, 2280006, 1, 1, 0, 40000), -(9300095, 2280004, 1, 1, 0, 2000), -(9300095, 2280005, 1, 1, 0, 2000), -(9300095, 2280006, 1, 1, 0, 2000), -(9303016, 2290006, 1, 1, 0, 2000), -(9303016, 2290030, 1, 1, 0, 2000), -(9303016, 2290032, 1, 1, 0, 2000), -(9303016, 2290060, 1, 1, 0, 2000), -(9303016, 2290076, 1, 1, 0, 2000), -(9303016, 2290104, 1, 1, 0, 2000), -(9303016, 2290117, 1, 1, 0, 2000), -(9400014, 2290053, 1, 1, 0, 40000), -(9400014, 2290087, 1, 1, 0, 40000), -(9400014, 2290112, 1, 1, 0, 40000), -(9400014, 2290122, 1, 1, 0, 40000), -(9400120, 2290045, 1, 1, 0, 40000), -(9400121, 2280014, 1, 1, 0, 180000), -(9400121, 2290081, 1, 1, 0, 60000), -(9400121, 2290087, 1, 1, 0, 60000), -(9400121, 2290101, 1, 1, 0, 60000), -(9400121, 2290103, 1, 1, 0, 60000), -(9400122, 2290007, 1, 1, 0, 40000), -(9400122, 2290062, 1, 1, 0, 40000), -(9400122, 2290116, 1, 1, 0, 40000), -(9400300, 2290045, 1, 1, 0, 120000), -(9400300, 2290055, 1, 1, 0, 120000), -(9400300, 2290063, 1, 1, 0, 120000), -(9400300, 2290079, 1, 1, 0, 120000), -(9400300, 2290081, 1, 1, 0, 120000), -(9400300, 2290096, 1, 1, 0, 120000), -(9400514, 2290023, 1, 1, 0, 40000), -(9400514, 2290057, 1, 1, 0, 40000), -(9400514, 2290088, 1, 1, 0, 40000), -(9400514, 2290095, 1, 1, 0, 40000), -(9400514, 2290115, 1, 1, 0, 40000), -(9400514, 2290139, 1, 1, 0, 120000), -(9400549, 2290001, 1, 1, 0, 40000), -(9400549, 2290020, 1, 1, 0, 40000), -(9400549, 2290045, 1, 1, 0, 40000), -(9400549, 2290057, 1, 1, 0, 40000), -(9400549, 2290086, 1, 1, 0, 40000), -(9400575, 2290009, 1, 1, 0, 40000), -(9400575, 2290051, 1, 1, 0, 40000), -(9400575, 2290081, 1, 1, 0, 40000), -(9400575, 2290087, 1, 1, 0, 40000), -(9400575, 2290107, 1, 1, 0, 40000), -(9400575, 2290123, 1, 1, 0, 40000), -(9400580, 2290004, 1, 1, 0, 2000), -(9400580, 2290024, 1, 1, 0, 2000), -(9400580, 2290083, 1, 1, 0, 2000), -(9400580, 2290087, 1, 1, 0, 2000), -(9400580, 2290103, 1, 1, 0, 2000), -(9400580, 2290121, 1, 1, 0, 2000), -(9400582, 2290005, 1, 1, 0, 2000), -(9400582, 2290010, 1, 1, 0, 2000), -(9400582, 2290029, 1, 1, 0, 2000), -(9400582, 2290047, 1, 1, 0, 2000), -(9400582, 2290049, 1, 1, 0, 2000), -(9400582, 2290074, 1, 1, 0, 2000), -(9400582, 2290079, 1, 1, 0, 2000), -(9400582, 2290081, 1, 1, 0, 2000), -(9400582, 2290135, 1, 1, 0, 6000), -(9400590, 2290088, 1, 1, 0, 60000), -(9400590, 2290125, 1, 1, 0, 60000), -(9400590, 2290135, 1, 1, 0, 180000), -(9400591, 2290039, 1, 1, 0, 60000), -(9400591, 2290074, 1, 1, 0, 60000), -(9400591, 2290113, 1, 1, 0, 60000), -(9400592, 2290047, 1, 1, 0, 60000), -(9400592, 2290123, 1, 1, 0, 60000), -(9400592, 2290131, 1, 1, 0, 180000), -(9400593, 2290069, 1, 1, 0, 60000), -(9400593, 2290093, 1, 1, 0, 60000), -(9400593, 2290138, 1, 1, 0, 180000), -(9420513, 2290039, 1, 1, 0, 40000), -(9420513, 2290100, 1, 1, 0, 40000), -(9420513, 2290108, 1, 1, 0, 40000), -(9420513, 2290118, 1, 1, 0, 40000), -(9420513, 2290138, 1, 1, 0, 120000), +(7090000, 2290087, 1, 1, 0, 10000), +(8090000, 2290045, 1, 1, 0, 10000), +(8140103, 2290044, 1, 1, 0, 500), +(8140511, 2290009, 1, 1, 0, 500), +(8140511, 2290050, 1, 1, 0, 500), +(8140511, 2290083, 1, 1, 0, 500), +(8140511, 2290134, 1, 1, 0, 1500), +(8140512, 2290013, 1, 1, 0, 500), +(8140512, 2290067, 1, 1, 0, 500), +(8140512, 2290082, 1, 1, 0, 500), +(8140512, 2290097, 1, 1, 0, 500), +(8140512, 2290116, 1, 1, 0, 500), +(8140512, 2290131, 1, 1, 0, 1500), +(8140600, 2290132, 1, 1, 0, 1500), +(8140700, 2290106, 1, 1, 0, 500), +(8140700, 2290126, 1, 1, 0, 1500), +(8140701, 2290122, 1, 1, 0, 500), +(8140702, 2290112, 1, 1, 0, 500), +(8140703, 2290088, 1, 1, 0, 500), +(8140703, 2290099, 1, 1, 0, 500), +(8141000, 2290082, 1, 1, 0, 500), +(8141000, 2290097, 1, 1, 0, 500), +(8141100, 2280005, 1, 1, 0, 500), +(8141300, 2290098, 1, 1, 0, 500), +(8142100, 2290032, 1, 1, 0, 500), +(8142100, 2290082, 1, 1, 0, 500), +(8142100, 2290114, 1, 1, 0, 500), +(8143000, 2280004, 1, 1, 0, 500), +(8150000, 2280013, 1, 1, 0, 30000), +(8150000, 2290070, 1, 1, 0, 10000), +(8150000, 2290091, 1, 1, 0, 10000), +(8150100, 2290042, 1, 1, 0, 500), +(8150100, 2290053, 1, 1, 0, 500), +(8150100, 2290073, 1, 1, 0, 500), +(8150100, 2290102, 1, 1, 0, 500), +(8150100, 2290118, 1, 1, 0, 500), +(8150101, 2290017, 1, 1, 0, 500), +(8150101, 2290021, 1, 1, 0, 500), +(8150101, 2290035, 1, 1, 0, 500), +(8150101, 2290042, 1, 1, 0, 500), +(8150101, 2290052, 1, 1, 0, 500), +(8150101, 2290102, 1, 1, 0, 500), +(8150200, 2290024, 1, 1, 0, 500), +(8150200, 2290100, 1, 1, 0, 500), +(8150200, 2290135, 1, 1, 0, 1500), +(8150201, 2290004, 1, 1, 0, 500), +(8150201, 2290006, 1, 1, 0, 500), +(8150201, 2290024, 1, 1, 0, 500), +(8150201, 2290036, 1, 1, 0, 500), +(8150201, 2290056, 1, 1, 0, 500), +(8150201, 2290072, 1, 1, 0, 500), +(8150201, 2290078, 1, 1, 0, 500), +(8150201, 2290117, 1, 1, 0, 500), +(8150300, 2290003, 1, 1, 0, 500), +(8150300, 2290033, 1, 1, 0, 500), +(8150300, 2290111, 1, 1, 0, 500), +(8150300, 2290120, 1, 1, 0, 500), +(8150300, 2290127, 1, 1, 0, 1500), +(8150301, 2290023, 1, 1, 0, 500), +(8150301, 2290029, 1, 1, 0, 500), +(8150301, 2290101, 1, 1, 0, 500), +(8150301, 2290107, 1, 1, 0, 500), +(8150302, 2290010, 1, 1, 0, 500), +(8150302, 2290019, 1, 1, 0, 500), +(8150302, 2290026, 1, 1, 0, 500), +(8150302, 2290076, 1, 1, 0, 500), +(8150302, 2290085, 1, 1, 0, 500), +(8150302, 2290096, 1, 1, 0, 500), +(8150302, 2290113, 1, 1, 0, 500), +(8150302, 2290119, 1, 1, 0, 500), +(8150302, 2290128, 1, 1, 0, 1500), +(8160000, 2290017, 1, 1, 0, 500), +(8160000, 2290045, 1, 1, 0, 500), +(8160000, 2290065, 1, 1, 0, 500), +(8160000, 2290067, 1, 1, 0, 500), +(8160000, 2290081, 1, 1, 0, 500), +(8170000, 2290012, 1, 1, 0, 500), +(8170000, 2290086, 1, 1, 0, 500), +(8170000, 2290087, 1, 1, 0, 500), +(8170000, 2290134, 1, 1, 0, 1500), +(8180000, 2290002, 1, 1, 0, 10000), +(8180000, 2290003, 1, 1, 0, 10000), +(8180000, 2290014, 1, 1, 0, 10000), +(8180000, 2290015, 1, 1, 0, 10000), +(8180000, 2290030, 1, 1, 0, 10000), +(8180000, 2290035, 1, 1, 0, 10000), +(8180000, 2290036, 1, 1, 0, 10000), +(8180000, 2290063, 1, 1, 0, 10000), +(8180000, 2290080, 1, 1, 0, 10000), +(8180000, 2290098, 1, 1, 0, 10000), +(8180000, 2290101, 1, 1, 0, 10000), +(8180000, 2290117, 1, 1, 0, 10000), +(8180000, 2290130, 1, 1, 0, 30000), +(8180001, 2290018, 1, 1, 0, 10000), +(8180001, 2290019, 1, 1, 0, 10000), +(8180001, 2290032, 1, 1, 0, 10000), +(8180001, 2290042, 1, 1, 0, 10000), +(8180001, 2290058, 1, 1, 0, 10000), +(8180001, 2290059, 1, 1, 0, 10000), +(8180001, 2290068, 1, 1, 0, 10000), +(8180001, 2290069, 1, 1, 0, 10000), +(8180001, 2290072, 1, 1, 0, 10000), +(8180001, 2290092, 1, 1, 0, 10000), +(8180001, 2290099, 1, 1, 0, 10000), +(8180001, 2290100, 1, 1, 0, 10000), +(8180001, 2290102, 1, 1, 0, 10000), +(8180001, 2290119, 1, 1, 0, 10000), +(8180001, 2290128, 1, 1, 0, 30000), +(8190000, 2280016, 1, 1, 0, 1500), +(8190000, 2290030, 1, 1, 0, 500), +(8190000, 2290044, 1, 1, 0, 500), +(8190000, 2290054, 1, 1, 0, 500), +(8190000, 2290066, 1, 1, 0, 500), +(8190000, 2290075, 1, 1, 0, 500), +(8190000, 2290092, 1, 1, 0, 500), +(8190000, 2290103, 1, 1, 0, 500), +(8190002, 2290000, 1, 1, 0, 500), +(8190002, 2290008, 1, 1, 0, 500), +(8190002, 2290018, 1, 1, 0, 500), +(8190002, 2290038, 1, 1, 0, 500), +(8190002, 2290060, 1, 1, 0, 500), +(8190002, 2290080, 1, 1, 0, 500), +(8190002, 2290124, 1, 1, 0, 500), +(8190003, 2280013, 1, 1, 0, 1500), +(8190003, 2290007, 1, 1, 0, 500), +(8190003, 2290012, 1, 1, 0, 500), +(8190003, 2290014, 1, 1, 0, 500), +(8190003, 2290033, 1, 1, 0, 500), +(8190003, 2290045, 1, 1, 0, 500), +(8190003, 2290050, 1, 1, 0, 500), +(8190003, 2290055, 1, 1, 0, 500), +(8190003, 2290062, 1, 1, 0, 500), +(8190003, 2290063, 1, 1, 0, 500), +(8190003, 2290070, 1, 1, 0, 500), +(8190003, 2290086, 1, 1, 0, 500), +(8190003, 2290108, 1, 1, 0, 500), +(8190003, 2290133, 1, 1, 0, 1500), +(8190004, 2290002, 1, 1, 0, 500), +(8190004, 2290009, 1, 1, 0, 500), +(8190004, 2290021, 1, 1, 0, 500), +(8190004, 2290034, 1, 1, 0, 500), +(8190004, 2290041, 1, 1, 0, 500), +(8190004, 2290052, 1, 1, 0, 500), +(8190004, 2290053, 1, 1, 0, 500), +(8190004, 2290058, 1, 1, 0, 500), +(8190004, 2290068, 1, 1, 0, 500), +(8190004, 2290071, 1, 1, 0, 500), +(8190004, 2290073, 1, 1, 0, 500), +(8190004, 2290090, 1, 1, 0, 500), +(8190004, 2290112, 1, 1, 0, 500), +(8190004, 2290121, 1, 1, 0, 500), +(8190004, 2290130, 1, 1, 0, 1500), +(8190005, 2290000, 1, 1, 0, 500), +(8190005, 2290008, 1, 1, 0, 500), +(8190005, 2290018, 1, 1, 0, 500), +(8190005, 2290038, 1, 1, 0, 500), +(8190005, 2290060, 1, 1, 0, 500), +(8190005, 2290080, 1, 1, 0, 500), +(8190005, 2290124, 1, 1, 0, 500), +(8200000, 2290005, 1, 1, 0, 500), +(8200000, 2290011, 1, 1, 0, 500), +(8200000, 2290114, 1, 1, 0, 500), +(8200001, 2280015, 1, 1, 0, 1500), +(8200001, 2290050, 1, 1, 0, 500), +(8200001, 2290059, 1, 1, 0, 500), +(8200001, 2290065, 1, 1, 0, 500), +(8200001, 2290129, 1, 1, 0, 1500), +(8200002, 2290062, 1, 1, 0, 500), +(8200002, 2290066, 1, 1, 0, 500), +(8200002, 2290070, 1, 1, 0, 500), +(8200002, 2290131, 1, 1, 0, 1500), +(8200002, 2290139, 1, 1, 0, 1500), +(8200003, 2290012, 1, 1, 0, 500), +(8200003, 2290056, 1, 1, 0, 500), +(8200003, 2290071, 1, 1, 0, 500), +(8200003, 2290101, 1, 1, 0, 500), +(8200003, 2290136, 1, 1, 0, 1500), +(8200004, 2280016, 1, 1, 0, 1500), +(8200004, 2290069, 1, 1, 0, 500), +(8200004, 2290072, 1, 1, 0, 500), +(8200004, 2290073, 1, 1, 0, 500), +(8200004, 2290127, 1, 1, 0, 1500), +(8200004, 2290134, 1, 1, 0, 1500), +(8200005, 2280014, 1, 1, 0, 1500), +(8200005, 2290078, 1, 1, 0, 500), +(8200005, 2290079, 1, 1, 0, 500), +(8200005, 2290095, 1, 1, 0, 500), +(8200006, 2290003, 1, 1, 0, 500), +(8200006, 2290064, 1, 1, 0, 500), +(8200006, 2290076, 1, 1, 0, 500), +(8200006, 2290077, 1, 1, 0, 500), +(8200006, 2290129, 1, 1, 0, 1500), +(8200006, 2290138, 1, 1, 0, 1500), +(8200007, 2290006, 1, 1, 0, 500), +(8200007, 2290007, 1, 1, 0, 500), +(8200007, 2290011, 1, 1, 0, 500), +(8200007, 2290016, 1, 1, 0, 500), +(8200007, 2290125, 1, 1, 0, 500), +(8200007, 2290136, 1, 1, 0, 1500), +(8200008, 2290006, 1, 1, 0, 500), +(8200008, 2290051, 1, 1, 0, 500), +(8200008, 2290121, 1, 1, 0, 500), +(8200008, 2290122, 1, 1, 0, 500), +(8200008, 2290133, 1, 1, 0, 1500), +(8200009, 2290013, 1, 1, 0, 500), +(8200009, 2290016, 1, 1, 0, 500), +(8200009, 2290031, 1, 1, 0, 500), +(8200009, 2290039, 1, 1, 0, 500), +(8200010, 2290026, 1, 1, 0, 500), +(8200010, 2290059, 1, 1, 0, 500), +(8200010, 2290088, 1, 1, 0, 500), +(8200010, 2290089, 1, 1, 0, 500), +(8200010, 2290127, 1, 1, 0, 1500), +(8200011, 2290001, 1, 1, 0, 750), +(8200011, 2290040, 1, 1, 0, 750), +(8200011, 2290046, 1, 1, 0, 750), +(8200011, 2290048, 1, 1, 0, 750), +(8200011, 2290049, 1, 1, 0, 750), +(8200011, 2290114, 1, 1, 0, 750), +(8200011, 2290137, 1, 1, 0, 2250), +(8200012, 2290041, 1, 1, 0, 750), +(8200012, 2290092, 1, 1, 0, 750), +(8200012, 2290093, 1, 1, 0, 750), +(8200012, 2290115, 1, 1, 0, 750), +(8200012, 2290137, 1, 1, 0, 2250), +(8200012, 2290139, 1, 1, 0, 2250), +(8220002, 2290020, 1, 1, 0, 10000), +(8220002, 2290081, 1, 1, 0, 10000), +(8220002, 2290085, 1, 1, 0, 10000), +(8220002, 2290133, 1, 1, 0, 30000), +(8220003, 2290006, 1, 1, 0, 10000), +(8220003, 2290030, 1, 1, 0, 10000), +(8220003, 2290031, 1, 1, 0, 10000), +(8220003, 2290032, 1, 1, 0, 10000), +(8220003, 2290033, 1, 1, 0, 10000), +(8220003, 2290060, 1, 1, 0, 10000), +(8220003, 2290061, 1, 1, 0, 10000), +(8220003, 2290076, 1, 1, 0, 10000), +(8220003, 2290077, 1, 1, 0, 10000), +(8220003, 2290104, 1, 1, 0, 10000), +(8220003, 2290105, 1, 1, 0, 10000), +(8220003, 2290117, 1, 1, 0, 10000), +(8220003, 2290118, 1, 1, 0, 10000), +(8220004, 2290018, 1, 1, 0, 10000), +(8220004, 2290019, 1, 1, 0, 10000), +(8220004, 2290024, 1, 1, 0, 10000), +(8220004, 2290025, 1, 1, 0, 10000), +(8220004, 2290058, 1, 1, 0, 10000), +(8220004, 2290059, 1, 1, 0, 10000), +(8220004, 2290076, 1, 1, 0, 10000), +(8220004, 2290077, 1, 1, 0, 10000), +(8220004, 2290106, 1, 1, 0, 10000), +(8220004, 2290127, 1, 1, 0, 30000), +(8220004, 2290134, 1, 1, 0, 30000), +(8220005, 2290002, 1, 1, 0, 15000), +(8220005, 2290003, 1, 1, 0, 15000), +(8220005, 2290036, 1, 1, 0, 15000), +(8220005, 2290037, 1, 1, 0, 15000), +(8220005, 2290055, 1, 1, 0, 15000), +(8220005, 2290080, 1, 1, 0, 15000), +(8220005, 2290099, 1, 1, 0, 15000), +(8220005, 2290131, 1, 1, 0, 45000), +(8220005, 2290136, 1, 1, 0, 45000), +(8220006, 2290012, 1, 1, 0, 20000), +(8220006, 2290013, 1, 1, 0, 20000), +(8220006, 2290042, 1, 1, 0, 20000), +(8220006, 2290043, 1, 1, 0, 20000), +(8220006, 2290060, 1, 1, 0, 20000), +(8220006, 2290061, 1, 1, 0, 20000), +(8220006, 2290090, 1, 1, 0, 20000), +(8220006, 2290119, 1, 1, 0, 20000), +(8220006, 2290120, 1, 1, 0, 20000), +(8220006, 2290135, 1, 1, 0, 60000), +(8220006, 2290138, 1, 1, 0, 60000), +(8220007, 2290035, 1, 1, 0, 10000), +(8220007, 2290091, 1, 1, 0, 10000), +(8220007, 2290108, 1, 1, 0, 10000), +(8220009, 2290031, 1, 1, 0, 10000), +(8220009, 2290129, 1, 1, 0, 30000), +(8220015, 2280004, 1, 1, 0, 10000), +(8220015, 2280005, 1, 1, 0, 10000), +(8220015, 2280006, 1, 1, 0, 10000), +(8500002, 2280007, 1, 1, 0, 15000), +(8500002, 2280008, 1, 1, 0, 15000), +(8500002, 2280009, 1, 1, 0, 15000), +(8500002, 2280010, 1, 1, 0, 15000), +(8500002, 2290006, 1, 1, 0, 15000), +(8500002, 2290010, 1, 1, 0, 15000), +(8500002, 2290011, 1, 1, 0, 15000), +(8500002, 2290013, 1, 1, 0, 15000), +(8500002, 2290028, 1, 1, 0, 15000), +(8500002, 2290037, 1, 1, 0, 15000), +(8500002, 2290043, 1, 1, 0, 15000), +(8500002, 2290051, 1, 1, 0, 15000), +(8500002, 2290056, 1, 1, 0, 15000), +(8500002, 2290061, 1, 1, 0, 15000), +(8500002, 2290066, 1, 1, 0, 15000), +(8500002, 2290071, 1, 1, 0, 15000), +(8500002, 2290078, 1, 1, 0, 15000), +(8500002, 2290089, 1, 1, 0, 15000), +(8500002, 2290091, 1, 1, 0, 15000), +(8500002, 2290104, 1, 1, 0, 15000), +(8500002, 2290107, 1, 1, 0, 15000), +(8500002, 2290121, 1, 1, 0, 15000), +(8500002, 2290123, 1, 1, 0, 15000), +(8500002, 2290126, 1, 1, 0, 45000), +(8500002, 2290129, 1, 1, 0, 45000), +(8510000, 2280007, 1, 1, 0, 10000), +(8510000, 2280008, 1, 1, 0, 10000), +(8510000, 2280009, 1, 1, 0, 10000), +(8510000, 2280010, 1, 1, 0, 10000), +(8510000, 2290000, 1, 1, 0, 10000), +(8510000, 2290001, 1, 1, 0, 10000), +(8510000, 2290004, 1, 1, 0, 10000), +(8510000, 2290005, 1, 1, 0, 10000), +(8510000, 2290024, 1, 1, 0, 10000), +(8510000, 2290025, 1, 1, 0, 10000), +(8510000, 2290026, 1, 1, 0, 10000), +(8510000, 2290027, 1, 1, 0, 10000), +(8510000, 2290052, 1, 1, 0, 10000), +(8510000, 2290053, 1, 1, 0, 10000), +(8510000, 2290054, 1, 1, 0, 10000), +(8510000, 2290055, 1, 1, 0, 10000), +(8510000, 2290076, 1, 1, 0, 10000), +(8510000, 2290077, 1, 1, 0, 10000), +(8510000, 2290082, 1, 1, 0, 10000), +(8510000, 2290083, 1, 1, 0, 10000), +(8510000, 2290097, 1, 1, 0, 10000), +(8510000, 2290099, 1, 1, 0, 10000), +(8510000, 2290106, 1, 1, 0, 10000), +(8510000, 2290108, 1, 1, 0, 10000), +(8510000, 2290112, 1, 1, 0, 10000), +(8510000, 2290114, 1, 1, 0, 10000), +(8510000, 2290122, 1, 1, 0, 10000), +(8510000, 2290124, 1, 1, 0, 10000), +(8510000, 2290132, 1, 1, 0, 30000), +(8520000, 2280007, 1, 1, 0, 10000), +(8520000, 2280008, 1, 1, 0, 10000), +(8520000, 2280009, 1, 1, 0, 10000), +(8520000, 2280010, 1, 1, 0, 10000), +(8520000, 2290000, 1, 1, 0, 10000), +(8520000, 2290001, 1, 1, 0, 10000), +(8520000, 2290004, 1, 1, 0, 10000), +(8520000, 2290005, 1, 1, 0, 10000), +(8520000, 2290024, 1, 1, 0, 10000), +(8520000, 2290025, 1, 1, 0, 10000), +(8520000, 2290026, 1, 1, 0, 10000), +(8520000, 2290027, 1, 1, 0, 10000), +(8520000, 2290052, 1, 1, 0, 10000), +(8520000, 2290053, 1, 1, 0, 10000), +(8520000, 2290054, 1, 1, 0, 10000), +(8520000, 2290055, 1, 1, 0, 10000), +(8520000, 2290076, 1, 1, 0, 10000), +(8520000, 2290077, 1, 1, 0, 10000), +(8520000, 2290082, 1, 1, 0, 10000), +(8520000, 2290083, 1, 1, 0, 10000), +(8520000, 2290097, 1, 1, 0, 10000), +(8520000, 2290099, 1, 1, 0, 10000), +(8520000, 2290106, 1, 1, 0, 10000), +(8520000, 2290108, 1, 1, 0, 10000), +(8520000, 2290112, 1, 1, 0, 10000), +(8520000, 2290114, 1, 1, 0, 10000), +(8520000, 2290122, 1, 1, 0, 10000), +(8520000, 2290124, 1, 1, 0, 10000), +(8520000, 2290132, 1, 1, 0, 30000), +(8800002, 2280007, 1, 1, 0, 20000), +(8800002, 2280008, 1, 1, 0, 20000), +(8800002, 2280009, 1, 1, 0, 20000), +(8800002, 2280010, 1, 1, 0, 20000), +(8800002, 2280013, 1, 1, 0, 60000), +(8800002, 2280014, 1, 1, 0, 60000), +(8800002, 2280015, 1, 1, 0, 60000), +(8800002, 2280016, 1, 1, 0, 60000), +(8800002, 2290006, 1, 1, 0, 20000), +(8800002, 2290007, 1, 1, 0, 20000), +(8800002, 2290016, 1, 1, 0, 20000), +(8800002, 2290020, 1, 1, 0, 20000), +(8800002, 2290022, 1, 1, 0, 20000), +(8800002, 2290024, 1, 1, 0, 20000), +(8800002, 2290028, 1, 1, 0, 20000), +(8800002, 2290029, 1, 1, 0, 20000), +(8800002, 2290040, 1, 1, 0, 20000), +(8800002, 2290046, 1, 1, 0, 20000), +(8800002, 2290048, 1, 1, 0, 20000), +(8800002, 2290056, 1, 1, 0, 20000), +(8800002, 2290057, 1, 1, 0, 20000), +(8800002, 2290058, 1, 1, 0, 20000), +(8800002, 2290064, 1, 1, 0, 20000), +(8800002, 2290067, 1, 1, 0, 20000), +(8800002, 2290074, 1, 1, 0, 20000), +(8800002, 2290079, 1, 1, 0, 20000), +(8800002, 2290084, 1, 1, 0, 20000), +(8800002, 2290094, 1, 1, 0, 20000), +(8800002, 2290110, 1, 1, 0, 20000), +(8800002, 2290115, 1, 1, 0, 20000), +(8810018, 2290017, 1, 1, 0, 25000), +(8810018, 2290021, 1, 1, 0, 25000), +(8810018, 2290023, 1, 1, 0, 25000), +(8810018, 2290041, 1, 1, 0, 25000), +(8810018, 2290047, 1, 1, 0, 25000), +(8810018, 2290049, 1, 1, 0, 25000), +(8810018, 2290065, 1, 1, 0, 25000), +(8810018, 2290075, 1, 1, 0, 25000), +(8810018, 2290085, 1, 1, 0, 25000), +(8810018, 2290095, 1, 1, 0, 25000), +(8810018, 2290096, 1, 1, 0, 25000), +(8810018, 2290111, 1, 1, 0, 25000), +(8810018, 2290116, 1, 1, 0, 25000), +(8810018, 2290125, 1, 1, 0, 25000), +(8810018, 2290133, 1, 1, 0, 75000), +(8810018, 2290137, 1, 1, 0, 75000), +(8810018, 2290139, 1, 1, 0, 75000), +(8820000, 2290010, 1, 1, 0, 30000), +(8820000, 2290022, 1, 1, 0, 30000), +(8820000, 2290040, 1, 1, 0, 30000), +(8820000, 2290046, 1, 1, 0, 30000), +(8820000, 2290048, 1, 1, 0, 30000), +(8820000, 2290052, 1, 1, 0, 30000), +(8820000, 2290084, 1, 1, 0, 30000), +(8820000, 2290090, 1, 1, 0, 30000), +(8820000, 2290106, 1, 1, 0, 30000), +(8820000, 2290119, 1, 1, 0, 30000), +(8820001, 2290010, 1, 1, 0, 30000), +(8820001, 2290022, 1, 1, 0, 30000), +(8820001, 2290040, 1, 1, 0, 30000), +(8820001, 2290046, 1, 1, 0, 30000), +(8820001, 2290048, 1, 1, 0, 30000), +(8820001, 2290052, 1, 1, 0, 30000), +(8820001, 2290084, 1, 1, 0, 30000), +(8820001, 2290090, 1, 1, 0, 30000), +(8820001, 2290106, 1, 1, 0, 30000), +(8820001, 2290119, 1, 1, 0, 30000), +(9300028, 2280015, 1, 1, 0, 30000), +(9300028, 2290026, 1, 1, 0, 10000), +(9300028, 2290064, 1, 1, 0, 10000), +(9300028, 2290075, 1, 1, 0, 10000), +(9300028, 2290093, 1, 1, 0, 10000), +(9300028, 2290111, 1, 1, 0, 10000), +(9300094, 2280004, 1, 1, 0, 10000), +(9300094, 2280005, 1, 1, 0, 10000), +(9300094, 2280006, 1, 1, 0, 10000), +(9300095, 2280004, 1, 1, 0, 500), +(9300095, 2280005, 1, 1, 0, 500), +(9300095, 2280006, 1, 1, 0, 500), +(9303016, 2290006, 1, 1, 0, 500), +(9303016, 2290030, 1, 1, 0, 500), +(9303016, 2290032, 1, 1, 0, 500), +(9303016, 2290060, 1, 1, 0, 500), +(9303016, 2290076, 1, 1, 0, 500), +(9303016, 2290104, 1, 1, 0, 500), +(9303016, 2290117, 1, 1, 0, 500), +(9400014, 2290053, 1, 1, 0, 10000), +(9400014, 2290087, 1, 1, 0, 10000), +(9400014, 2290112, 1, 1, 0, 10000), +(9400014, 2290122, 1, 1, 0, 10000), +(9400120, 2290045, 1, 1, 0, 10000), +(9400121, 2280014, 1, 1, 0, 45000), +(9400121, 2290081, 1, 1, 0, 15000), +(9400121, 2290087, 1, 1, 0, 15000), +(9400121, 2290101, 1, 1, 0, 15000), +(9400121, 2290103, 1, 1, 0, 15000), +(9400122, 2290007, 1, 1, 0, 10000), +(9400122, 2290062, 1, 1, 0, 10000), +(9400122, 2290116, 1, 1, 0, 10000), +(9400300, 2290045, 1, 1, 0, 30000), +(9400300, 2290055, 1, 1, 0, 30000), +(9400300, 2290063, 1, 1, 0, 30000), +(9400300, 2290079, 1, 1, 0, 30000), +(9400300, 2290081, 1, 1, 0, 30000), +(9400300, 2290096, 1, 1, 0, 30000), +(9400514, 2290023, 1, 1, 0, 10000), +(9400514, 2290057, 1, 1, 0, 10000), +(9400514, 2290088, 1, 1, 0, 10000), +(9400514, 2290095, 1, 1, 0, 10000), +(9400514, 2290115, 1, 1, 0, 10000), +(9400514, 2290139, 1, 1, 0, 30000), +(9400549, 2290001, 1, 1, 0, 10000), +(9400549, 2290020, 1, 1, 0, 10000), +(9400549, 2290045, 1, 1, 0, 10000), +(9400549, 2290057, 1, 1, 0, 10000), +(9400549, 2290086, 1, 1, 0, 10000), +(9400575, 2290009, 1, 1, 0, 10000), +(9400575, 2290051, 1, 1, 0, 10000), +(9400575, 2290081, 1, 1, 0, 10000), +(9400575, 2290087, 1, 1, 0, 10000), +(9400575, 2290107, 1, 1, 0, 10000), +(9400575, 2290123, 1, 1, 0, 10000), +(9400580, 2290004, 1, 1, 0, 500), +(9400580, 2290024, 1, 1, 0, 500), +(9400580, 2290083, 1, 1, 0, 500), +(9400580, 2290087, 1, 1, 0, 500), +(9400580, 2290103, 1, 1, 0, 500), +(9400580, 2290121, 1, 1, 0, 500), +(9400582, 2290005, 1, 1, 0, 500), +(9400582, 2290010, 1, 1, 0, 500), +(9400582, 2290029, 1, 1, 0, 500), +(9400582, 2290047, 1, 1, 0, 500), +(9400582, 2290049, 1, 1, 0, 500), +(9400582, 2290074, 1, 1, 0, 500), +(9400582, 2290079, 1, 1, 0, 500), +(9400582, 2290081, 1, 1, 0, 500), +(9400582, 2290135, 1, 1, 0, 1500), +(9400590, 2290088, 1, 1, 0, 15000), +(9400590, 2290125, 1, 1, 0, 15000), +(9400590, 2290135, 1, 1, 0, 45000), +(9400591, 2290039, 1, 1, 0, 15000), +(9400591, 2290074, 1, 1, 0, 15000), +(9400591, 2290113, 1, 1, 0, 15000), +(9400592, 2290047, 1, 1, 0, 15000), +(9400592, 2290123, 1, 1, 0, 15000), +(9400592, 2290131, 1, 1, 0, 45000), +(9400593, 2290069, 1, 1, 0, 15000), +(9400593, 2290093, 1, 1, 0, 15000), +(9400593, 2290138, 1, 1, 0, 45000), +(9420513, 2290039, 1, 1, 0, 10000), +(9420513, 2290100, 1, 1, 0, 10000), +(9420513, 2290108, 1, 1, 0, 10000), +(9420513, 2290118, 1, 1, 0, 10000), +(9420513, 2290138, 1, 1, 0, 30000), (9420514, 2290099, 1, 1, 0, 1287), (9420517, 2290000, 1, 1, 0, 1287), (9420517, 2290008, 1, 1, 0, 1287), @@ -545,75 +545,75 @@ (9420522, 2290089, 1, 1, 0, 1287), (9420522, 2290091, 1, 1, 0, 1287), (9420522, 2290107, 1, 1, 0, 1287), -(9420540, 2280006, 1, 1, 0, 2000), -(9420540, 2290119, 1, 1, 0, 2000), -(9420540, 2290120, 1, 1, 0, 2000), -(9420544, 2280007, 1, 1, 0, 80000), -(9420544, 2280008, 1, 1, 0, 80000), -(9420544, 2280009, 1, 1, 0, 80000), -(9420544, 2280010, 1, 1, 0, 80000), -(9420544, 2290002, 1, 1, 0, 80000), -(9420544, 2290015, 1, 1, 0, 80000), -(9420544, 2290022, 1, 1, 0, 80000), -(9420544, 2290027, 1, 1, 0, 80000), -(9420544, 2290034, 1, 1, 0, 80000), -(9420544, 2290052, 1, 1, 0, 80000), -(9420544, 2290054, 1, 1, 0, 80000), -(9420544, 2290089, 1, 1, 0, 80000), -(9420544, 2290094, 1, 1, 0, 80000), -(9420544, 2290098, 1, 1, 0, 80000), -(9420544, 2290105, 1, 1, 0, 80000), -(9420544, 2290110, 1, 1, 0, 80000), -(9420544, 2290119, 1, 1, 0, 80000), -(9420549, 2280007, 1, 1, 0, 80000), -(9420549, 2280008, 1, 1, 0, 80000), -(9420549, 2280009, 1, 1, 0, 80000), -(9420549, 2280010, 1, 1, 0, 80000), -(9420549, 2290002, 1, 1, 0, 80000), -(9420549, 2290015, 1, 1, 0, 80000), -(9420549, 2290022, 1, 1, 0, 80000), -(9420549, 2290027, 1, 1, 0, 80000), -(9420549, 2290034, 1, 1, 0, 80000), -(9420549, 2290052, 1, 1, 0, 80000), -(9420549, 2290054, 1, 1, 0, 80000), -(9420549, 2290089, 1, 1, 0, 80000), -(9420549, 2290094, 1, 1, 0, 80000), -(9420549, 2290098, 1, 1, 0, 80000), -(9420549, 2290105, 1, 1, 0, 80000), -(9420549, 2290110, 1, 1, 0, 80000), -(9420549, 2290119, 1, 1, 0, 80000), -(9500166, 2290044, 1, 1, 0, 2000), -(9500173, 2290018, 1, 1, 0, 40000), -(9500173, 2290019, 1, 1, 0, 40000), -(9500173, 2290032, 1, 1, 0, 40000), -(9500173, 2290042, 1, 1, 0, 40000), -(9500173, 2290058, 1, 1, 0, 40000), -(9500173, 2290068, 1, 1, 0, 40000), -(9500173, 2290072, 1, 1, 0, 40000), -(9500173, 2290092, 1, 1, 0, 40000), -(9500173, 2290099, 1, 1, 0, 40000), -(9500173, 2290102, 1, 1, 0, 40000), -(9500173, 2290119, 1, 1, 0, 40000), -(9500173, 2290128, 1, 1, 0, 120000), -(9500174, 2290002, 1, 1, 0, 40000), -(9500174, 2290014, 1, 1, 0, 40000), -(9500174, 2290030, 1, 1, 0, 40000), -(9500174, 2290080, 1, 1, 0, 40000), -(9500174, 2290130, 1, 1, 0, 120000), -(9500180, 2290010, 1, 1, 0, 40000), -(9500180, 2290028, 1, 1, 0, 40000), -(9500180, 2290126, 1, 1, 0, 120000), -(9500181, 2290010, 1, 1, 0, 40000), -(9500181, 2290028, 1, 1, 0, 40000), -(9500181, 2290126, 1, 1, 0, 120000), -(9500331, 2290010, 1, 1, 0, 40000), -(9500331, 2290028, 1, 1, 0, 40000), -(9500331, 2290126, 1, 1, 0, 120000), -(9500332, 2290132, 1, 1, 0, 120000), -(9500333, 2290006, 1, 1, 0, 40000), -(9500333, 2290030, 1, 1, 0, 40000), -(9500333, 2290032, 1, 1, 0, 40000), -(9500333, 2290060, 1, 1, 0, 40000), -(9500333, 2290076, 1, 1, 0, 40000), -(9500333, 2290104, 1, 1, 0, 40000), -(9500333, 2290117, 1, 1, 0, 40000), +(9420540, 2280006, 1, 1, 0, 500), +(9420540, 2290119, 1, 1, 0, 500), +(9420540, 2290120, 1, 1, 0, 500), +(9420544, 2280007, 1, 1, 0, 20000), +(9420544, 2280008, 1, 1, 0, 20000), +(9420544, 2280009, 1, 1, 0, 20000), +(9420544, 2280010, 1, 1, 0, 20000), +(9420544, 2290002, 1, 1, 0, 20000), +(9420544, 2290015, 1, 1, 0, 20000), +(9420544, 2290022, 1, 1, 0, 20000), +(9420544, 2290027, 1, 1, 0, 20000), +(9420544, 2290034, 1, 1, 0, 20000), +(9420544, 2290052, 1, 1, 0, 20000), +(9420544, 2290054, 1, 1, 0, 20000), +(9420544, 2290089, 1, 1, 0, 20000), +(9420544, 2290094, 1, 1, 0, 20000), +(9420544, 2290098, 1, 1, 0, 20000), +(9420544, 2290105, 1, 1, 0, 20000), +(9420544, 2290110, 1, 1, 0, 20000), +(9420544, 2290119, 1, 1, 0, 20000), +(9420549, 2280007, 1, 1, 0, 20000), +(9420549, 2280008, 1, 1, 0, 20000), +(9420549, 2280009, 1, 1, 0, 20000), +(9420549, 2280010, 1, 1, 0, 20000), +(9420549, 2290002, 1, 1, 0, 20000), +(9420549, 2290015, 1, 1, 0, 20000), +(9420549, 2290022, 1, 1, 0, 20000), +(9420549, 2290027, 1, 1, 0, 20000), +(9420549, 2290034, 1, 1, 0, 20000), +(9420549, 2290052, 1, 1, 0, 20000), +(9420549, 2290054, 1, 1, 0, 20000), +(9420549, 2290089, 1, 1, 0, 20000), +(9420549, 2290094, 1, 1, 0, 20000), +(9420549, 2290098, 1, 1, 0, 20000), +(9420549, 2290105, 1, 1, 0, 20000), +(9420549, 2290110, 1, 1, 0, 20000), +(9420549, 2290119, 1, 1, 0, 20000), +(9500166, 2290044, 1, 1, 0, 500), +(9500173, 2290018, 1, 1, 0, 10000), +(9500173, 2290019, 1, 1, 0, 10000), +(9500173, 2290032, 1, 1, 0, 10000), +(9500173, 2290042, 1, 1, 0, 10000), +(9500173, 2290058, 1, 1, 0, 10000), +(9500173, 2290068, 1, 1, 0, 10000), +(9500173, 2290072, 1, 1, 0, 10000), +(9500173, 2290092, 1, 1, 0, 10000), +(9500173, 2290099, 1, 1, 0, 10000), +(9500173, 2290102, 1, 1, 0, 10000), +(9500173, 2290119, 1, 1, 0, 10000), +(9500173, 2290128, 1, 1, 0, 30000), +(9500174, 2290002, 1, 1, 0, 10000), +(9500174, 2290014, 1, 1, 0, 10000), +(9500174, 2290030, 1, 1, 0, 10000), +(9500174, 2290080, 1, 1, 0, 10000), +(9500174, 2290130, 1, 1, 0, 30000), +(9500180, 2290010, 1, 1, 0, 10000), +(9500180, 2290028, 1, 1, 0, 10000), +(9500180, 2290126, 1, 1, 0, 30000), +(9500181, 2290010, 1, 1, 0, 10000), +(9500181, 2290028, 1, 1, 0, 10000), +(9500181, 2290126, 1, 1, 0, 30000), +(9500331, 2290010, 1, 1, 0, 10000), +(9500331, 2290028, 1, 1, 0, 10000), +(9500331, 2290126, 1, 1, 0, 30000), +(9500332, 2290132, 1, 1, 0, 30000), +(9500333, 2290006, 1, 1, 0, 10000), +(9500333, 2290030, 1, 1, 0, 10000), +(9500333, 2290032, 1, 1, 0, 10000), +(9500333, 2290060, 1, 1, 0, 10000), +(9500333, 2290076, 1, 1, 0, 10000), +(9500333, 2290104, 1, 1, 0, 10000), +(9500333, 2290117, 1, 1, 0, 10000), diff --git a/tools/MapleSkillbookChanceFetcher/src/mapleskillbookchancefetcher/MapleSkillbookChanceFetcher.java b/tools/MapleSkillbookChanceFetcher/src/mapleskillbookchancefetcher/MapleSkillbookChanceFetcher.java index b28c4b499e..1129561163 100644 --- a/tools/MapleSkillbookChanceFetcher/src/mapleskillbookchancefetcher/MapleSkillbookChanceFetcher.java +++ b/tools/MapleSkillbookChanceFetcher/src/mapleskillbookchancefetcher/MapleSkillbookChanceFetcher.java @@ -93,7 +93,7 @@ public class MapleSkillbookChanceFetcher { int mobid = rs.getInt("dropperid"); int itemid = rs.getInt("itemid"); - int expectedChance = 1000; + int expectedChance = 250; if (mobStats.get(mobid) != null) { int level = mobStats.get(mobid).getLevel(); diff --git a/wz/Map.wz/Map/Map9/922240200.img.xml b/wz/Map.wz/Map/Map9/922240200.img.xml index 2a51c2f179..f12a74ee56 100644 --- a/wz/Map.wz/Map/Map9/922240200.img.xml +++ b/wz/Map.wz/Map/Map9/922240200.img.xml @@ -3,7 +3,7 @@ - + From 0228d4e176d95794f299e6a909180f4045ccfa53 Mon Sep 17 00:00:00 2001 From: Ronan Lana Date: Wed, 3 Jul 2019 13:43:31 -0300 Subject: [PATCH 02/37] Update db_database.sql --- sql/db_database.sql | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sql/db_database.sql b/sql/db_database.sql index 2a61cf7e54..0827a5e609 100644 --- a/sql/db_database.sql +++ b/sql/db_database.sql @@ -12830,6 +12830,7 @@ CREATE TABLE IF NOT EXISTS `dueypackages` ( `TimeStamp` varchar(10) NOT NULL, `Message` varchar(200) NOT NULL DEFAULT "", `Checked` tinyint(1) unsigned DEFAULT '1', + `Type` tinyint(1) unsigned DEFAULT '0', PRIMARY KEY (`PackageId`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; @@ -21426,4 +21427,4 @@ ALTER TABLE `famelog` /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; \ No newline at end of file +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; From ab5cec7f33c3617f4762b9b3d2388aeb21c405dd Mon Sep 17 00:00:00 2001 From: ronancpl Date: Mon, 15 Jul 2019 20:22:39 -0300 Subject: [PATCH 03/37] Quest Item Restore + Packets w/ Timezone + Item/Exp-dec Field Limits Fixed leaders being able to create expeditions even though the already passed the day limit. Fixed overflow case in calculated max value of skills. Implemented item expiration from DB after the due date. Refactored item flags using byte-length instead of short. Added FieldLimit checks for disappearing item drops and no EXP deduction in limited areas. Added "Quest Item Restore" functionality. Implemented item flag auto-instantiation when generating items. Added gate state update in Papulatus lobby area. Fixed a recent issue regarding bounding box calculation of AoE player skills. Implemented minidungeon close, to occur as soon as the party leader leaves the area. Refactored HenesysPQ attributed out of the MapleMap object, now they should be available from the respective event script. Fixed friendly mobs not dropping item periodically, a recent issue after tweaking the loot system. Fixed Papulatus expedition closing after the exped leader leaves or a minimum of player required to start is no longer there. Fixed several expeditions closing after performing party operations, such as "change party leader". Reviewed expected max damage calculation for summons, which would not work properly in several occasions. Normalized timezone from packets sent to client, now using the same timezone defined from the server flags. Fixed certain scenarios in CPQ that would happen within the stage between the "challenge accepted" and ingress in the battlefield. Revised credits script. Added GM checks in the autoban method. --- .gitignore | 8 + README.md | 2 +- docs/area_bosses/BossEvent.js | 18 +- docs/mychanges_ptbr.txt | 34 ++- scripts/event/BalrogBattle.js | 21 +- scripts/event/BalrogBattle_Easy.js | 21 +- scripts/event/HenesysPQ.js | 21 ++ scripts/event/PapulatusBattle.js | 43 ++-- scripts/event/ZakumBattle.js | 10 +- scripts/npc/1061014.js | 14 +- scripts/npc/2030013.js | 14 +- scripts/npc/2060005.js | 19 +- scripts/npc/2083004.js | 14 +- scripts/npc/2101014.js | 5 +- scripts/npc/2141001.js | 14 +- scripts/npc/9060000.js | 17 +- scripts/npc/9120201.js | 14 +- scripts/npc/9201113.js | 14 +- scripts/npc/9270047.js | 14 +- scripts/npc/9900000.js | 14 +- scripts/npc/credits.js | 27 +-- sql/db_database.sql | 2 +- src/client/MapleCharacter.java | 57 ++--- src/client/autoban/AutobanManager.java | 7 +- .../command/commands/gm2/ItemCommand.java | 4 +- .../command/commands/gm2/ItemDropCommand.java | 20 +- .../command/commands/gm2/LootCommand.java | 51 +++++ .../command/commands/gm4/PapCommand.java | 4 +- .../command/commands/gm4/ProItemCommand.java | 2 +- .../commands/gm4/SetEqStatCommand.java | 2 +- src/client/inventory/Equip.java | 7 +- src/client/inventory/Item.java | 11 +- src/client/inventory/ItemFactory.java | 6 +- .../MapleInventoryManipulator.java | 4 +- .../manipulator/MapleKarmaManipulator.java | 12 +- src/client/processor/DueyProcessor.java | 58 ++++-- src/constants/ItemConstants.java | 22 +- src/constants/ServerConstants.java | 8 +- src/net/opcodes/SendOpcode.java | 4 +- src/net/server/Server.java | 6 +- .../handlers/AbstractDealDamageHandler.java | 11 +- .../server/channel/handlers/DueyHandler.java | 1 + .../channel/handlers/EnterMTSHandler.java | 6 +- .../server/channel/handlers/MTSHandler.java | 12 +- .../handlers/MobDamageMobFriendlyHandler.java | 33 +-- .../channel/handlers/QuestActionHandler.java | 7 +- .../channel/handlers/SummonDamageHandler.java | 30 +-- .../channel/handlers/UseCashItemHandler.java | 2 +- ...ickWorker.java => DueyFredrickWorker.java} | 4 +- src/net/server/worker/RespawnWorker.java | 19 ++ src/net/server/world/World.java | 17 +- src/scripting/AbstractPlayerInteraction.java | 20 +- src/scripting/event/EventInstanceManager.java | 12 ++ src/scripting/npc/NPCConversationManager.java | 19 +- src/server/DueyPackage.java | 38 +++- src/server/MapleItemInformationProvider.java | 26 ++- .../MapleSkillbookInformationProvider.java | 2 + src/server/MapleStatEffect.java | 12 +- .../expeditions/MapleExpeditionBossLog.java | 5 + src/server/life/MapleMonster.java | 64 +++++- src/server/maps/FieldLimit.java | 6 +- src/server/maps/MapleMap.java | 41 +--- src/server/maps/MapleMapManager.java | 19 +- src/server/maps/MapleMiniDungeon.java | 38 ++-- src/server/quest/MapleQuest.java | 15 +- src/server/quest/actions/ItemAction.java | 32 ++- src/tools/FilePrinter.java | 1 + src/tools/MaplePacketCreator.java | 32 ++- tools/MapleMapFieldLimitChecker/build.xml | 73 +++++++ .../MapleMapFieldLimitChecker/lib/Report.txt | 149 +++++++++++++ tools/MapleMapFieldLimitChecker/manifest.mf | 3 + .../MapleMapFieldLimitChecker.java | 197 ++++++++++++++++++ wz/Map.wz/Map/Map2/211042400.img.xml | 2 +- 73 files changed, 1200 insertions(+), 393 deletions(-) create mode 100644 src/client/command/commands/gm2/LootCommand.java rename src/net/server/worker/{FredrickWorker.java => DueyFredrickWorker.java} (88%) create mode 100644 src/net/server/worker/RespawnWorker.java create mode 100644 tools/MapleMapFieldLimitChecker/build.xml create mode 100644 tools/MapleMapFieldLimitChecker/lib/Report.txt create mode 100644 tools/MapleMapFieldLimitChecker/manifest.mf create mode 100644 tools/MapleMapFieldLimitChecker/src/maplemapfieldlimitchecker/MapleMapFieldLimitChecker.java diff --git a/.gitignore b/.gitignore index 505c52f286..58dfab0bd4 100644 --- a/.gitignore +++ b/.gitignore @@ -71,10 +71,18 @@ /tools/MapleInvalidItemWithNoNameFetcher/dist/ /tools/MapleInvalidItemWithNoNameFetcher/nbproject/ +/tools/MapleMapFieldLimitChecker/build/ +/tools/MapleMapFieldLimitChecker/dist/ +/tools/MapleMapFieldLimitChecker/nbproject/ + /tools/MapleMapInfoRetriever/build/ /tools/MapleMapInfoRetriever/dist/ /tools/MapleMapInfoRetriever/nbproject/ +/tools/MapleMapLootLimitChecker/build/ +/tools/MapleMapLootLimitChecker/dist/ +/tools/MapleMapLootLimitChecker/nbproject/ + /tools/MapleMesoFetcher/build/ /tools/MapleMesoFetcher/dist/ /tools/MapleMesoFetcher/nbproject/ diff --git a/README.md b/README.md index f7b19363c5..a92008c778 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Java7 SDK: https://www.oracle.com/technetwork/java/javase/downloads/java-archive **Important note about localhosts**: these executables are red-flagged by antivirus tools as __potentially malicious softwares__, this happens due to the reverse engineering methods that were applied onto these software artifacts. Those depicted here have been put to use for years already and posed no harm so far, so they are soundly assumed to be safe. - Latest localhost: https://hostr.co/itrvrHapvtEg + Latest localhost: https://hostr.co/SvnSKrGzXhG0 The following list, in bottom-up chronological order, holds information regarding all changes that were applied from the starting localhost used in this development. Some lines have a link attached, that will lead you to a snapshot of the localhost at that version of the artifact. Naturally, later versions holds all previous changes along with the proposed changes. diff --git a/docs/area_bosses/BossEvent.js b/docs/area_bosses/BossEvent.js index 5cd1eb0047..834b6a68ea 100644 --- a/docs/area_bosses/BossEvent.js +++ b/docs/area_bosses/BossEvent.js @@ -1,9 +1,12 @@ // @Author: Resinate -var towns = new Array(800020120, 251010102, 260010201, 107000300, 200010300, 100040105, 100040106, 261030000, 110040000, 250010504, 240040401, 104000400, 222010310, 230040420, 230040420, 230020100, 105090310, 101030404, 250010304, 220050100, 220050000, 220050200, 221040301); -var spawns = new Array(6090002, 5220004, 3220001, 6220000, 8220000, 5220002, 5220002, 8220002, 5220001, 7220002, 8220003, 2220000, 7220001, 8510000, 8520000, 4220001, 8220008, 3220000, 7220000, 5220003, 5220003, 5220003, 6220001); -var x = new Array(560, 560, 645, 90, 208, 456, 474, -300, 200, 400, 0, 400, 0, 527, 138, 0, -626, 800, -300, -300, 0, 0, -4224); -var y = new Array(50, 50, 275, 119, 83, 278, 278, 180, 140, 540, 1125, 455, 33, -437, 138, 520, -604, 1280, 390, 1030, 1030, 1030, 776); +importPackage(Packages.server.life); +importPackage(Packages.tools); + +var towns = new Array(800020120, 251010102, 260010201, 107000300, 200010300, 100040105, 100040106, 261030000, 110040000, 240040401, 104000400, 222010310, 230040420, 230040420, 230020100, 105090310, 101030404, 250010304, 220050100, 220050000, 220050200, 221040301); +var spawns = new Array(6090002, 5220004, 3220001, 6220000, 8220000, 5220002, 5220002, 8220002, 5220001, 8220003, 2220000, 7220001, 8510000, 8520000, 4220001, 8220008, 3220000, 7220000, 5220003, 5220003, 5220003, 6220001); +var x = new Array(560, 560, 645, 90, 208, 456, 474, -300, 200, 0, 400, 0, 527, 138, 0, -626, 800, -300, -300, 0, 0, -4224); +var y = new Array(50, 50, 275, 119, 83, 278, 278, 180, 140, 1125, 455, 33, -437, 138, 520, -604, 1280, 390, 1030, 1030, 1030, 776); var mapObj; var mobObj; @@ -21,13 +24,12 @@ function cancelSchedule() { } function start() { - var time = (Math.floor(Math.random() * 10) + 10) * (60 * 1000); for(var i = 0; i < towns.length; i++) { mapObj = em.getChannelServer().getMapFactory().getMap(towns[i]); - mobObj = Packages.server.life.MapleLifeFactory.getMonster(spawns[i]); + mobObj = MapleLifeFactory.getMonster(spawns[i]); if(mapObj.getMonsterById(spawns[i]) == null) { mapObj.spawnMonsterOnGroundBelow(mobObj, new Packages.java.awt.Point(x[i],y[i])); } } - em.schedule("start", time); -} \ No newline at end of file + setupTask = em.schedule("start", 30 * 60 * 1000); +} diff --git a/docs/mychanges_ptbr.txt b/docs/mychanges_ptbr.txt index 465429633a..461deea159 100644 --- a/docs/mychanges_ptbr.txt +++ b/docs/mychanges_ptbr.txt @@ -1982,4 +1982,36 @@ Ajustado evento de Gaga no espaço, evento agora funcional. Adicionado minigame RPS de NPC, recursos implementados pelo Arnah. 27 Junho 2019, -Corrigido contabilização de dano de auto-destruição de mobs não sendo aplicado corretamente. \ No newline at end of file +Corrigido contabilização de dano de auto-destruição de mobs não sendo aplicado corretamente. + +01 Julho 2019, +Corrigido contabilização de entrada em bosses não checando criação de expedições. +Corrigido caso de overflow em valor máximo calculado de dano em skills. +Implementado retirada de itens mantidos pelo Duey na DB, após dado a data de expirar. + +02 Julho 2019, +Refatorado flags de itens utilizando tamanho menor que o esperado. +Adicionado checagem por FieldLimit ao lançar itens em mapas dados como "untradeable". +Adicionado funcionalidade "Quest Item Restore". + +11 Julho 2019, +Implementado instanciação de flag "somente compartilhável dentro de mesma conta" em itens recém-gerados que possuem essa funcionalidade. +Implementado atualização de estados no portão de entrada do Papulatus. +Corrigido deslize apontado pelo Conrad, na aplicação de caixas de limites usados pelos buffs em área. +Implementado finalização de instância de minidungeon assim que o líder de party sai da área ou há troca de líderes com alguém fora da área. + +14 Julho 2019, +Refatorado atributos de HenesysPQ sendo utilizados em objetos de áreas do jogo. +Corrigido mobs aliados não realizando item drops devidamente após atualização recente no sistema de loot. +Corrigido quest de proteger hog (explorers) "completando" mesmo embora o jogador tenha tentado sair da instância ao conversar com o NPC. +Corrigido possível exploit com quest de proteger hog (explorers), onde o jogador poderia vir a tentar novamente a instância após completá-la (resultando em recompensas rápidas). +Corrigido script de Papulatus não levando os métodos de checagem de requisitos atualizados para expedições. +Corrigido diversos scripts de expedições finalizando expedições indevidamente ao realizar operações de party. +Implementado checagem por flag de FieldLimit que evita penalidade de perda de EXP em certas áreas do jogo. +Revisado limite de dano aplicável por alguns summons, cujo valor limite estava muito abaixo do esperado, levando a problemas com aplicação de ataques dos mesmos. + +15 Julho 2019, +Implementado normalização de fuso horário em pacotes enviados ao cliente. Agora o sistema utiliza mesmo fuso horário definido nas flags do servidor. +Corrigido certos casos onde grupos dentro de lobby de CPQ não conseguiam ser desafiados, geralmente ocorrendo ao se desconectar após o desafio ter sido aceito e antes de começar a instância. +Revisado script de créditos. +Adicionado checagem por GM's no método de autoban de jogador. \ No newline at end of file diff --git a/scripts/event/BalrogBattle.js b/scripts/event/BalrogBattle.js index ba3d9bd204..ad2122ebe0 100644 --- a/scripts/event/BalrogBattle.js +++ b/scripts/event/BalrogBattle.js @@ -179,12 +179,7 @@ function changedMap(eim, player, mapid) { } } -function changedLeader(eim, leader) { - var mapid = leader.getMapId(); - if (!eim.isEventCleared() && (mapid < minMapId || mapid > maxMapId)) { - end(eim); - } -} +function changedLeader(eim, leader) {} function playerDead(eim, player) {} @@ -206,19 +201,9 @@ function playerDisconnected(eim, player) { eim.unregisterPlayer(player); } -function leftParty(eim, player) { - if (eim.isExpeditionTeamLackingNow(false, minPlayers, player)) { - end(eim); - } - else - playerLeft(eim, player); -} +function leftParty(eim, player) {} -function disbandParty(eim) { - if (!eim.isEventCleared()) { - end(eim); - } -} +function disbandParty(eim) {} function monsterValue(eim, mobId) { return 1; diff --git a/scripts/event/BalrogBattle_Easy.js b/scripts/event/BalrogBattle_Easy.js index 5bb27d8353..031c31d859 100644 --- a/scripts/event/BalrogBattle_Easy.js +++ b/scripts/event/BalrogBattle_Easy.js @@ -179,12 +179,7 @@ function changedMap(eim, player, mapid) { } } -function changedLeader(eim, leader) { - var mapid = leader.getMapId(); - if (!eim.isEventCleared() && (mapid < minMapId || mapid > maxMapId)) { - end(eim); - } -} +function changedLeader(eim, leader) {} function playerDead(eim, player) {} @@ -206,19 +201,9 @@ function playerDisconnected(eim, player) { eim.unregisterPlayer(player); } -function leftParty(eim, player) { - if (eim.isExpeditionTeamLackingNow(false, minPlayers, player)) { - end(eim); - } - else - playerLeft(eim, player); -} +function leftParty(eim, player) {} -function disbandParty(eim) { - if (!eim.isEventCleared()) { - end(eim); - } -} +function disbandParty(eim) {} function monsterValue(eim, mobId) { return 1; diff --git a/scripts/event/HenesysPQ.js b/scripts/event/HenesysPQ.js index 74ce27aa94..cc4ebb5061 100644 --- a/scripts/event/HenesysPQ.js +++ b/scripts/event/HenesysPQ.js @@ -105,6 +105,8 @@ function setup(level, lobbyid) { var eim = em.newInstance("Henesys" + lobbyid); eim.setProperty("level", level); eim.setProperty("stage", "0"); + eim.setProperty("bunnyCake", "0"); + eim.setProperty("bunnyDamage", "0"); eim.getInstanceMap(910010000).resetPQ(level); eim.getInstanceMap(910010000).allowSummonState(false); @@ -243,6 +245,25 @@ function friendlyKilled(mob, eim) { } } +function friendlyItemDrop(eim, mob) { + if (mob.getId() == 9300061) { + var cakes = eim.getIntProperty("bunnyCake") + 1; + eim.setIntProperty("bunnyCake", cakes); + + mob.getMap().broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "The Moon Bunny made rice cake number " + cakes + ".")); + } +} + +function friendlyDamaged(eim, mob) { + if (mob.getId() == 9300061) { + var bunnyDamage = eim.getIntProperty("bunnyDamaged") + 1; + if (bunnyDamage > 5) { + broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "The Moon Bunny is feeling sick. Please protect it so it can make delicious rice cakes.")); + eim.setIntProperty("bunnyDamaged", 0); + } + } +} + function allMonstersDead(eim) {} function cancelSchedule() {} diff --git a/scripts/event/PapulatusBattle.js b/scripts/event/PapulatusBattle.js index 3a1528a296..af8aba642f 100644 --- a/scripts/event/PapulatusBattle.js +++ b/scripts/event/PapulatusBattle.js @@ -115,7 +115,9 @@ function setup(level, lobbyid) { return eim; } -function afterSetup(eim) {} +function afterSetup(eim) { + updateGateState(1); +} function respawnStages(eim) {} @@ -143,7 +145,7 @@ function playerLeft(eim, player) { function changedMap(eim, player, mapid) { if (mapid < minMapId || mapid > maxMapId) { - if (eim.isEventTeamLackingNow(true, minPlayers, player)) { + if (eim.isExpeditionTeamLackingNow(true, minPlayers, player)) { eim.unregisterPlayer(player); end(eim); } @@ -152,17 +154,12 @@ function changedMap(eim, player, mapid) { } } -function changedLeader(eim, leader) { - var mapid = leader.getMapId(); - if (!eim.isEventCleared() && (mapid < minMapId || mapid > maxMapId)) { - end(eim); - } -} +function changedLeader(eim, leader) {} function playerDead(eim, player) {} function playerRevive(eim, player) { // player presses ok on the death pop up. - if (eim.isEventTeamLackingNow(true, minPlayers, player)) { + if (eim.isExpeditionTeamLackingNow(true, minPlayers, player)) { eim.unregisterPlayer(player); end(eim); } @@ -171,7 +168,7 @@ function playerRevive(eim, player) { // player presses ok on the death pop up. } function playerDisconnected(eim, player) { - if (eim.isEventTeamLackingNow(true, minPlayers, player)) { + if (eim.isExpeditionTeamLackingNow(true, minPlayers, player)) { eim.unregisterPlayer(player); end(eim); } @@ -179,19 +176,9 @@ function playerDisconnected(eim, player) { eim.unregisterPlayer(player); } -function leftParty(eim, player) { - if (eim.isEventTeamLackingNow(false, minPlayers, player)) { - end(eim); - } - else - playerLeft(eim, player); -} +function leftParty(eim, player) {} -function disbandParty(eim) { - if (!eim.isEventCleared()) { - end(eim); - } -} +function disbandParty(eim) {} function monsterValue(eim, mobId) { return 1; @@ -213,6 +200,7 @@ function giveRandomEventReward(eim, player) { function clearPQ(eim) { eim.stopEventTimer(); eim.setEventCleared(); + updateGateState(0); } function isPapulatus(mob) { @@ -231,5 +219,14 @@ function allMonstersDead(eim) {} function cancelSchedule() {} -function dispose(eim) {} +function updateGateState(newState) { // thanks Conrad for noticing missing gate update + em.getChannelServer().getMapFactory().getMap(220080000).getReactorById(2208001).forceHitReactor(newState); + em.getChannelServer().getMapFactory().getMap(220080000).getReactorById(2208002).forceHitReactor(newState); + em.getChannelServer().getMapFactory().getMap(220080000).getReactorById(2208003).forceHitReactor(newState); +} +function dispose(eim) { + if (!eim.isEventCleared()) { + updateGateState(0); + } +} diff --git a/scripts/event/ZakumBattle.js b/scripts/event/ZakumBattle.js index 1e7fdab44a..63a3bb9276 100644 --- a/scripts/event/ZakumBattle.js +++ b/scripts/event/ZakumBattle.js @@ -86,7 +86,7 @@ function setEventRewards(eim) { } function afterSetup(eim) { - em.getChannelServer().getMapFactory().getMap(211042300).getReactorById(2118002).forceHitReactor(1); + updateGateState(1); } function setup(channel) { @@ -190,7 +190,7 @@ function giveRandomEventReward(eim, player) { function clearPQ(eim) { eim.stopEventTimer(); eim.setEventCleared(); - em.getChannelServer().getMapFactory().getMap(211042300).getReactorById(2118002).forceHitReactor(0); + updateGateState(0); } function isZakum(mob) { @@ -212,8 +212,12 @@ function allMonstersDead(eim) {} function cancelSchedule() {} +function updateGateState(newState) { // thanks Conrad for noticing missing gate update + em.getChannelServer().getMapFactory().getMap(211042300).getReactorById(2118002).forceHitReactor(newState); +} + function dispose(eim) { if (!eim.isEventCleared()) { - em.getChannelServer().getMapFactory().getMap(211042300).getReactorById(2118002).forceHitReactor(0); + updateGateState(0); } } diff --git a/scripts/npc/1061014.js b/scripts/npc/1061014.js index 545218e1e1..d5fb6da0f1 100644 --- a/scripts/npc/1061014.js +++ b/scripts/npc/1061014.js @@ -65,8 +65,13 @@ function action(mode, type, selection) { cm.sendSimple("#e#b\r\n#k#n" + em.getProperty("party") + "\r\n\r\nWould you like to assemble a team to take on #r" + expedBoss + "#k?\r\n#b#L1#Lets get this going!#l\r\n\#L2#No, I think I'll wait a bit...#l\r\n\#L3#I would like to see info about this expedition...#l"); status = 1; } else if (expedition.isLeader(player)) { //If you're the leader, manage the exped - cm.sendSimple(list); - status = 2; + if (expedition.isInProgress()) { + cm.sendOk("Your expedition is already in progress, for those who remain battling lets pray for those brave souls."); + cm.dispose(); + } else { + cm.sendSimple(list); + status = 2; + } } else if (expedition.isRegistering()) { //If the expedition is registering if (expedition.contains(player)) { //If you're in it but it hasn't started, be patient cm.sendOk("You have already registered for the expedition. Please wait for #r" + expedition.getLeader().getName() + "#k to begin it."); @@ -99,8 +104,11 @@ function action(mode, type, selection) { return; } - if (cm.createExpedition(exped)) { + var res = cm.createExpedition(exped); + if (res == 0) { cm.sendOk("The #r" + expedBoss + " Expedition#k has been created.\r\n\r\nTalk to me again to view the current team, or start the fight!"); + } else if (res > 0) { + cm.sendOk("Sorry, you've already reached the quota of attempts for this expedition! Try again another day..."); } else { cm.sendOk("An unexpected error has occurred when starting the expedition, please try again later."); } diff --git a/scripts/npc/2030013.js b/scripts/npc/2030013.js index d62e8f1ee2..70b45c4906 100644 --- a/scripts/npc/2030013.js +++ b/scripts/npc/2030013.js @@ -66,8 +66,13 @@ function action(mode, type, selection) { cm.sendSimple("#e#b\r\n#k#n" + em.getProperty("party") + "\r\n\r\nWould you like to assemble a team to take on #r" + expedBoss + "#k?\r\n#b#L1#Lets get this going!#l\r\n\#L2#No, I think I'll wait a bit...#l"); status = 1; } else if (expedition.isLeader(player)) { //If you're the leader, manage the exped - cm.sendSimple(list); - status = 2; + if (expedition.isInProgress()) { // thanks Conrad for noticing exped leaders being able to still manage in-progress expeds + cm.sendOk("Your expedition is already in progress, for those who remain battling lets pray for those brave souls."); + cm.dispose(); + } else { + cm.sendSimple(list); + status = 2; + } } else if (expedition.isRegistering()) { //If the expedition is registering if (expedition.contains(player)) { //If you're in it but it hasn't started, be patient cm.sendOk("You have already registered for the expedition. Please wait for #r" + expedition.getLeader().getName() + "#k to begin it."); @@ -106,8 +111,11 @@ function action(mode, type, selection) { return; } - if (cm.createExpedition(exped)) { + var res = cm.createExpedition(exped); + if (res == 0) { cm.sendOk("The #r" + expedBoss + " Expedition#k has been created.\r\n\r\nTalk to me again to view the current team, or start the fight!"); + } else if (res > 0) { + cm.sendOk("Sorry, you've already reached the quota of attempts for this expedition! Try again another day..."); } else { cm.sendOk("An unexpected error has occurred when starting the expedition, please try again later."); } diff --git a/scripts/npc/2060005.js b/scripts/npc/2060005.js index d9a2009733..e2ee871223 100644 --- a/scripts/npc/2060005.js +++ b/scripts/npc/2060005.js @@ -32,12 +32,19 @@ function start() { cm.sendOk("Thanks for saving the pork."); } else if(cm.isQuestStarted(6002)) { - var em = cm.getEventManager("3rdJob_mount"); - if (em == null) - cm.sendOk("Sorry, but 3rd job advancement (mount) is closed."); - else { - if (!em.startInstance(cm.getPlayer())) { - cm.sendOk("There is currently someone in this map, come back later."); + if (cm.haveItem(4031507, 5) && cm.haveItem(4031508,5)) { + cm.sendOk("Thanks for saving the pork."); + } else { + var em = cm.getEventManager("3rdJob_mount"); + if (em == null) + cm.sendOk("Sorry, but 3rd job advancement (mount) is closed."); + else { + if (em.startInstance(cm.getPlayer())) { + cm.removeAll(4031507); + cm.removeAll(4031508); + } else { + cm.sendOk("There is currently someone in this map, come back later."); + } } } } diff --git a/scripts/npc/2083004.js b/scripts/npc/2083004.js index b0501ee64d..f13fc27bcf 100644 --- a/scripts/npc/2083004.js +++ b/scripts/npc/2083004.js @@ -64,8 +64,13 @@ function action(mode, type, selection) { cm.sendSimple("#e#b\r\n#k#n" + em.getProperty("party") + "\r\n\r\nWould you like to assemble a team to take on #r" + expedBoss + "#k?\r\n#b#L1#Lets get this going!#l\r\n\#L2#No, I think I'll wait a bit...#l"); status = 1; } else if (expedition.isLeader(player)) { //If you're the leader, manage the exped - cm.sendSimple(list); - status = 2; + if (expedition.isInProgress()) { + cm.sendOk("Your expedition is already in progress, for those who remain battling lets pray for those brave souls."); + cm.dispose(); + } else { + cm.sendSimple(list); + status = 2; + } } else if (expedition.isRegistering()) { //If the expedition is registering if (expedition.contains(player)) { //If you're in it but it hasn't started, be patient cm.sendOk("You have already registered for the expedition. Please wait for #r" + expedition.getLeader().getName() + "#k to begin it."); @@ -98,8 +103,11 @@ function action(mode, type, selection) { return; } - if (cm.createExpedition(exped)) { + var res = cm.createExpedition(exped); + if (res == 0) { cm.sendOk("The #r" + expedBoss + " Expedition#k has been created.\r\n\r\nTalk to me again to view the current team, or start the fight!"); + } else if (res > 0) { + cm.sendOk("Sorry, you've already reached the quota of attempts for this expedition! Try again another day..."); } else { cm.sendOk("An unexpected error has occurred when starting the expedition, please try again later."); } diff --git a/scripts/npc/2101014.js b/scripts/npc/2101014.js index 95e68a20b8..3058076035 100644 --- a/scripts/npc/2101014.js +++ b/scripts/npc/2101014.js @@ -134,9 +134,12 @@ function enterArena(arenaPlayers) { return; } else if (expedicao == null) { if (arenaPlayers != -1) { - if (cm.createExpedition(exped, true, 0, arenaPlayers)) { + var res = cm.createExpedition(exped, true, 0, arenaPlayers); + if (res == 0) { cm.warp(map, 0); cm.getPlayer().dropMessage("Your arena was created successfully. Wait for people to join the battle."); + } else if (res > 0) { + cm.sendOk("Sorry, you've already reached the quota of attempts for this expedition! Try again another day..."); } else { cm.sendOk("An unexpected error has occurred when starting the expedition, please try again later."); } diff --git a/scripts/npc/2141001.js b/scripts/npc/2141001.js index 12bdba353a..1c41cf337b 100644 --- a/scripts/npc/2141001.js +++ b/scripts/npc/2141001.js @@ -67,8 +67,13 @@ function action(mode, type, selection) { cm.sendSimple("#e#b\r\n#k#n" + em.getProperty("party") + "\r\n\r\nWould you like to assemble a team to take on #r" + expedBoss + "#k?\r\n#b#L1#Lets get this going!#l\r\n\#L2#No, I think I'll wait a bit...#l"); status = 1; } else if (expedition.isLeader(player)) { //If you're the leader, manage the exped - cm.sendSimple(list); - status = 2; + if (expedition.isInProgress()) { + cm.sendOk("Your expedition is already in progress, for those who remain battling lets pray for those brave souls."); + cm.dispose(); + } else { + cm.sendSimple(list); + status = 2; + } } else if (expedition.isRegistering()) { //If the expedition is registering if (expedition.contains(player)) { //If you're in it but it hasn't started, be patient cm.sendOk("You have already registered for the expedition. Please wait for #r" + expedition.getLeader().getName() + "#k to begin it."); @@ -101,8 +106,11 @@ function action(mode, type, selection) { return; } - if (cm.createExpedition(exped)) { + var res = cm.createExpedition(exped); + if (res == 0) { cm.sendOk("The #r" + expedBoss + " Expedition#k has been created.\r\n\r\nTalk to me again to view the current team, or start the fight!"); + } else if (res > 0) { + cm.sendOk("Sorry, you've already reached the quota of attempts for this expedition! Try again another day..."); } else { cm.sendOk("An unexpected error has occurred when starting the expedition, please try again later."); } diff --git a/scripts/npc/9060000.js b/scripts/npc/9060000.js index 6120d47d68..4181d1e6ec 100644 --- a/scripts/npc/9060000.js +++ b/scripts/npc/9060000.js @@ -20,9 +20,12 @@ along with this program. If not, see . */ var status = -1; +var completed; function start() { - if (cm.haveItem(4031508, 5) && cm.haveItem(4031507,5)) { + completed = cm.haveItem(4031508, 5) && cm.haveItem(4031507,5); + + if (completed) { cm.sendNext("Wow~ You have succeeded in collecting 5 of each #b#t4031508##k and #b#t4031507##k. Okay then, I will send you to Zoo. Please talk to me again when you get there."); } else { cm.sendYesNo("You haven't completed the requirements. Are you sure you want to leave?"); @@ -36,9 +39,15 @@ function action(mode, type, selection){ return; } - if(status == 0) cm.sendOk("Well okay, I will send you back."); - else { - cm.getEventInstance().clearPQ(); + if(status == 0) { + cm.sendOk("Well okay, I will send you back."); + } else { + if (completed) { + cm.getEventInstance().clearPQ(); + } else { + cm.warp(923010100); + } + cm.dispose(); } } \ No newline at end of file diff --git a/scripts/npc/9120201.js b/scripts/npc/9120201.js index fd201e1de3..13be378b5a 100644 --- a/scripts/npc/9120201.js +++ b/scripts/npc/9120201.js @@ -65,8 +65,13 @@ function action(mode, type, selection) { cm.sendSimple("#e#b\r\n#k#n" + em.getProperty("party") + "\r\n\r\nWould you like to assemble a team to take on #r" + expedBoss + "#k?\r\n#b#L1#Lets get this going!#l\r\n\#L2#No, I think I'll wait a bit...#l"); status = 1; } else if (expedition.isLeader(player)) { //If you're the leader, manage the exped - cm.sendSimple(list); - status = 2; + if (expedition.isInProgress()) { + cm.sendOk("Your expedition is already in progress, for those who remain battling lets pray for those brave souls."); + cm.dispose(); + } else { + cm.sendSimple(list); + status = 2; + } } else if (expedition.isRegistering()) { //If the expedition is registering if (expedition.contains(player)) { //If you're in it but it hasn't started, be patient cm.sendOk("You have already registered for the expedition. Please wait for #r" + expedition.getLeader().getName() + "#k to begin it."); @@ -105,8 +110,11 @@ function action(mode, type, selection) { return; } - if (cm.createExpedition(exped)) { + var res = cm.createExpedition(exped); + if (res == 0) { cm.sendOk("The #r" + expedBoss + " Expedition#k has been created.\r\n\r\nTalk to me again to view the current team, or start the fight!"); + } else if (res > 0) { + cm.sendOk("Sorry, you've already reached the quota of attempts for this expedition! Try again another day..."); } else { cm.sendOk("An unexpected error has occurred when starting the expedition, please try again later."); } diff --git a/scripts/npc/9201113.js b/scripts/npc/9201113.js index fa7b31b743..766cae86de 100644 --- a/scripts/npc/9201113.js +++ b/scripts/npc/9201113.js @@ -61,8 +61,13 @@ function action(mode, type, selection) { cm.sendSimple("#e#b\r\n#k#n" + em.getProperty("party") + "\r\n\r\nWould you like to assemble a team to attempt the #rCrimsonwood Keep Party Quest#k?\r\n#b#L1#Lets get this going!#l\r\n\#L2#No, I think I'll wait a bit...#l"); status = 1; } else if (expedition.isLeader(player)) { //If you're the leader, manage the exped - cm.sendSimple(list); - status = 2; + if (expedition.isInProgress()) { + cm.sendOk("Your expedition is already in progress, for those who remain battling lets pray for those brave souls."); + cm.dispose(); + } else { + cm.sendSimple(list); + status = 2; + } } else if (expedition.isRegistering()) { //If the expedition is registering if (expedition.contains(player)) { //If you're in it but it hasn't started, be patient cm.sendOk("You have already registered for the expedition. Please wait for #r" + expedition.getLeader().getName() + "#k to begin it."); @@ -89,8 +94,11 @@ function action(mode, type, selection) { return; } - if (cm.createExpedition(cwkpq)) { + var res = cm.createExpedition(cwkpq); + if (res == 0) { cm.sendOk("The #rCrimsonwood Keep Party Quest Expedition#k has been created.\r\n\r\nTalk to me again to view the current team, or start the fight!"); + } else if (res > 0) { + cm.sendOk("Sorry, you've already reached the quota of attempts for this expedition! Try again another day..."); } else { cm.sendOk("An unexpected error has occurred when starting the expedition, please try again later."); } diff --git a/scripts/npc/9270047.js b/scripts/npc/9270047.js index a660524100..b77399be54 100644 --- a/scripts/npc/9270047.js +++ b/scripts/npc/9270047.js @@ -66,8 +66,13 @@ function action(mode, type, selection) { cm.sendSimple("#e#b\r\n#k#n" + em.getProperty("party") + "\r\n\r\nWould you like to assemble a team to take on #r" + expedBoss + "#k?\r\n#b#L1#Lets get this going!#l\r\n\#L2#No, I think I'll wait a bit...#l"); status = 1; } else if (expedition.isLeader(player)) { //If you're the leader, manage the exped - cm.sendSimple(list); - status = 2; + if (expedition.isInProgress()) { + cm.sendOk("Your expedition is already in progress, for those who remain battling lets pray for those brave souls."); + cm.dispose(); + } else { + cm.sendSimple(list); + status = 2; + } } else if (expedition.isRegistering()) { //If the expedition is registering if (expedition.contains(player)) { //If you're in it but it hasn't started, be patient cm.sendOk("You have already registered for the expedition. Please wait for #r" + expedition.getLeader().getName() + "#k to begin it."); @@ -106,8 +111,11 @@ function action(mode, type, selection) { return; } - if (cm.createExpedition(exped)) { + var res = cm.createExpedition(exped); + if (res == 0) { cm.sendOk("The #r" + expedBoss + " Expedition#k has been created.\r\n\r\nTalk to me again to view the current team, or start the fight!"); + } else if (res > 0) { + cm.sendOk("Sorry, you've already reached the quota of attempts for this expedition! Try again another day..."); } else { cm.sendOk("An unexpected error has occurred when starting the expedition, please try again later."); } diff --git a/scripts/npc/9900000.js b/scripts/npc/9900000.js index cf5dffdb19..6407ca43f5 100644 --- a/scripts/npc/9900000.js +++ b/scripts/npc/9900000.js @@ -40,6 +40,12 @@ var facenew = Array(); var colors = Array(); var price = 100000; +function pushIfItemExists(array, itemid) { + if ((itemid = cm.getCosmeticItem(itemid)) != -1 && !cm.isCosmeticEquipped(itemid)) { // thanks Conrad for noticing NPC crashing the player when trying to display inexistent cosmetics + array.push(itemid); + } +} + function start() { if(cm.getPlayer().gmLevel() < 1) { cm.sendOk("Hey wassup?"); @@ -67,21 +73,21 @@ function action(mode, type, selection) { cm.sendStyle("Pick one?", skin); else if (selection == 1 || selection == 5) { for each(var i in selection == 1 ? hair : fhair) - hairnew.push(i); + pushIfItemExists(hairnew, i); cm.sendStyle("Pick one?", hairnew); } else if (selection == 2) { var baseHair = parseInt(cm.getPlayer().getHair() / 10) * 10; for(var k = 0; k < 8; k++) - haircolor.push(baseHair + k); + pushIfItemExists(haircolor, baseHair + k); cm.sendStyle("Pick one?", haircolor); } else if (selection == 3 || selection == 6) { for each(var j in selection == 3 ? face : fface) - facenew.push(j); + pushIfItemExists(facenew, j); cm.sendStyle("Pick one?", facenew); } else if (selection == 4) { var baseFace = parseInt(cm.getPlayer().getFace() / 1000) * 1000 + parseInt(cm.getPlayer().getFace() % 100); for(var i = 0; i < 9; i++) - colors.push(baseFace + (i*100)); + pushIfItemExists(colors, baseFace + (i*100)); cm.sendStyle("Pick one?", colors); } } else { diff --git a/scripts/npc/credits.js b/scripts/npc/credits.js index b683623e81..3b2bb13796 100644 --- a/scripts/npc/credits.js +++ b/scripts/npc/credits.js @@ -13,7 +13,7 @@ var name_cursor, role_cursor; // new server names are to be appended at the start of the name stack, building up the chronology. // make sure the server names are lexicograffically equivalent to their correspondent function. -var servers = ["HeavenMS", "MapleSolaxia", "MoopleDEV", "MetroMS", "BubblesDEV", "ThePackII", "OdinMS", "Contributors"]; +var servers = ["HeavenMS", "MapleSolaxia", "MoopleDEV", "MetroMS", "BubblesDEV", "OdinMS", "Contributors"]; var servers_history = []; function addPerson(name, role) { @@ -41,7 +41,7 @@ function writeServerStaff_HeavenMS() { addPerson("Masterrulax", "Contributor"); addPerson("MedicOP", "Adjunct Developer"); - setHistory(2015, 2018); + setHistory(2015, 2019); } function writeServerStaff_MapleSolaxia() { @@ -58,26 +58,28 @@ function writeServerStaff_MapleSolaxia() { } function writeServerStaff_MoopleDEV() { - addPerson("conan513", "Administrator"); addPerson("kevintjuh93", "Developer"); + addPerson("hindie93", "Contributor"); + addPerson("JuniarZ-", "Contributor"); + setHistory(2010, 2012); } function writeServerStaff_MetroMS() { - addPerson("Moogra", "Developer"); + addPerson("David!", "Developer"); + addPerson("XxOsirisxX", "Contributor"); + addPerson("Generic", "Contributor"); + setHistory(2009, 2010); } function writeServerStaff_BubblesDEV() { - addPerson("Deagan", "Administrator"); - addPerson("XxOsirisxX", "Developer"); - setHistory(2009, 2009); -} - -function writeServerStaff_ThePackII() { - addPerson("Hofer", "Developer"); + addPerson("David!", "Developer"); addPerson("Moogra", "Developer"); - setHistory(2008, 2009); + addPerson("XxOsirisxX", "Contributor"); + addPerson("MrMysterious", "Contributor"); + + setHistory(2009, 2009); } function writeServerStaff_OdinMS() { @@ -86,6 +88,7 @@ function writeServerStaff_OdinMS() { addPerson("Patrick", "Developer"); addPerson("Matze", "Developer"); addPerson("Vimes", "Developer"); + setHistory(2007, 2008); } diff --git a/sql/db_database.sql b/sql/db_database.sql index 0827a5e609..6bd4014580 100644 --- a/sql/db_database.sql +++ b/sql/db_database.sql @@ -12827,7 +12827,7 @@ CREATE TABLE IF NOT EXISTS `dueypackages` ( `ReceiverId` int(10) unsigned NOT NULL, `SenderName` varchar(13) NOT NULL, `Mesos` int(10) unsigned DEFAULT '0', - `TimeStamp` varchar(10) NOT NULL, + `TimeStamp` timestamp NOT NULL DEFAULT '2015-01-01 05:00:00', `Message` varchar(200) NOT NULL DEFAULT "", `Checked` tinyint(1) unsigned DEFAULT '1', `Type` tinyint(1) unsigned DEFAULT '0', diff --git a/src/client/MapleCharacter.java b/src/client/MapleCharacter.java index 0a253cd9a8..764d5695ea 100644 --- a/src/client/MapleCharacter.java +++ b/src/client/MapleCharacter.java @@ -168,6 +168,7 @@ import server.maps.MapleMapItem; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import org.apache.mina.util.ConcurrentHashSet; +import server.maps.FieldLimit; public class MapleCharacter extends AbstractMapleCharacterObject { private static final MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); @@ -2956,9 +2957,9 @@ public class MapleCharacter extends AbstractMapleCharacterObject { expiration = item.getExpiration(); if (expiration != -1 && (expiration < currenttime) && ((item.getFlag() & ItemConstants.LOCK) == ItemConstants.LOCK)) { - byte aids = item.getFlag(); - aids &= ~(ItemConstants.LOCK); - item.setFlag(aids); //Probably need a check, else people can make expiring items into permanent items... + short lock = item.getFlag(); + lock &= ~(ItemConstants.LOCK); + item.setFlag(lock); //Probably need a check, else people can make expiring items into permanent items... item.setExpiration(-1); forceUpdateItem(item); //TEST :3 } else if (expiration != -1 && expiration < currenttime) { @@ -6099,7 +6100,8 @@ public class MapleCharacter extends AbstractMapleCharacterObject { public boolean isPartyLeader() { prtLock.lock(); try { - return party.getLeaderId() == getId(); + MapleParty party = getParty(); + return party != null && party.getLeaderId() == getId(); } finally { prtLock.unlock(); } @@ -6410,7 +6412,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { prtLock.lock(); try { party = getParty(); - partyLeader = party != null && isPartyLeader(); + partyLeader = isPartyLeader(); } finally { prtLock.unlock(); } @@ -6932,7 +6934,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { ret.getInventory(MapleInventoryType.SETUP).setSlotLimit(rs.getByte("setupslots")); ret.getInventory(MapleInventoryType.ETC).setSlotLimit(rs.getByte("etcslots")); - byte sandboxCheck = 0x0; + short sandboxCheck = 0x0; for (Pair item : ItemFactory.INVENTORY.loadItems(ret.id, !channelserver)) { sandboxCheck |= item.getLeft().getFlag(); @@ -7402,28 +7404,29 @@ public class MapleCharacter extends AbstractMapleCharacterObject { if (possesed > 0) { message("You have used a safety charm, so your EXP points have not been decreased."); MapleInventoryManipulator.removeById(client, ItemConstants.getInventoryType(charmID[i]), charmID[i], 1, true, false); - } else if (mapid > 925020000 && mapid < 925030000) { - this.dojoStage = 0; } else if (getJob() != MapleJob.BEGINNER) { //Hmm... - int XPdummy = ExpTable.getExpNeededForLevel(getLevel()); - if (getMap().isTown()) { - XPdummy /= 100; - } - if (XPdummy == ExpTable.getExpNeededForLevel(getLevel())) { - if (getLuk() <= 100 && getLuk() > 8) { - XPdummy *= (200 - getLuk()) / 2000; - } else if (getLuk() < 8) { - XPdummy /= 10; + if (!FieldLimit.NO_EXP_DECREASE.check(getMap().getFieldLimit())) { // thanks Conrad for noticing missing FieldLimit check + int XPdummy = ExpTable.getExpNeededForLevel(getLevel()); + if (getMap().isTown()) { + XPdummy /= 100; + } + if (XPdummy == ExpTable.getExpNeededForLevel(getLevel())) { + if (getLuk() <= 100 && getLuk() > 8) { + XPdummy *= (200 - getLuk()) / 2000; + } else if (getLuk() < 8) { + XPdummy /= 10; + } else { + XPdummy /= 20; + } + } + if (getExp() > XPdummy) { + loseExp(XPdummy, false, false); } else { - XPdummy /= 20; + loseExp(getExp(), false, false); } } - if (getExp() > XPdummy) { - loseExp(XPdummy, false, false); - } else { - loseExp(getExp(), false, false); - } } + if (getBuffedValue(MapleBuffStat.MORPH) != null) { cancelEffectFromBuffStat(MapleBuffStat.MORPH); } @@ -9168,10 +9171,10 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } private static void setMergeFlag(Item item) { - int flag = item.getFlag(); + short flag = item.getFlag(); flag |= ItemConstants.MERGE_UNTRADEABLE; flag |= ItemConstants.UNTRADEABLE; - item.setFlag((byte) flag); + item.setFlag(flag); } private List getUpgradeableEquipped() { @@ -9911,6 +9914,10 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public void autoban(String reason) { + if (this.isGM() || this.isBanned()){ // thanks RedHat for noticing GM's being able to get banned + return; + } + this.ban(reason); announce(MaplePacketCreator.sendPolice(String.format("You have been blocked by the#b %s Police for HACK reason.#k", "HeavenMS"))); TimerManager.getInstance().schedule(new Runnable() { diff --git a/src/client/autoban/AutobanManager.java b/src/client/autoban/AutobanManager.java index 14d8f25370..a3da536387 100644 --- a/src/client/autoban/AutobanManager.java +++ b/src/client/autoban/AutobanManager.java @@ -33,10 +33,11 @@ public class AutobanManager { } public void addPoint(AutobanFactory fac, String reason) { - if (chr.isGM() || chr.isBanned()){ - return; - } if (ServerConstants.USE_AUTOBAN) { + if (chr.isGM() || chr.isBanned()){ + return; + } + if (lastTime.containsKey(fac)) { if (lastTime.get(fac) < (Server.getInstance().getCurrentTime() - fac.getExpire())) { points.put(fac, points.get(fac) / 2); //So the points are not completely gone. diff --git a/src/client/command/commands/gm2/ItemCommand.java b/src/client/command/commands/gm2/ItemCommand.java index 3d05313ec2..e59df0d908 100644 --- a/src/client/command/commands/gm2/ItemCommand.java +++ b/src/client/command/commands/gm2/ItemCommand.java @@ -77,12 +77,12 @@ public class ItemCommand extends Command { } } - byte flag = 0; + short flag = 0; if(player.gmLevel() < 3) { flag |= ItemConstants.ACCOUNT_SHARING; flag |= ItemConstants.UNTRADEABLE; } - + MapleInventoryManipulator.addById(c, itemId, quantity, player.getName(), -1, flag, -1); } } diff --git a/src/client/command/commands/gm2/ItemDropCommand.java b/src/client/command/commands/gm2/ItemDropCommand.java index 8a4ff185c7..2185fd7df5 100644 --- a/src/client/command/commands/gm2/ItemDropCommand.java +++ b/src/client/command/commands/gm2/ItemDropCommand.java @@ -75,12 +75,12 @@ public class ItemDropCommand extends Command { toDrop.setOwner(""); if(player.gmLevel() < 3) { - byte b = toDrop.getFlag(); - b |= ItemConstants.ACCOUNT_SHARING; - b |= ItemConstants.UNTRADEABLE; - b |= ItemConstants.SANDBOX; + short f = toDrop.getFlag(); + f |= ItemConstants.ACCOUNT_SHARING; + f |= ItemConstants.UNTRADEABLE; + f |= ItemConstants.SANDBOX; - toDrop.setFlag(b); + toDrop.setFlag(f); toDrop.setOwner("TRIAL-MODE"); } @@ -102,12 +102,12 @@ public class ItemDropCommand extends Command { toDrop.setOwner(player.getName()); if(player.gmLevel() < 3) { - byte b = toDrop.getFlag(); - b |= ItemConstants.ACCOUNT_SHARING; - b |= ItemConstants.UNTRADEABLE; - b |= ItemConstants.SANDBOX; + short f = toDrop.getFlag(); + f |= ItemConstants.ACCOUNT_SHARING; + f |= ItemConstants.UNTRADEABLE; + f |= ItemConstants.SANDBOX; - toDrop.setFlag(b); + toDrop.setFlag(f); toDrop.setOwner("TRIAL-MODE"); } diff --git a/src/client/command/commands/gm2/LootCommand.java b/src/client/command/commands/gm2/LootCommand.java new file mode 100644 index 0000000000..fb43fac434 --- /dev/null +++ b/src/client/command/commands/gm2/LootCommand.java @@ -0,0 +1,51 @@ +/* + This file is part of the HeavenMS MapleStory Server, commands OdinMS-based + Copyleft (L) 2016 - 2018 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +/* + @Author: Resinate +*/ +package client.command.commands.gm2; + +import client.MapleClient; +import client.command.Command; +import java.util.Arrays; +import java.util.List; +import server.maps.MapleMapItem; +import server.maps.MapleMapObject; +import server.maps.MapleMapObjectType; + +public class LootCommand extends Command { + + { + setDescription("Loots all items that belong to you."); + } + + @Override + public void execute(MapleClient c, String[] params) { + List items = c.getPlayer().getMap().getMapObjectsInRange(c.getPlayer().getPosition(), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.ITEM)); + for (MapleMapObject item : items) { + MapleMapItem mapItem = (MapleMapItem) item; + if (mapItem.getOwnerId() == c.getPlayer().getId() || mapItem.getOwnerId() == c.getPlayer().getPartyId()) { + c.getPlayer().pickupItem(mapItem); + } + } + + } +} diff --git a/src/client/command/commands/gm4/PapCommand.java b/src/client/command/commands/gm4/PapCommand.java index 1b9f2e5fd1..0e5464259e 100644 --- a/src/client/command/commands/gm4/PapCommand.java +++ b/src/client/command/commands/gm4/PapCommand.java @@ -36,6 +36,8 @@ public class PapCommand extends Command { @Override public void execute(MapleClient c, String[] params) { MapleCharacter player = c.getPlayer(); - player.getMap().spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8510000), player.getPosition()); + + // thanks Conrad for noticing mobid typo here + player.getMap().spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8500001), player.getPosition()); } } diff --git a/src/client/command/commands/gm4/ProItemCommand.java b/src/client/command/commands/gm4/ProItemCommand.java index 86ff99636b..551a98b10c 100644 --- a/src/client/command/commands/gm4/ProItemCommand.java +++ b/src/client/command/commands/gm4/ProItemCommand.java @@ -84,7 +84,7 @@ public class ProItemCommand extends Command { equip.setHp(stat); equip.setMp(stat); - byte flag = equip.getFlag(); + short flag = equip.getFlag(); flag |= ItemConstants.UNTRADEABLE; equip.setFlag(flag); } diff --git a/src/client/command/commands/gm4/SetEqStatCommand.java b/src/client/command/commands/gm4/SetEqStatCommand.java index 61546c6420..e1f623bd14 100644 --- a/src/client/command/commands/gm4/SetEqStatCommand.java +++ b/src/client/command/commands/gm4/SetEqStatCommand.java @@ -68,7 +68,7 @@ public class SetEqStatCommand extends Command { eq.setStr(newStat); eq.setLuk(newStat); - byte flag = eq.getFlag(); + short flag = eq.getFlag(); flag |= ItemConstants.UNTRADEABLE; eq.setFlag(flag); diff --git a/src/client/inventory/Equip.java b/src/client/inventory/Equip.java index ec5c6941ae..93f9ff0387 100644 --- a/src/client/inventory/Equip.java +++ b/src/client/inventory/Equip.java @@ -64,7 +64,8 @@ public class Equip extends Item { } private byte upgradeSlots; - private byte level, flag, itemLevel; + private byte level, itemLevel; + private short flag; private short str, dex, _int, luk, hp, mp, watk, matk, wdef, mdef, acc, avoid, hands, speed, jump, vicious; private float itemExp; private int ringid = -1; @@ -117,7 +118,7 @@ public class Equip extends Item { } @Override - public byte getFlag() { + public short getFlag() { return flag; } @@ -195,7 +196,7 @@ public class Equip extends Item { } @Override - public void setFlag(byte flag) { + public void setFlag(short flag) { this.flag = flag; } diff --git a/src/client/inventory/Item.java b/src/client/inventory/Item.java index 74ca97932e..49417464c9 100644 --- a/src/client/inventory/Item.java +++ b/src/client/inventory/Item.java @@ -40,7 +40,7 @@ public class Item implements Comparable { private MaplePet pet = null; private String owner = ""; protected List log; - private byte flag; + private short flag; private long expiration = -1; private String giftFrom = ""; @@ -146,11 +146,16 @@ public class Item implements Comparable { return Collections.unmodifiableList(log); } - public byte getFlag() { + public short getFlag() { return flag; } - public void setFlag(byte b) { + public void setFlag(short b) { + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + if (ii.isAccountRestricted(id)) { + b |= ItemConstants.ACCOUNT_SHARING; // thanks Shinigami15 for noticing ACCOUNT_SHARING flag not being applied properly to items server-side + } + this.flag = b; } diff --git a/src/client/inventory/ItemFactory.java b/src/client/inventory/ItemFactory.java index 4dab3c2a7b..bce04120a0 100644 --- a/src/client/inventory/ItemFactory.java +++ b/src/client/inventory/ItemFactory.java @@ -97,7 +97,7 @@ public enum ItemFactory { equip.setInt((short) rs.getInt("int")); equip.setJump((short) rs.getInt("jump")); equip.setVicious((short) rs.getInt("vicious")); - equip.setFlag((byte) rs.getInt("flag")); + equip.setFlag((short) rs.getInt("flag")); equip.setLuk((short) rs.getInt("luk")); equip.setMatk((short) rs.getInt("matk")); equip.setMdef((short) rs.getInt("mdef")); @@ -177,7 +177,7 @@ public enum ItemFactory { item.setOwner(rs.getString("owner")); item.setExpiration(rs.getLong("expiration")); item.setGiftFrom(rs.getString("giftFrom")); - item.setFlag((byte) rs.getInt("flag")); + item.setFlag((short) rs.getInt("flag")); items.add(new Pair<>(item, mit)); } } @@ -333,7 +333,7 @@ public enum ItemFactory { item.setOwner(rs.getString("owner")); item.setExpiration(rs.getLong("expiration")); item.setGiftFrom(rs.getString("giftFrom")); - item.setFlag((byte) rs.getInt("flag")); + item.setFlag((short) rs.getInt("flag")); items.add(new Pair<>(item, mit)); } } diff --git a/src/client/inventory/manipulator/MapleInventoryManipulator.java b/src/client/inventory/manipulator/MapleInventoryManipulator.java index 579dddb25f..cb88ca7419 100644 --- a/src/client/inventory/manipulator/MapleInventoryManipulator.java +++ b/src/client/inventory/manipulator/MapleInventoryManipulator.java @@ -68,7 +68,7 @@ public class MapleInventoryManipulator { return addById(c, itemId, quantity, owner, petid, (byte) 0, expiration); } - public static boolean addById(MapleClient c, int itemId, short quantity, String owner, int petid, byte flag, long expiration) { + public static boolean addById(MapleClient c, int itemId, short quantity, String owner, int petid, short flag, long expiration) { MapleCharacter chr = c.getPlayer(); MapleInventoryType type = ItemConstants.getInventoryType(itemId); @@ -90,7 +90,7 @@ public class MapleInventoryManipulator { } } - private static boolean addByIdInternal(MapleClient c, MapleCharacter chr, MapleInventoryType type, MapleInventory inv, int itemId, short quantity, String owner, int petid, byte flag, long expiration) { + private static boolean addByIdInternal(MapleClient c, MapleCharacter chr, MapleInventoryType type, MapleInventory inv, int itemId, short quantity, String owner, int petid, short flag, long expiration) { MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); if (!type.equals(MapleInventoryType.EQUIP)) { short slotMax = ii.getSlotMax(c, itemId); diff --git a/src/client/inventory/manipulator/MapleKarmaManipulator.java b/src/client/inventory/manipulator/MapleKarmaManipulator.java index 93e0874dda..faf3d5fc89 100644 --- a/src/client/inventory/manipulator/MapleKarmaManipulator.java +++ b/src/client/inventory/manipulator/MapleKarmaManipulator.java @@ -27,18 +27,18 @@ import client.inventory.Item; * @author RonanLana */ public class MapleKarmaManipulator { - private static int getKarmaFlag(Item item) { + private static short getKarmaFlag(Item item) { return item.getItemType() == 1 ? ItemConstants.KARMA_EQP : ItemConstants.KARMA_USE; } public static boolean hasKarmaFlag(Item item) { - int karmaFlag = getKarmaFlag(item); + short karmaFlag = getKarmaFlag(item); return (item.getFlag() & karmaFlag) == karmaFlag; } public static void toggleKarmaFlagToUntradeable(Item item) { - int karmaFlag = getKarmaFlag(item); - int flag = item.getFlag(); + short karmaFlag = getKarmaFlag(item); + short flag = item.getFlag(); if ((flag & karmaFlag) == karmaFlag) { flag ^= karmaFlag; @@ -49,8 +49,8 @@ public class MapleKarmaManipulator { } public static void setKarmaFlag(Item item) { - int karmaFlag = getKarmaFlag(item); - int flag = item.getFlag(); + short karmaFlag = getKarmaFlag(item); + short flag = item.getFlag(); flag |= karmaFlag; flag &= (0xFFFFFFFF ^ ItemConstants.UNTRADEABLE); diff --git a/src/client/processor/DueyProcessor.java b/src/client/processor/DueyProcessor.java index c0490b64a6..793b0c179e 100644 --- a/src/client/processor/DueyProcessor.java +++ b/src/client/processor/DueyProcessor.java @@ -39,6 +39,7 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; +import java.sql.Timestamp; import java.util.Calendar; import java.util.Collections; import java.util.LinkedList; @@ -112,21 +113,13 @@ public class DueyProcessor { return null; } - private static String getCurrentDate(boolean quick) { - String date = ""; + private static Timestamp getCurrentDate(boolean quick) { Calendar cal = Calendar.getInstance(); if (!quick) { cal.add(Calendar.DATE, 1); } - int day = cal.get(Calendar.DATE); - int month = cal.get(Calendar.MONTH) + 1; // its an array of months. - int year = cal.get(Calendar.YEAR); - date += day <= 9 ? "0" + day + "-" : "" + day + "-"; - date += month <= 9 ? "0" + month + "-" : "" + month + "-"; - date += year; - - return date; + return new Timestamp(cal.getTime().getTime()); } private static void showDueyNotification(MapleClient c, MapleCharacter player) { @@ -211,7 +204,7 @@ public class DueyProcessor { dueypack.setSender(rs.getString("SenderName")); dueypack.setMesos(rs.getInt("Mesos")); - dueypack.setSentTime(rs.getString("TimeStamp")); + dueypack.setSentTime(rs.getTimestamp("TimeStamp")); dueypack.setMessage(rs.getString("Message")); return dueypack; @@ -257,7 +250,7 @@ public class DueyProcessor { ps.setInt(1, toCid); ps.setString(2, sender); ps.setInt(3, mesos); - ps.setString(4, getCurrentDate(quick)); + ps.setTimestamp(4, getCurrentDate(quick)); ps.setString(5, message); ps.setInt(6, quick ? 1 : 0); @@ -468,11 +461,16 @@ public class DueyProcessor { } con.close(); - if(dp == null) { + if (dp == null) { c.announce(MaplePacketCreator.sendDueyMSG(Actions.TOCLIENT_RECV_UNKNOWN_ERROR.getCode())); FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to receive package from duey with id " + packageId); return; } + + if (dp.isDeliveringTime()) { + c.announce(MaplePacketCreator.sendDueyMSG(Actions.TOCLIENT_RECV_UNKNOWN_ERROR.getCode())); + return; + } Item dpItem = dp.getItem(); if (dpItem != null) { @@ -530,4 +528,38 @@ public class DueyProcessor { insertPackageItem(packageId, item); } } + + public static void runDueyExpireSchedule() { + try { + Calendar c = Calendar.getInstance(); + c.add(Calendar.DATE, -30); + + Timestamp ts = new Timestamp(c.getTime().getTime()); + + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("SELECT `PackageId` FROM dueypackages WHERE `TimeStamp` < ?"); + ps.setTimestamp(1, ts); + + List toRemove = new LinkedList<>(); + try (ResultSet rs = ps.executeQuery()) { + while (rs.next()) { + toRemove.add(rs.getInt("PackageId")); + } + } + ps.close(); + + for (Integer pid : toRemove) { + removePackageFromDB(pid); + } + + ps = con.prepareStatement("DELETE FROM dueypackages WHERE `TimeStamp` < ?"); + ps.setTimestamp(1, ts); + ps.executeUpdate(); + ps.close(); + + con.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } } diff --git a/src/constants/ItemConstants.java b/src/constants/ItemConstants.java index ab7ea7d240..c3ff38e458 100644 --- a/src/constants/ItemConstants.java +++ b/src/constants/ItemConstants.java @@ -35,16 +35,16 @@ import java.util.Map; public final class ItemConstants { protected static Map inventoryTypeCache = new HashMap<>(); - public final static int LOCK = 0x01; - public final static int SPIKES = 0x02; - public final static int KARMA_USE = 0x02; - public final static int COLD = 0x04; - public final static int UNTRADEABLE = 0x08; - public final static int KARMA_EQP = 0x10; - public final static int SANDBOX = 0x40; // let 0x40 until it's proven something uses this - public final static int PET_COME = 0x80; - public final static int ACCOUNT_SHARING = 0x100; - public final static int MERGE_UNTRADEABLE = 0x200; + public final static short LOCK = 0x01; + public final static short SPIKES = 0x02; + public final static short KARMA_USE = 0x02; + public final static short COLD = 0x04; + public final static short UNTRADEABLE = 0x08; + public final static short KARMA_EQP = 0x10; + public final static short SANDBOX = 0x40; // let 0x40 until it's proven something uses this + public final static short PET_COME = 0x80; + public final static short ACCOUNT_SHARING = 0x100; + public final static short MERGE_UNTRADEABLE = 0x200; public final static boolean EXPIRING_ITEMS = true; public final static Set permanentItemids = new HashSet<>(); @@ -147,7 +147,7 @@ public final class ItemConstants { return scrollId == 2040727 || scrollId == 2041058; } - public static boolean isFlagModifier(int scrollId, byte flag) { + public static boolean isFlagModifier(int scrollId, short flag) { if(scrollId == 2041058 && ((flag & ItemConstants.COLD) == ItemConstants.COLD)) return true; if(scrollId == 2040727 && ((flag & ItemConstants.SPIKES) == ItemConstants.SPIKES)) return true; return false; diff --git a/src/constants/ServerConstants.java b/src/constants/ServerConstants.java index 8ebbe4537b..4959f1e1d2 100644 --- a/src/constants/ServerConstants.java +++ b/src/constants/ServerConstants.java @@ -116,9 +116,10 @@ public class ServerConstants { public static final boolean USE_NPCS_SCRIPTABLE = true; //Flag to enable/disable serverside predefined script NPCs. //Events/PQs Configuration - public static final boolean USE_OLD_GMS_STYLED_PQ_NPCS = true; //Enables PQ NPCs with similar behaviour to old GMS style, that skips info about the PQs and immediately tries to register the party in. - public static final boolean USE_ENABLE_SOLO_EXPEDITIONS = true; //Enables start expeditions with any number of players. This will also bypass all the Zakum prequest. - public static final boolean USE_ENABLE_RECALL_EVENT = true; //Enables a disconnected player to reaccess the last event instance they were in before logging out. Recall only works if the event isn't cleared or disposed yet. Suggestion thanks to Alisson (Goukken). + public static final boolean USE_OLD_GMS_STYLED_PQ_NPCS = true; //Enables PQ NPCs with similar behaviour to old GMS style, that skips info about the PQs and immediately tries to register the party in. + public static final boolean USE_ENABLE_SOLO_EXPEDITIONS = true; //Enables start expeditions with any number of players. This will also bypass all the Zakum prequest. + public static final boolean USE_ENABLE_DAILY_EXPEDITIONS = false;//Enables daily entry limitations in expeditions. + public static final boolean USE_ENABLE_RECALL_EVENT = false; //Enables a disconnected player to reaccess the last event instance they were in before logging out. Recall only works if the event isn't cleared or disposed yet. Suggestion thanks to Alisson (Goukken). //Announcement Configuration public static final boolean USE_ANNOUNCE_SHOPITEMSOLD = false; //Automatic message sent to owner when an item from the Player Shop or Hired Merchant is sold. @@ -210,6 +211,7 @@ public class ServerConstants { public static final boolean USE_FAST_REUSE_HERO_WILL = true;//Greatly reduce cooldown on Hero's Will. public static final boolean USE_ANTI_IMMUNITY_CRASH = true; //Crash skills additionally removes the mob's invincibility buffs. Suggestion thanks to Celestial. public static final boolean USE_UNDISPEL_HOLY_SHIELD = true;//Holy shield buff also prevents players from suffering dispel from mobs. + public static final boolean USE_FULL_HOLY_SYMBOL = true; //Holy symbol doesn't require EXP sharers to work in full. //Character Configuration public static final boolean USE_ADD_SLOTS_BY_LEVEL = true; //Slots are added each 20 levels. diff --git a/src/net/opcodes/SendOpcode.java b/src/net/opcodes/SendOpcode.java index 623728b177..7564cf3a0b 100644 --- a/src/net/opcodes/SendOpcode.java +++ b/src/net/opcodes/SendOpcode.java @@ -182,7 +182,7 @@ public enum SendOpcode { CONTI_STATE(0x95), SET_QUEST_CLEAR(0x96), SET_QUEST_TIME(0x97), - WARN_MESSAGE(0x98), + ARIANT_RESULT(0x98), // thanks lrenex SET_OBJECT_STATE(0x99), STOP_CLOCK(0x9A), ARIANT_ARENA_SHOW_RESULT(0x9B), @@ -302,7 +302,7 @@ public enum SendOpcode { ARIANT_ARENA_USER_SCORE(0x129), SHEEP_RANCH_INFO(0x12B), SHEEP_RANCH_CLOTHES(0x12C), - ARIANT_SCORE(0x12D), + WITCH_TOWER_SCORE_UPDATE(0x12D), // thanks lrenex HORNTAIL_CAVE(0x12E), ZAKUM_SHRINE(0x12F), NPC_TALK(0x130), diff --git a/src/net/server/Server.java b/src/net/server/Server.java index f20261411f..1caaf8e614 100644 --- a/src/net/server/Server.java +++ b/src/net/server/Server.java @@ -61,13 +61,14 @@ import net.server.worker.BossLogWorker; import net.server.worker.CharacterDiseaseWorker; import net.server.worker.CouponWorker; import net.server.worker.EventRecallCoordinatorWorker; -import net.server.worker.FredrickWorker; +import net.server.worker.DueyFredrickWorker; import net.server.worker.InvitationWorker; import net.server.worker.LoginCoordinatorWorker; import net.server.worker.LoginStorageWorker; import net.server.worker.RankingCommandWorker; import net.server.worker.RankingLoginWorker; import net.server.worker.ReleaseLockWorker; +import net.server.worker.RespawnWorker; import net.server.world.World; import org.apache.mina.core.buffer.IoBuffer; @@ -904,8 +905,9 @@ public class Server { tMan.register(new LoginCoordinatorWorker(), 60 * 60 * 1000, timeLeft); tMan.register(new EventRecallCoordinatorWorker(), 60 * 60 * 1000, timeLeft); tMan.register(new LoginStorageWorker(), 2 * 60 * 1000, 2 * 60 * 1000); - tMan.register(new FredrickWorker(), 60 * 60 * 1000, 60 * 60 * 1000); + tMan.register(new DueyFredrickWorker(), 60 * 60 * 1000, timeLeft); tMan.register(new InvitationWorker(), 30 * 1000, 30 * 1000); + tMan.register(new RespawnWorker(), ServerConstants.RESPAWN_INTERVAL, ServerConstants.RESPAWN_INTERVAL); timeLeft = getTimeLeftForNextDay(); MapleExpeditionBossLog.resetBossLogTable(); diff --git a/src/net/server/channel/handlers/AbstractDealDamageHandler.java b/src/net/server/channel/handlers/AbstractDealDamageHandler.java index 38ab0d1218..99f92ffbb8 100644 --- a/src/net/server/channel/handlers/AbstractDealDamageHandler.java +++ b/src/net/server/channel/handlers/AbstractDealDamageHandler.java @@ -49,7 +49,6 @@ import tools.data.input.LittleEndianAccessor; import client.MapleBuffStat; import client.MapleCharacter; import client.MapleJob; -import client.MapleStat; import client.Skill; import client.SkillFactory; import client.autoban.AutobanFactory; @@ -650,7 +649,7 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl // Find the base damage to base futher calculations on. // Several skills have their own formula in this section. - int calcDmgMax = 0; + long calcDmgMax = 0; if(magic && ret.skill != 0) { calcDmgMax = (chr.getTotalMagic() * chr.getTotalMagic() / 1000 + chr.getTotalMagic()) / 30 + chr.getTotalInt() / 200; @@ -714,7 +713,7 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl if(comboBuff > 6) { // Advanced Combo MapleStatEffect ceffect = SkillFactory.getSkill(advcomboid).getEffect(chr.getSkillLevel(advcomboid)); - calcDmgMax = (int) Math.floor(calcDmgMax * (ceffect.getDamage() + 50) / 100 + 0.20 + (comboBuff - 5) * 0.04); + calcDmgMax = (long) Math.floor(calcDmgMax * (ceffect.getDamage() + 50) / 100 + 0.20 + (comboBuff - 5) * 0.04); } else { // Normal Combo int skillLv = chr.getSkillLevel(oid); @@ -722,7 +721,7 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl if(skillLv > 0) { MapleStatEffect ceffect = SkillFactory.getSkill(oid).getEffect(skillLv); - calcDmgMax = (int) Math.floor(calcDmgMax * (ceffect.getDamage() + 50) / 100 + Math.floor((comboBuff - 1) * (skillLv / 6)) / 100); + calcDmgMax = (long) Math.floor(calcDmgMax * (ceffect.getDamage() + 50) / 100 + Math.floor((comboBuff - 1) * (skillLv / 6)) / 100); } } @@ -850,7 +849,7 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl for (int j = 0; j < ret.numDamage; j++) { int damage = lea.readInt(); - int hitDmgMax = calcDmgMax; + long hitDmgMax = calcDmgMax; if(ret.skill == Buccaneer.BARRAGE || ret.skill == ThunderBreaker.BARRAGE) { if(j > 3) hitDmgMax *= Math.pow(2, (j - 3)); @@ -870,7 +869,7 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl hitDmgMax = 82569000; // 30% of Max HP of strongest Dojo boss } - int maxWithCrit = hitDmgMax; + long maxWithCrit = hitDmgMax; if(canCrit) // They can crit, so up the max. maxWithCrit *= 2; diff --git a/src/net/server/channel/handlers/DueyHandler.java b/src/net/server/channel/handlers/DueyHandler.java index 34a07e3945..9f7166c1e0 100644 --- a/src/net/server/channel/handlers/DueyHandler.java +++ b/src/net/server/channel/handlers/DueyHandler.java @@ -47,6 +47,7 @@ public final class DueyHandler extends AbstractMaplePacketHandler { String recipient = slea.readMapleAsciiString(); boolean quick = slea.readByte() != 0; String message = quick ? slea.readMapleAsciiString() : ""; + DueyProcessor.dueySendItem(c, inventId, itemPos, amount, mesos, message, recipient, quick); } else if (operation == DueyProcessor.Actions.TOSERVER_REMOVE_PACKAGE.getCode()) { int packageid = slea.readInt(); diff --git a/src/net/server/channel/handlers/EnterMTSHandler.java b/src/net/server/channel/handlers/EnterMTSHandler.java index b62781026e..a3ff880cd3 100644 --- a/src/net/server/channel/handlers/EnterMTSHandler.java +++ b/src/net/server/channel/handlers/EnterMTSHandler.java @@ -141,7 +141,7 @@ public final class EnterMTSHandler extends AbstractMaplePacketHandler { equip.setInt((short) rs.getInt("int")); equip.setJump((short) rs.getInt("jump")); equip.setVicious((short) rs.getInt("vicious")); - equip.setFlag((byte) rs.getInt("flag")); + equip.setFlag((short) rs.getInt("flag")); equip.setLuk((short) rs.getInt("luk")); equip.setMatk((short) rs.getInt("matk")); equip.setMdef((short) rs.getInt("mdef")); @@ -209,7 +209,7 @@ public final class EnterMTSHandler extends AbstractMaplePacketHandler { equip.setWdef((short) rs.getInt("wdef")); equip.setUpgradeSlots((byte) rs.getInt("upgradeslots")); equip.setLevel((byte) rs.getInt("level")); - equip.setFlag((byte) rs.getInt("flag")); + equip.setFlag((short) rs.getInt("flag")); items.add(new MTSItemInfo((Item) equip, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); } } @@ -256,7 +256,7 @@ public final class EnterMTSHandler extends AbstractMaplePacketHandler { equip.setWdef((short) rs.getInt("wdef")); equip.setUpgradeSlots((byte) rs.getInt("upgradeslots")); equip.setLevel((byte) rs.getInt("level")); - equip.setFlag((byte) rs.getInt("flag")); + equip.setFlag((short) rs.getInt("flag")); items.add(new MTSItemInfo((Item) equip, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); } } diff --git a/src/net/server/channel/handlers/MTSHandler.java b/src/net/server/channel/handlers/MTSHandler.java index 054e6f7261..6ebd342c99 100644 --- a/src/net/server/channel/handlers/MTSHandler.java +++ b/src/net/server/channel/handlers/MTSHandler.java @@ -321,7 +321,7 @@ public final class MTSHandler extends AbstractMaplePacketHandler { equip.setUpgradeSlots((byte) rs.getInt("upgradeslots")); equip.setLevel((byte) rs.getInt("level")); equip.setVicious((byte) rs.getInt("vicious")); - equip.setFlag((byte) rs.getInt("flag")); + equip.setFlag((short) rs.getInt("flag")); equip.setPosition(c.getPlayer().getInventory(ItemConstants.getInventoryType(rs.getInt("itemid"))).getNextFreeSlot()); i = equip.copy(); } @@ -568,7 +568,7 @@ public final class MTSHandler extends AbstractMaplePacketHandler { equip.setWdef((short) rs.getInt("wdef")); equip.setUpgradeSlots((byte) rs.getInt("upgradeslots")); equip.setLevel((byte) rs.getInt("level")); - equip.setFlag((byte) rs.getInt("flag")); + equip.setFlag((short) rs.getInt("flag")); items.add(new MTSItemInfo((Item) equip, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); } } @@ -623,7 +623,7 @@ public final class MTSHandler extends AbstractMaplePacketHandler { equip.setWdef((short) rse.getInt("wdef")); equip.setUpgradeSlots((byte) rse.getInt("upgradeslots")); equip.setLevel((byte) rse.getInt("level")); - equip.setFlag((byte) rs.getInt("flag")); + equip.setFlag((short) rs.getInt("flag")); items.add(new MTSItemInfo((Item) equip, rse.getInt("price"), rse.getInt("id"), rse.getInt("seller"), rse.getString("sellername"), rse.getString("sell_ends"))); } } @@ -686,7 +686,7 @@ public final class MTSHandler extends AbstractMaplePacketHandler { equip.setWdef((short) rs.getInt("wdef")); equip.setUpgradeSlots((byte) rs.getInt("upgradeslots")); equip.setLevel((byte) rs.getInt("level")); - equip.setFlag((byte) rs.getInt("flag")); + equip.setFlag((short) rs.getInt("flag")); items.add(new MTSItemInfo((Item) equip, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); } } @@ -747,7 +747,7 @@ public final class MTSHandler extends AbstractMaplePacketHandler { equip.setWdef((short) rs.getInt("wdef")); equip.setUpgradeSlots((byte) rs.getInt("upgradeslots")); equip.setLevel((byte) rs.getInt("level")); - equip.setFlag((byte) rs.getInt("flag")); + equip.setFlag((short) rs.getInt("flag")); items.add(new MTSItemInfo((Item) equip, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); } } @@ -841,7 +841,7 @@ public final class MTSHandler extends AbstractMaplePacketHandler { equip.setWdef((short) rs.getInt("wdef")); equip.setUpgradeSlots((byte) rs.getInt("upgradeslots")); equip.setLevel((byte) rs.getInt("level")); - equip.setFlag((byte) rs.getInt("flag")); + equip.setFlag((short) rs.getInt("flag")); items.add(new MTSItemInfo((Item) equip, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); } } diff --git a/src/net/server/channel/handlers/MobDamageMobFriendlyHandler.java b/src/net/server/channel/handlers/MobDamageMobFriendlyHandler.java index 9146417f5a..bdc8f692b0 100644 --- a/src/net/server/channel/handlers/MobDamageMobFriendlyHandler.java +++ b/src/net/server/channel/handlers/MobDamageMobFriendlyHandler.java @@ -22,6 +22,7 @@ package net.server.channel.handlers; import net.AbstractMaplePacketHandler; +import scripting.event.EventInstanceManager; import server.life.MapleMonster; import server.maps.MapleMap; import tools.MaplePacketCreator; @@ -40,9 +41,11 @@ public final class MobDamageMobFriendlyHandler extends AbstractMaplePacketHandle int attacker = slea.readInt(); slea.readInt(); int damaged = slea.readInt(); - MapleMonster monster = c.getPlayer().getMap().getMonsterByOid(damaged); + + MapleMap map = c.getPlayer().getMap(); + MapleMonster monster = map.getMonsterByOid(damaged); - if (monster == null || c.getPlayer().getMap().getMonsterByOid(attacker) == null) { + if (monster == null || map.getMonsterByOid(attacker) == null) { return; } @@ -50,26 +53,26 @@ public final class MobDamageMobFriendlyHandler extends AbstractMaplePacketHandle if (monster.getHp() - damage < 1) { // friendly dies if(monster.getId() == 9300102) { - monster.getMap().broadcastMessage(MaplePacketCreator.serverNotice(6, "The Watch Hog has been injured by the aliens. Better luck next time...")); + map.broadcastMessage(MaplePacketCreator.serverNotice(6, "The Watch Hog has been injured by the aliens. Better luck next time...")); } else if (monster.getId() == 9300061) { //moon bunny - monster.getMap().broadcastMessage(MaplePacketCreator.serverNotice(6, "The Moon Bunny went home because he was sick.")); + map.broadcastMessage(MaplePacketCreator.serverNotice(6, "The Moon Bunny went home because he was sick.")); } else if(monster.getId() == 9300093) { //tylus - monster.getMap().broadcastMessage(MaplePacketCreator.serverNotice(6, "Tylus has fallen by the overwhelming forces of the ambush.")); + map.broadcastMessage(MaplePacketCreator.serverNotice(6, "Tylus has fallen by the overwhelming forces of the ambush.")); } else if(monster.getId() == 9300137) { //juliet - monster.getMap().broadcastMessage(MaplePacketCreator.serverNotice(6, "Juliet has fainted in the middle of the combat.")); + map.broadcastMessage(MaplePacketCreator.serverNotice(6, "Juliet has fainted in the middle of the combat.")); } else if(monster.getId() == 9300138) { //romeo - monster.getMap().broadcastMessage(MaplePacketCreator.serverNotice(6, "Romeo has fainted in the middle of the combat.")); + map.broadcastMessage(MaplePacketCreator.serverNotice(6, "Romeo has fainted in the middle of the combat.")); } else if(monster.getId() == 9400322 || monster.getId() == 9400327 || monster.getId() == 9400332) { //snowman - monster.getMap().broadcastMessage(MaplePacketCreator.serverNotice(6, "The Snowman has melted on the heat of the battle.")); + map.broadcastMessage(MaplePacketCreator.serverNotice(6, "The Snowman has melted on the heat of the battle.")); } else if(monster.getId() == 9300162) { //delli - monster.getMap().broadcastMessage(MaplePacketCreator.serverNotice(6, "Delli vanished after the ambush, sheets still laying on the ground...")); + map.broadcastMessage(MaplePacketCreator.serverNotice(6, "Delli vanished after the ambush, sheets still laying on the ground...")); } - c.getPlayer().getMap().killFriendlies(monster); + map.killFriendlies(monster); } else { - if (monster.getId() == 9300061) { - MapleMap map = c.getPlayer().getEventInstance().getMapInstance(monster.getMap().getId()); - map.addBunnyHit(); + EventInstanceManager eim = map.getEventInstance(); + if (eim != null) { + eim.friendlyDamaged(monster); } } @@ -77,10 +80,10 @@ public final class MobDamageMobFriendlyHandler extends AbstractMaplePacketHandle int remainingHp = monster.getHp(); if(remainingHp <= 0) { remainingHp = 0; - monster.getMap().removeMapObject(monster); + map.removeMapObject(monster); } - c.getPlayer().getMap().broadcastMessage(MaplePacketCreator.MobDamageMobFriendly(monster, damage, remainingHp), monster.getPosition()); + map.broadcastMessage(MaplePacketCreator.MobDamageMobFriendly(monster, damage, remainingHp), monster.getPosition()); c.announce(MaplePacketCreator.enableActions()); } } \ No newline at end of file diff --git a/src/net/server/channel/handlers/QuestActionHandler.java b/src/net/server/channel/handlers/QuestActionHandler.java index 50f3547bfb..fcadb213da 100644 --- a/src/net/server/channel/handlers/QuestActionHandler.java +++ b/src/net/server/channel/handlers/QuestActionHandler.java @@ -72,7 +72,12 @@ public final class QuestActionHandler extends AbstractMaplePacketHandler { short questid = slea.readShort(); MapleCharacter player = c.getPlayer(); MapleQuest quest = MapleQuest.getInstance(questid); - if (action == 1) { //Start Quest + + if (action == 0) { // Restore lost item, Credits Darter ( Rajan ) + slea.readInt(); + int itemid = slea.readInt(); + quest.restoreLostItem(player, itemid); + } else if (action == 1) { //Start Quest int npc = slea.readInt(); if(!isNpcNearby(slea, player, quest, npc)) { return; diff --git a/src/net/server/channel/handlers/SummonDamageHandler.java b/src/net/server/channel/handlers/SummonDamageHandler.java index 0cebf49aa2..08315c3a0b 100644 --- a/src/net/server/channel/handlers/SummonDamageHandler.java +++ b/src/net/server/channel/handlers/SummonDamageHandler.java @@ -28,9 +28,7 @@ import client.SkillFactory; import client.autoban.AutobanFactory; import client.status.MonsterStatusEffect; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; import server.MapleStatEffect; import server.life.MapleMonster; import server.life.MapleMonsterInformationProvider; @@ -45,12 +43,10 @@ public final class SummonDamageHandler extends AbstractDealDamageHandler { private int monsterOid; private int damage; - private boolean magic; - - public SummonAttackEntry(int monsterOid, int damage, boolean magic) { + + public SummonAttackEntry(int monsterOid, int damage) { this.monsterOid = monsterOid; this.damage = damage; - this.magic = magic; } public int getMonsterOid() { @@ -61,9 +57,6 @@ public final class SummonDamageHandler extends AbstractDealDamageHandler { return damage; } - public boolean isMagic() { - return magic; - } } @Override @@ -91,27 +84,22 @@ public final class SummonDamageHandler extends AbstractDealDamageHandler { slea.skip(8); //Thanks Gerald :D, I failed lol (mob x,y and summon x,y) for (int x = 0; x < numAttacked; x++) { int monsterOid = slea.readInt(); // attacked oid - slea.skip(17); - boolean magic = slea.readByte() != 0; + slea.skip(18); int damage = slea.readInt(); - allDamage.add(new SummonAttackEntry(monsterOid, damage, magic)); + allDamage.add(new SummonAttackEntry(monsterOid, damage)); } player.getMap().broadcastMessage(player, MaplePacketCreator.summonAttack(player.getId(), summon.getObjectId(), direction, allDamage), summon.getPosition()); + if (player.getMap().isOwnershipRestricted(player)) { return; } - Map maxDmgEntries = new HashMap<>(); + boolean magic = summonEffect.getWatk() == 0; + int maxDmg = calcMaxDamage(summonEffect, player, magic); // thanks Darter (YungMoozi) for reporting unchecked max dmg for (SummonAttackEntry attackEntry : allDamage) { int damage = attackEntry.getDamage(); MapleMonster target = player.getMap().getMonsterByOid(attackEntry.getMonsterOid()); if (target != null) { - Integer maxDmg = maxDmgEntries.get(attackEntry.getMonsterOid()); - if (maxDmg == null) { - maxDmg = calcMaxDamage(summonEffect, player, attackEntry.isMagic()); // thanks Darter (YungMoozi) for reporting unchecked max dmg - maxDmgEntries.put(attackEntry.getMonsterOid(), maxDmg); - } - if (damage > maxDmg) { AutobanFactory.DAMAGE_HACK.alert(c.getPlayer(), "Possible packet editing summon damage exploit."); @@ -135,7 +123,9 @@ public final class SummonDamageHandler extends AbstractDealDamageHandler { if (magic) { maxDamage = player.calculateMaxBaseMagicDamage() * (0.05 * summonEffect.getMatk()); } else { - maxDamage = player.calculateMaxBaseDamage(player.getTotalWatk()) * (0.021 * summonEffect.getWatk()); + int maxBaseDmg = player.calculateMaxBaseDamage(player.getTotalWatk()); // thanks Conrad for detecting some summons legitimately hitting over the calculated limit + float summonDmgMod = (maxBaseDmg >= 438) ? 0.054f : 0.077f; + maxDamage = maxBaseDmg * (summonDmgMod * summonEffect.getWatk()); } return (int) maxDamage; diff --git a/src/net/server/channel/handlers/UseCashItemHandler.java b/src/net/server/channel/handlers/UseCashItemHandler.java index eba9f4be09..31b75fee32 100644 --- a/src/net/server/channel/handlers/UseCashItemHandler.java +++ b/src/net/server/channel/handlers/UseCashItemHandler.java @@ -189,7 +189,7 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler { if (eq == null) { //Check if the type is EQUIPMENT? return; } - byte flag = eq.getFlag(); + short flag = eq.getFlag(); flag |= ItemConstants.LOCK; if (eq.getExpiration() > -1) { return; //No perma items pls diff --git a/src/net/server/worker/FredrickWorker.java b/src/net/server/worker/DueyFredrickWorker.java similarity index 88% rename from src/net/server/worker/FredrickWorker.java rename to src/net/server/worker/DueyFredrickWorker.java index 2845fb80ab..5287140931 100644 --- a/src/net/server/worker/FredrickWorker.java +++ b/src/net/server/worker/DueyFredrickWorker.java @@ -19,15 +19,17 @@ */ package net.server.worker; +import client.processor.DueyProcessor; import client.processor.FredrickProcessor; /** * @author Ronan */ -public class FredrickWorker implements Runnable { +public class DueyFredrickWorker implements Runnable { @Override public void run() { FredrickProcessor.runFredrickSchedule(); + DueyProcessor.runDueyExpireSchedule(); } } diff --git a/src/net/server/worker/RespawnWorker.java b/src/net/server/worker/RespawnWorker.java new file mode 100644 index 0000000000..3ea15c373f --- /dev/null +++ b/src/net/server/worker/RespawnWorker.java @@ -0,0 +1,19 @@ +package net.server.worker; + +import net.server.Server; +import net.server.channel.Channel; + +/** + * @author Resinate + */ +public class RespawnWorker implements Runnable { + + @Override + public void run() { + for (Channel ch : Server.getInstance().getAllChannels()) { + if (!ch.getPlayerStorage().getAllCharacters().isEmpty()) { + ch.getMapFactory().updateMaps(); + } + } + } +} diff --git a/src/net/server/world/World.java b/src/net/server/world/World.java index db516bca89..8fdaaa4c3e 100644 --- a/src/net/server/world/World.java +++ b/src/net/server/world/World.java @@ -96,6 +96,8 @@ import net.server.coordinator.MapleInviteCoordinator.InviteResult; import net.server.coordinator.MapleInviteCoordinator.InviteType; import net.server.coordinator.MapleMatchCheckerCoordinator; import net.server.coordinator.MaplePartySearchCoordinator; +import server.maps.MapleMiniDungeon; +import server.maps.MapleMiniDungeonInfo; /** * @@ -927,10 +929,23 @@ public class World { break; case CHANGE_LEADER: MapleCharacter mc = party.getLeader().getPlayer(); + MapleCharacter newLeader = target.getPlayer(); + EventInstanceManager eim = mc.getEventInstance(); if(eim != null && eim.isEventLeader(mc)) { - eim.changedLeader(target.getPlayer()); + eim.changedLeader(newLeader); + } else { + int oldLeaderMapid = mc.getMapId(); + + if (MapleMiniDungeonInfo.isDungeonMap(oldLeaderMapid)) { + if (oldLeaderMapid != newLeader.getMapId()) { + MapleMiniDungeon mmd = newLeader.getClient().getChannelServer().getMiniDungeon(oldLeaderMapid); + if(mmd != null) { + mmd.close(); + } + } + } } party.setLeader(target); break; diff --git a/src/scripting/AbstractPlayerInteraction.java b/src/scripting/AbstractPlayerInteraction.java index 9d107b28ab..29facd7c56 100644 --- a/src/scripting/AbstractPlayerInteraction.java +++ b/src/scripting/AbstractPlayerInteraction.java @@ -68,6 +68,7 @@ import constants.GameConstants; import constants.ItemConstants; import constants.ServerConstants; import server.MapleMarriage; +import server.expeditions.MapleExpeditionBossLog; import server.life.MapleNPC; import tools.Pair; @@ -1067,13 +1068,24 @@ public class AbstractPlayerInteraction { return (Pyramid) getPlayer().getPartyQuest(); } - public boolean createExpedition(MapleExpeditionType type) { + public int createExpedition(MapleExpeditionType type) { return createExpedition(type, false, 0, 0); } - public boolean createExpedition(MapleExpeditionType type, boolean silent, int minPlayers, int maxPlayers) { - MapleExpedition exped = new MapleExpedition(getPlayer(), type, silent, minPlayers, maxPlayers); - return exped.addChannelExpedition(getPlayer().getClient().getChannelServer()); + public int createExpedition(MapleExpeditionType type, boolean silent, int minPlayers, int maxPlayers) { + MapleCharacter player = getPlayer(); + MapleExpedition exped = new MapleExpedition(player, type, silent, minPlayers, maxPlayers); + + int channel = player.getMap().getChannelServer().getId(); + if (!MapleExpeditionBossLog.attemptBoss(player.getId(), channel, exped, false)) { // thanks Conrad for noticing missing expeditions entry limit + return 1; + } + + if (exped.addChannelExpedition(player.getClient().getChannelServer())) { + return 0; + } else { + return -1; + } } public void endExpedition(MapleExpedition exped) { diff --git a/src/scripting/event/EventInstanceManager.java b/src/scripting/event/EventInstanceManager.java index 9b0048c4a9..f70b468684 100644 --- a/src/scripting/event/EventInstanceManager.java +++ b/src/scripting/event/EventInstanceManager.java @@ -518,6 +518,18 @@ public class EventInstanceManager { invokeScriptFunction("friendlyKilled", mob, EventInstanceManager.this, hasKiller); } catch (ScriptException | NoSuchMethodException ex) {} //optional } + + public void friendlyDamaged(final MapleMonster mob) { + try { + invokeScriptFunction("friendlyDamaged", EventInstanceManager.this, mob); + } catch (ScriptException | NoSuchMethodException ex) {} // optional + } + + public void friendlyItemDrop(final MapleMonster mob) { + try { + invokeScriptFunction("friendlyItemDrop", EventInstanceManager.this, mob); + } catch (ScriptException | NoSuchMethodException ex) {} // optional + } public void playerKilled(final MapleCharacter chr) { ThreadManager.getInstance().newTask(new Runnable() { diff --git a/src/scripting/npc/NPCConversationManager.java b/src/scripting/npc/NPCConversationManager.java index a561c2e97d..d4cd0e8f3c 100644 --- a/src/scripting/npc/NPCConversationManager.java +++ b/src/scripting/npc/NPCConversationManager.java @@ -678,6 +678,7 @@ public class NPCConversationManager extends AbstractPlayerInteraction { final MapleCharacter mc; mc = ps.getCharacterById(mpc.getId()); if (mc != null) { + mc.setChallenged(false); mc.changeMap(map, map.getPortal(0)); mc.announce(MaplePacketCreator.serverNotice(6, LanguageConstants.getMessage(mc, LanguageConstants.CPQEntryLobby))); TimerManager tMan = TimerManager.getInstance(); @@ -715,9 +716,8 @@ public class NPCConversationManager extends AbstractPlayerInteraction { } } - private void warpoutCPQLobby() { - MapleMap lobbyMap = c.getPlayer().getMap(); - MapleMap out = this.getWarpMap((lobbyMap.getId() > 980030000) ? 980000000 : 980030000); + private void warpoutCPQLobby(MapleMap lobbyMap) { + MapleMap out = lobbyMap.getChannelServer().getMapFactory().getMap((lobbyMap.getId() < 980030000) ? 980000000 : 980030000); for (MapleCharacter mc : lobbyMap.getAllPlayers()) { mc.resetCP(); mc.setTeam(-1); @@ -729,6 +729,8 @@ public class NPCConversationManager extends AbstractPlayerInteraction { public void startCPQ(final MapleCharacter challenger, final int field) { try { cancelCPQLobby(); + + final MapleMap lobbyMap = getPlayer().getMap(); if (challenger != null) { if (challenger.getParty() == null) { throw new RuntimeException("Nao existe oponente!"); @@ -737,7 +739,7 @@ public class NPCConversationManager extends AbstractPlayerInteraction { for (MaplePartyCharacter mpc : challenger.getParty().getMembers()) { MapleCharacter mc = ps.getCharacterById(mpc.getId()); if (mc != null) { - mc.changeMap(getPlayer().getMap(), getPlayer().getMap().getPortal(0)); + mc.changeMap(lobbyMap, lobbyMap.getPortal(0)); TimerManager tMan = TimerManager.getInstance(); tMan.schedule(new Runnable() { @Override @@ -776,7 +778,7 @@ public class NPCConversationManager extends AbstractPlayerInteraction { mc.setMonsterCarnival(null); } } catch (NullPointerException npe) { - warpoutCPQLobby(); + warpoutCPQLobby(lobbyMap); return; } @@ -791,6 +793,8 @@ public class NPCConversationManager extends AbstractPlayerInteraction { public void startCPQ2(final MapleCharacter challenger, final int field) { try { cancelCPQLobby(); + + final MapleMap lobbyMap = getPlayer().getMap(); if (challenger != null) { if (challenger.getParty() == null) { throw new RuntimeException("Não existe oponente!"); @@ -799,7 +803,7 @@ public class NPCConversationManager extends AbstractPlayerInteraction { for (MaplePartyCharacter mpc : challenger.getParty().getMembers()) { MapleCharacter mc = ps.getCharacterById(mpc.getId()); if (mc != null) { - mc.changeMap(getPlayer().getMap(), getPlayer().getMap().getPortal(0)); + mc.changeMap(lobbyMap, lobbyMap.getPortal(0)); mapClock(10); } } @@ -820,7 +824,7 @@ public class NPCConversationManager extends AbstractPlayerInteraction { mc.setMonsterCarnival(null); } } catch (NullPointerException npe) { - warpoutCPQLobby(); + warpoutCPQLobby(lobbyMap); return; } @@ -895,6 +899,7 @@ public class NPCConversationManager extends AbstractPlayerInteraction { final MapleCharacter mc; mc = ps.getCharacterById(mpc.getId()); if (mc != null) { + mc.setChallenged(false); mc.changeMap(map, map.getPortal(0)); mc.announce(MaplePacketCreator.serverNotice(6, LanguageConstants.getMessage(mc, LanguageConstants.CPQEntryLobby))); TimerManager tMan = TimerManager.getInstance(); diff --git a/src/server/DueyPackage.java b/src/server/DueyPackage.java index ae61a27e78..a7f7f69671 100644 --- a/src/server/DueyPackage.java +++ b/src/server/DueyPackage.java @@ -23,15 +23,14 @@ package server; import client.inventory.Item; import java.util.Calendar; +import java.sql.Timestamp; public class DueyPackage { private String sender = null; private Item item = null; private int mesos = 0; private String message = ""; - private int day; - private int month; - private int year; + private Calendar timestamp; private int packageId = 0; public DueyPackage(int pId, Item item) { @@ -76,18 +75,35 @@ public class DueyPackage { } public long sentTimeInMilliseconds() { + Calendar ts = timestamp; + if (ts != null) { + Calendar cal = Calendar.getInstance(); + cal.setTime(ts.getTime()); + cal.add(Calendar.MONTH, 1); // duey representation is in an array of months. + + return cal.getTimeInMillis(); + } else { + return 0; + } + } + + public boolean isDeliveringTime() { + Calendar ts = timestamp; + if (ts != null) { + return ts.getTimeInMillis() >= System.currentTimeMillis(); + } else { + return false; + } + } + + public void setSentTime(Timestamp ts) { Calendar cal = Calendar.getInstance(); - cal.set(year, month, day); + cal.setTimeInMillis(ts.getTime()); cal.set(Calendar.HOUR, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); - return cal.getTimeInMillis(); - } - - public void setSentTime(String sentTime) { - day = Integer.parseInt(sentTime.substring(0, 2)); - month = Integer.parseInt(sentTime.substring(3, 5)); - year = Integer.parseInt(sentTime.substring(6, 10)); + + this.timestamp = cal; } } diff --git a/src/server/MapleItemInformationProvider.java b/src/server/MapleItemInformationProvider.java index 1547bd0371..9f669eb0b3 100644 --- a/src/server/MapleItemInformationProvider.java +++ b/src/server/MapleItemInformationProvider.java @@ -106,6 +106,7 @@ public class MapleItemInformationProvider { protected Map nameCache = new HashMap<>(); protected Map descCache = new HashMap<>(); protected Map msgCache = new HashMap<>(); + protected Map accountItemRestrictionCache = new HashMap<>(); protected Map dropRestrictionCache = new HashMap<>(); protected Map pickupRestrictionCache = new HashMap<>(); protected Map getMesoCache = new HashMap<>(); @@ -1046,7 +1047,7 @@ public class MapleItemInformationProvider { return getEquipById(equipId, -1); } - Item getEquipById(int equipId, int ringId) { + private Item getEquipById(int equipId, int ringId) { Equip nEquip; nEquip = new Equip(equipId, (byte) 0, ringId); nEquip.setQuantity((short) 1); @@ -1084,11 +1085,11 @@ public class MapleItemInformationProvider { } else if (stat.getKey().equals("tuc")) { nEquip.setUpgradeSlots((byte) stat.getValue().intValue()); } else if (isUntradeableRestricted(equipId)) { // thanks Hyun & Thora for showing an issue with more than only "Untradeable" items being flagged as such here - byte flag = nEquip.getFlag(); + short flag = nEquip.getFlag(); flag |= ItemConstants.UNTRADEABLE; nEquip.setFlag(flag); } else if (stats.get("fs") > 0) { - byte flag = nEquip.getFlag(); + short flag = nEquip.getFlag(); flag |= ItemConstants.SPIKES; nEquip.setFlag(flag); equipCache.put(equipId, nEquip); @@ -1230,6 +1231,23 @@ public class MapleItemInformationProvider { untradeableCache.put(itemId, bRestricted); return bRestricted; } + + public boolean isAccountRestricted(int itemId) { + if (accountItemRestrictionCache.containsKey(itemId)) { + return accountItemRestrictionCache.get(itemId); + } + + boolean bRestricted = false; + if(itemId != 0) { + MapleData data = getItemData(itemId); + if (data != null) { + bRestricted = MapleDataTool.getIntConvert("info/accountSharable", data, 0) == 1; + } + } + + accountItemRestrictionCache.put(itemId, bRestricted); + return bRestricted; + } public boolean isLootRestricted(int itemId) { if (dropRestrictionCache.containsKey(itemId)) { @@ -1242,7 +1260,7 @@ public class MapleItemInformationProvider { if (data != null) { bRestricted = MapleDataTool.getIntConvert("info/tradeBlock", data, 0) == 1; if (!bRestricted) { - bRestricted = MapleDataTool.getIntConvert("info/accountSharable", data, 0) == 1; + bRestricted = isAccountRestricted(itemId); } } } diff --git a/src/server/MapleSkillbookInformationProvider.java b/src/server/MapleSkillbookInformationProvider.java index 5aa0184832..4a559e52b5 100644 --- a/src/server/MapleSkillbookInformationProvider.java +++ b/src/server/MapleSkillbookInformationProvider.java @@ -245,6 +245,8 @@ public class MapleSkillbookInformationProvider { } catch(IOException ioe) { System.out.println("Failed to read Quest.wz file. Line " + lineNumber + ": " + line); ioe.printStackTrace(); + } catch (Exception e) { + System.out.println("Failed to parse Quest.wz XML file."); // catch this exception, thanks to YonhNi } } diff --git a/src/server/MapleStatEffect.java b/src/server/MapleStatEffect.java index 00affc1e20..ec718cd608 100644 --- a/src/server/MapleStatEffect.java +++ b/src/server/MapleStatEffect.java @@ -1207,9 +1207,15 @@ public class MapleStatEffect { } private Rectangle calculateBoundingBox(Point posFrom, boolean facingLeft) { - int multiplier = facingLeft ? 1 : -1; - Point mylt = new Point(lt.x * multiplier + posFrom.x, lt.y + posFrom.y); - Point myrb = new Point(rb.x * multiplier + posFrom.x, rb.y + posFrom.y); + Point mylt; + Point myrb; + if (facingLeft) { + mylt = new Point(lt.x + posFrom.x, lt.y + posFrom.y); + myrb = new Point(rb.x + posFrom.x, rb.y + posFrom.y); + } else { + myrb = new Point(-lt.x + posFrom.x, rb.y + posFrom.y); // thanks Conrad, April for noticing a disturbance in AoE skill behavior after a hitched refactor here + mylt = new Point(-rb.x + posFrom.x, lt.y + posFrom.y); + } Rectangle bounds = new Rectangle(mylt.x, mylt.y, myrb.x - mylt.x, myrb.y - mylt.y); return bounds; } diff --git a/src/server/expeditions/MapleExpeditionBossLog.java b/src/server/expeditions/MapleExpeditionBossLog.java index 3e4402b102..02549ec4fa 100644 --- a/src/server/expeditions/MapleExpeditionBossLog.java +++ b/src/server/expeditions/MapleExpeditionBossLog.java @@ -27,6 +27,7 @@ import java.sql.Timestamp; import java.util.Calendar; import java.util.LinkedList; import java.util.List; +import constants.ServerConstants; import tools.DatabaseConnection; import tools.Pair; @@ -184,6 +185,10 @@ public class MapleExpeditionBossLog { } public static boolean attemptBoss(int cid, int channel, MapleExpedition exped, boolean log) { + if (!ServerConstants.USE_ENABLE_DAILY_EXPEDITIONS) { + return true; + } + BossLogEntry boss = BossLogEntry.getBossEntryByName(exped.getType().name()); if (boss == null) { return true; diff --git a/src/server/life/MapleMonster.java b/src/server/life/MapleMonster.java index 6df1bd3204..dc57eb4906 100644 --- a/src/server/life/MapleMonster.java +++ b/src/server/life/MapleMonster.java @@ -52,6 +52,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.HashSet; import java.util.Set; +import java.util.concurrent.ScheduledFuture; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; import net.server.audit.locks.MonitoredReentrantLock; @@ -100,6 +101,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { private int team; private int parentMobOid = 0; private final HashMap takenDamage = new HashMap<>(); + private ScheduledFuture monsterItemDrop = null; private Runnable removeAfterAction = null; private boolean availablePuppetUpdate = true; @@ -512,14 +514,14 @@ public class MapleMonster extends AbstractLoadedMapleLife { return avgExpReward + Math.sqrt(varExpReward); } - private void distributePlayerExperience(MapleCharacter chr, float exp, float partyBonusMod, int totalPartyLevel, boolean highestPartyDamager, boolean whiteExpGain) { + private void distributePlayerExperience(MapleCharacter chr, float exp, float partyBonusMod, int totalPartyLevel, boolean highestPartyDamager, boolean whiteExpGain, boolean hasPartySharers) { float playerExp = (ServerConstants.EXP_SPLIT_COMMON_MOD * chr.getLevel()) / totalPartyLevel; if (highestPartyDamager) playerExp += ServerConstants.EXP_SPLIT_MVP_MOD; playerExp *= exp; float bonusExp = partyBonusMod * playerExp; - this.giveExpToCharacter(chr, playerExp, bonusExp, whiteExpGain); + this.giveExpToCharacter(chr, playerExp, bonusExp, whiteExpGain, hasPartySharers); } private void distributePartyExperience(Map partyParticipation, float expPerDmg, Set underleveled, Map personalRatio, double sdevRatio) { @@ -560,10 +562,11 @@ public class MapleMonster extends AbstractLoadedMapleLife { float participationExp = partyDamage * expPerDmg; // thanks Crypter for reporting an insufficiency on party exp bonuses - float partyBonusMod = (membersSize > 1) ? 0.05f * membersSize : 0.0f; + boolean hasPartySharers = membersSize > 1; + float partyBonusMod = hasPartySharers ? 0.05f * membersSize : 0.0f; for (MapleCharacter mc : expMembers) { - distributePlayerExperience(mc, participationExp, partyBonusMod, totalPartyLevel, mc == participationMvp, isWhiteExpGain(mc, personalRatio, sdevRatio)); + distributePlayerExperience(mc, participationExp, partyBonusMod, totalPartyLevel, mc == participationMvp, isWhiteExpGain(mc, personalRatio, sdevRatio), hasPartySharers); } } @@ -636,7 +639,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { float exp = chrParticipation.getValue() * expPerDmg; MapleCharacter chr = chrParticipation.getKey(); - distributePlayerExperience(chr, exp, 0.0f, chr.getLevel(), true, isWhiteExpGain(chr, personalRatio, sdevRatio)); + distributePlayerExperience(chr, exp, 0.0f, chr.getLevel(), true, isWhiteExpGain(chr, personalRatio, sdevRatio), false); } for (Map partyParticipation : partyExpDist.values()) { @@ -657,13 +660,17 @@ public class MapleMonster extends AbstractLoadedMapleLife { } - private float getStatusExpMultiplier(MapleCharacter attacker) { + private float getStatusExpMultiplier(MapleCharacter attacker, boolean hasPartySharers) { float multiplier = 1.0f; // thanks Prophecy & Aika for finding out Holy Symbol not being applied on party bonuses Integer holySymbol = attacker.getBuffedValue(MapleBuffStat.HOLY_SYMBOL); if (holySymbol != null) { - multiplier *= (1.0 + (holySymbol.doubleValue() / 100.0)); + if (ServerConstants.USE_FULL_HOLY_SYMBOL) { // thanks Mordred, xinyifly, AyumiLove, andy33 for noticing HS hands out 20% of its potential on less than 3 players + multiplier *= (1.0 + (holySymbol.doubleValue() / 100.0)); + } else { + multiplier *= (1.0 + (holySymbol.doubleValue() / (hasPartySharers ? 100.0 : 500.0))); + } } statiLock.lock(); @@ -689,10 +696,10 @@ public class MapleMonster extends AbstractLoadedMapleLife { return (int) exp; } - private void giveExpToCharacter(MapleCharacter attacker, Float personalExp, Float partyExp, boolean white) { + private void giveExpToCharacter(MapleCharacter attacker, Float personalExp, Float partyExp, boolean white, boolean hasPartySharers) { if (attacker.isAlive()) { if (personalExp != null) { - personalExp *= getStatusExpMultiplier(attacker); + personalExp *= getStatusExpMultiplier(attacker, hasPartySharers); personalExp *= attacker.getExpRate(); } else { personalExp = 0.0f; @@ -706,7 +713,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { int _personalExp = expValueToInteger(personalExp); // assuming no negative xp here if (partyExp != null) { - partyExp *= getStatusExpMultiplier(attacker); + partyExp *= getStatusExpMultiplier(attacker, hasPartySharers); partyExp *= attacker.getExpRate(); partyExp *= ServerConstants.PARTY_BONUS_EXP_RATE; } else { @@ -722,6 +729,10 @@ public class MapleMonster extends AbstractLoadedMapleLife { } public List retrieveRelevantDrops() { + if (this.getStats().isFriendly()) { // thanks Conrad for noticing friendly mobs not spawning loots after a recent update + return MapleMonsterInformationProvider.getInstance().retrieveEffectiveDrop(this.getId()); + } + Map pchars = map.getMapAllPlayers(); List lootChars = new LinkedList<>(); @@ -814,6 +825,35 @@ public class MapleMonster extends AbstractLoadedMapleLife { return looter != null ? looter : killer; } + public void dropFromFriendlyMonster(long delay) { + final MapleMonster m = this; + monsterItemDrop = TimerManager.getInstance().register(new Runnable() { + @Override + public void run() { + if (!m.isAlive()) { + if (monsterItemDrop != null) { + monsterItemDrop.cancel(false); + } + + return; + } + + MapleMap map = m.getMap(); + List chrList = map.getAllPlayers(); + if (!chrList.isEmpty()) { + MapleCharacter chr = (MapleCharacter) chrList.get(0); + + EventInstanceManager eim = map.getEventInstance(); + if (eim != null) { + eim.friendlyItemDrop(m); + } + + map.dropFromFriendlyMonster(chr, m); + } + } + }, delay, delay); + } + private void dispatchUpdateQuestMobCount() { Set attackerChrids = takenDamage.keySet(); if(!attackerChrids.isEmpty()) { @@ -2176,6 +2216,10 @@ public class MapleMonster extends AbstractLoadedMapleLife { } public void dispose() { + if (monsterItemDrop != null) { + monsterItemDrop.cancel(false); + } + this.getMap().dismissRemoveAfter(this); disposeLocks(); } diff --git a/src/server/maps/FieldLimit.java b/src/server/maps/FieldLimit.java index 0fe31e9a50..04abc34c35 100644 --- a/src/server/maps/FieldLimit.java +++ b/src/server/maps/FieldLimit.java @@ -42,15 +42,15 @@ public enum FieldLimit { //CASH_WEATHER_CONSUME_LIMIT(0x4000), //NO_PET(0x8000), // Ariant colosseum-related? //ANTI_MACRO_LIMIT(0x10000), // No notes - CANNOTJUMPDOWN(0x20000); + CANNOTJUMPDOWN(0x20000), //SUMMON_NPC_LIMIT(0x40000); // Seems to .. disable Rush if 0x2 is set //......... EVEN MORE LIMITS ............ //SUMMON_NPC_LIMIT(0x40000), - //NO_EXP_DECREASE(0x80000), + NO_EXP_DECREASE(0x80000), //NO_DAMAGE_ON_FALLING(0x100000), //PARCEL_OPEN_LIMIT(0x200000), - //DROP_LIMIT(0x400000), + DROP_LIMIT(0x400000); //ROCKETBOOSTER_LIMIT(0x800000) //lol we don't even have mechanics <3 private long i; diff --git a/src/server/maps/MapleMap.java b/src/server/maps/MapleMap.java index 58c80c194f..f92f1bf3e9 100644 --- a/src/server/maps/MapleMap.java +++ b/src/server/maps/MapleMap.java @@ -159,9 +159,6 @@ public class MapleMap { private MapleCharacter mapOwner = null; private long mapOwnerLastActivityTime = Long.MAX_VALUE; - // HPQ - private int riceCakes = 0; - private int bunnyDamage = 0; // events private boolean eventstarted = false, isMuted = false; private MapleSnowball snowball0 = null; @@ -1864,35 +1861,8 @@ public class MapleMap { spawnMonster(mob); } - public void addBunnyHit() { - bunnyDamage++; - if (bunnyDamage > 5) { - broadcastMessage(MaplePacketCreator.serverNotice(6, "The Moon Bunny is feeling sick. Please protect it so it can make delicious rice cakes.")); - bunnyDamage = 0; - } - } - private void monsterItemDrop(final MapleMonster m, long delay) { - final ScheduledFuture monsterItemDrop = TimerManager.getInstance().register(new Runnable() { - @Override - public void run() { - List chrList = MapleMap.this.getPlayers(); - - if (m.isAlive() && !chrList.isEmpty()) { - MapleCharacter chr = (MapleCharacter) chrList.get(0); - - if (m.getId() == 9300061) { - MapleMap.this.riceCakes++; - MapleMap.this.broadcastMessage(MaplePacketCreator.serverNotice(6, "The Moon Bunny made rice cake number " + (MapleMap.this.riceCakes) + ".")); - } - - dropFromFriendlyMonster(chr, m); - } - } - }, delay, delay); - if (!m.isAlive()) { - monsterItemDrop.cancel(true); - } + m.dropFromFriendlyMonster(delay); } public void spawnFakeMonsterOnGroundBelow(MapleMonster mob, Point pos) { @@ -2259,6 +2229,11 @@ public class MapleMap { } public final void spawnItemDrop(final MapleMapObject dropper, final MapleCharacter owner, final Item item, Point pos, final byte dropType, final boolean playerDrop) { + if (FieldLimit.DROP_LIMIT.check(this.getFieldLimit())) { // thanks Conrad for noticing some maps shouldn't have loots available + this.disappearingItemDrop(dropper, owner, item, pos); + return; + } + final Point droppos = calcDropPos(pos, pos); final MapleMapItem mdrop = new MapleMapItem(item, droppos, dropper, owner, owner.getClient(), dropType, playerDrop); mdrop.setDropTime(Server.getInstance().getCurrentTime()); @@ -3938,10 +3913,6 @@ public class MapleMap { return fieldLimit; } - public void resetRiceCakes() { - this.riceCakes = 0; - } - public void allowSummonState(boolean b) { MapleMap.this.allowSummons = b; } diff --git a/src/server/maps/MapleMapManager.java b/src/server/maps/MapleMapManager.java index 7c5958954c..36d36212c5 100644 --- a/src/server/maps/MapleMapManager.java +++ b/src/server/maps/MapleMapManager.java @@ -19,17 +19,14 @@ */ package server.maps; -import constants.ServerConstants; import java.util.HashMap; import java.util.Map; -import java.util.concurrent.ScheduledFuture; import java.util.concurrent.locks.ReentrantReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock; import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.MonitoredReentrantReadWriteLock; import scripting.event.EventInstanceManager; -import server.TimerManager; public class MapleMapManager { @@ -38,8 +35,6 @@ public class MapleMapManager { private Map maps = new HashMap<>(); - private ScheduledFuture updateTask; - private ReadLock mapsRLock; private WriteLock mapsWLock; @@ -51,13 +46,6 @@ public class MapleMapManager { ReentrantReadWriteLock rrwl = new MonitoredReentrantReadWriteLock(MonitoredLockType.MAP_MANAGER); this.mapsRLock = rrwl.readLock(); this.mapsWLock = rrwl.writeLock(); - - updateTask = TimerManager.getInstance().register(new Runnable() { - @Override - public void run() { - updateMaps(); - } - }, ServerConstants.RESPAWN_INTERVAL); } public MapleMap resetMap(int mapid) { @@ -136,7 +124,7 @@ public class MapleMapManager { } } - private void updateMaps() { + public void updateMaps() { for (MapleMap map : getMaps().values()) { map.respawn(); map.mobMpRecovery(); @@ -144,11 +132,6 @@ public class MapleMapManager { } public void dispose() { - if (updateTask != null) { - updateTask.cancel(false); - updateTask = null; - } - for (MapleMap map : getMaps().values()) { map.dispose(); } diff --git a/src/server/maps/MapleMiniDungeon.java b/src/server/maps/MapleMiniDungeon.java index e4b653688f..9a1aa27aec 100644 --- a/src/server/maps/MapleMiniDungeon.java +++ b/src/server/maps/MapleMiniDungeon.java @@ -49,19 +49,7 @@ public class MapleMiniDungeon { timeoutTask = TimerManager.getInstance().schedule(new Runnable() { @Override public void run() { - lock.lock(); - try { - List lchr = new ArrayList<>(players); - - for(MapleCharacter chr : lchr) { - chr.changeMap(baseMap); - } - - dispose(); - timeoutTask = null; - } finally { - lock.unlock(); - } + close(); } }, expireTime); @@ -95,8 +83,28 @@ public class MapleMiniDungeon { dispose(); return false; } - - return true; + } finally { + lock.unlock(); + } + + if (chr.isPartyLeader()) { // thanks Conrad for noticing party is not sent out of the MD as soon as leader leaves it + close(); + } + + return true; + } + + public void close() { + lock.lock(); + try { + List lchr = new ArrayList<>(players); + + for(MapleCharacter chr : lchr) { + chr.changeMap(baseMap); + } + + dispose(); + timeoutTask = null; } finally { lock.unlock(); } diff --git a/src/server/quest/MapleQuest.java b/src/server/quest/MapleQuest.java index 369f650273..cefceb45d3 100644 --- a/src/server/quest/MapleQuest.java +++ b/src/server/quest/MapleQuest.java @@ -174,7 +174,7 @@ public class MapleQuest { } } } - + public boolean isAutoComplete() { return autoPreComplete || autoComplete; } @@ -544,8 +544,13 @@ public class MapleQuest { return ret; } - public static boolean isExploitableQuest(short questid) { - return exploitableQuests.contains(questid); + public boolean restoreLostItem(MapleCharacter chr, int itemid) { + ItemAction itemAct = (ItemAction) startActs.get(MapleQuestActionType.ITEM); + if (itemAct != null) { + return itemAct.restoreLostItem(chr, itemid); + } + + return false; } public int getMedalRequirement() { @@ -572,6 +577,10 @@ public class MapleQuest { return parent; } + public static boolean isExploitableQuest(short questid) { + return exploitableQuests.contains(questid); + } + public static List getMatchedQuests(String search) { List ret = new LinkedList<>(); diff --git a/src/server/quest/actions/ItemAction.java b/src/server/quest/actions/ItemAction.java index 1491515a98..a395035f46 100644 --- a/src/server/quest/actions/ItemAction.java +++ b/src/server/quest/actions/ItemAction.java @@ -35,8 +35,10 @@ import java.util.List; import provider.MapleData; import provider.MapleDataTool; import client.inventory.manipulator.MapleInventoryManipulator; +import server.MapleItemInformationProvider; import server.quest.MapleQuest; import server.quest.MapleQuestActionType; +import tools.FilePrinter; import tools.MaplePacketCreator; import tools.Pair; import tools.Randomizer; @@ -250,8 +252,34 @@ public class ItemAction extends MapleQuestAction { } return jobFound; } - return true; - } + + return true; + } + + public boolean restoreLostItem(MapleCharacter chr, int itemid) { + if (!MapleItemInformationProvider.getInstance().isQuestItem(itemid)) { + return false; + } + + // thanks danielktran (MapleHeroesD) + for (ItemData item : items) { + if (item.getId() == itemid) { + int missingQty = item.getCount() - chr.countItem(itemid); + if (missingQty > 0) { + if (!chr.canHold(itemid, missingQty)) { + chr.dropMessage(1, "Please check if you have enough space in your inventory."); + return false; + } + + MapleInventoryManipulator.addById(chr.getClient(), item.getId(), (short) missingQty); + FilePrinter.print(FilePrinter.QUEST_RESTORE_ITEM, chr + " obtained " + itemid + " qty. " + missingQty + " from quest " + questID); + } + return true; + } + } + + return false; + } private class ItemData { private final int map, id, count, job, gender; diff --git a/src/tools/FilePrinter.java b/src/tools/FilePrinter.java index 72ac10b490..0e934c1dd3 100644 --- a/src/tools/FilePrinter.java +++ b/src/tools/FilePrinter.java @@ -21,6 +21,7 @@ public class FilePrinter { LOG_LEAF = "interactions/MapleLeaves.txt", LOG_GACHAPON = "interactions/Gachapon.txt", LOG_CHAT = "interactions/ChatLog.txt", + QUEST_RESTORE_ITEM = "game/QuestItemRestore.txt", EXCEPTION_CAUGHT = "game/ExceptionCaught.txt", CLIENT_START = "game/ClientStartError.txt", MAPLE_MAP = "game/MapleMap.txt", diff --git a/src/tools/MaplePacketCreator.java b/src/tools/MaplePacketCreator.java index 284c8599e8..391e6a300c 100644 --- a/src/tools/MaplePacketCreator.java +++ b/src/tools/MaplePacketCreator.java @@ -110,7 +110,7 @@ import constants.ServerConstants; import constants.skills.Buccaneer; import constants.skills.Corsair; import constants.skills.ThunderBreaker; -import scripting.npc.NPCConversationManager; +import java.util.TimeZone; import server.maps.AbstractMapleMapObject; /** @@ -120,20 +120,23 @@ import server.maps.AbstractMapleMapObject; public class MaplePacketCreator { public static final List> EMPTY_STATUPDATE = Collections.emptyList(); - private final static long FT_UT_OFFSET = 116444628000000000L; + private final static long FT_UT_OFFSET = 116444736010800000L + (10000L * TimeZone.getDefault().getOffset(System.currentTimeMillis())); // normalize with timezone offset suggested by Ari private final static long DEFAULT_TIME = 150842304000000000L;//00 80 05 BB 46 E6 17 02 public final static long ZERO_TIME = 94354848000000000L;//00 40 E0 FD 3B 37 4F 01 private final static long PERMANENT = 150841440000000000L; // 00 C0 9B 90 7D E5 17 02 - private static long getTime(long realTimestamp) { - if (realTimestamp == -1) { - return DEFAULT_TIME;//high number ll - } else if (realTimestamp == -2) { - return ZERO_TIME; - } else if (realTimestamp == -3) { - return PERMANENT; + private static long getTime(long utcTimestamp) { + if (utcTimestamp < 0 && utcTimestamp >= -3) { + if (utcTimestamp == -1) { + return DEFAULT_TIME; //high number ll + } else if (utcTimestamp == -2) { + return ZERO_TIME; + } else { + return PERMANENT; + } } - return realTimestamp * 10000 + FT_UT_OFFSET; + + return utcTimestamp * 10000 + FT_UT_OFFSET; } public static byte[] showHpHealed(int cid, int amount) { @@ -361,7 +364,7 @@ public class MaplePacketCreator { mplew.writeLong(getTime(q.getCompletionTime())); } } - + private static void addExpirationTime(final MaplePacketLittleEndianWriter mplew, long time) { mplew.writeLong(getTime(time)); // offset expiration time issue found thanks to Thora } @@ -2568,6 +2571,13 @@ public class MaplePacketCreator { return mplew.getPacket(); } + public static byte[] updateWitchTowerScore(int score) { + MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.WITCH_TOWER_SCORE_UPDATE.getValue()); + mplew.write(score); + return mplew.getPacket(); + } + public static byte[] silentRemoveItemFromMap(int oid) { return removeItemFromMap(oid, 1, 0); } diff --git a/tools/MapleMapFieldLimitChecker/build.xml b/tools/MapleMapFieldLimitChecker/build.xml new file mode 100644 index 0000000000..2da76eb63d --- /dev/null +++ b/tools/MapleMapFieldLimitChecker/build.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + Builds, tests, and runs the project MapleMapFieldLimitChecker. + + + diff --git a/tools/MapleMapFieldLimitChecker/lib/Report.txt b/tools/MapleMapFieldLimitChecker/lib/Report.txt new file mode 100644 index 0000000000..2d4b275314 --- /dev/null +++ b/tools/MapleMapFieldLimitChecker/lib/Report.txt @@ -0,0 +1,149 @@ + # Report File autogenerated from the MapleEmptyItemWzChecker feature by Ronan Lana. + # Generated data takes into account several data info from the server-side WZ.xmls. + +String.wz NAMES with no Item.wz node, 130 entries: + 20816 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Face\ + 20817 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Face\ + 21817 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Face\ + 21820 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Face\ + 1002655 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Cap\ + 1002657 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Cap\ + 1002658 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Cap\ + 1003028 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Cap\ + 1003029 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Cap\ + 1003030 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Cap\ + 1003043 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Cap\ + 1022096 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Accessory\ + 1042180 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Coat\ + 1052226 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Longcoat\ + 1060115 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Pants\ + 1060138 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Pants\ + 1061125 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Pants\ + 1061160 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Pants\ + 1062036 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Pants\ + 1062037 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Pants\ + 1072248 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Shoes\ + 1072249 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Shoes\ + 1072418 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Shoes\ + 1072425 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Shoes\ + 1080002 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Glove\ + 1082217 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Glove\ + 1082221 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Glove\ + 1082261 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Glove\ + 1142152 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Accessory\ + 1142155 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Accessory\ + 1302032 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Weapon\ + 1302069 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Weapon\ + 1322030 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Weapon\ + 1322034 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Weapon\ + 1332058 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Weapon\ + 1382013 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Weapon\ + 1452047 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Weapon\ + 1462020 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Weapon\ + 1462042 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Weapon\ + 1472057 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Weapon\ + 1702113 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Weapon\ + 2002012 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2002013 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2002014 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2012004 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2022034 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2022036 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2022046 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2022114 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2070014 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2083000 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2084000 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2101016 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2101017 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2101018 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2101019 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2101022 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2101058 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2210023 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2210024 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2240004 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2240005 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2240006 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2240007 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2240008 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2240009 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2240010 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2240011 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2240012 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2240013 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2240014 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2240015 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2290109 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 2390000 ../../wz/String.wz/Consume.img.xml -> Consume.img\ + 3010044 ../../wz/String.wz/Ins.img.xml -> Ins.img\ + 3994016 ../../wz/String.wz/Ins.img.xml -> Ins.img\ + 4000275 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ + 4001150 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ + 4031294 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ + 4031627 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ + 4031628 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ + 4031629 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ + 4031630 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ + 4031631 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ + 4031632 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ + 4031633 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ + 4031634 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ + 4031635 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ + 4031636 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ + 4031637 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ + 4031638 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ + 4031639 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ + 4031640 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ + 4031641 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ + 4031642 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ + 4031643 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ + 4031644 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ + 4031645 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ + 4031646 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ + 4031647 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ + 4031648 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ + 4031795 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ + 4031867 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ + 4032526 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ + 5000040 ../../wz/String.wz/Pet.img.xml -> Pet.img\ + 5000043 ../../wz/String.wz/Pet.img.xml -> Pet.img\ + 5000046 ../../wz/String.wz/Pet.img.xml -> Pet.img\ + 5201000 ../../wz/String.wz/Cash.img.xml -> Cash.img\ + 5201001 ../../wz/String.wz/Cash.img.xml -> Cash.img\ + 5210000 ../../wz/String.wz/Cash.img.xml -> Cash.img\ + 5210001 ../../wz/String.wz/Cash.img.xml -> Cash.img\ + 5210002 ../../wz/String.wz/Cash.img.xml -> Cash.img\ + 5210003 ../../wz/String.wz/Cash.img.xml -> Cash.img\ + 5210004 ../../wz/String.wz/Cash.img.xml -> Cash.img\ + 5210005 ../../wz/String.wz/Cash.img.xml -> Cash.img\ + 5211001 ../../wz/String.wz/Cash.img.xml -> Cash.img\ + 5211002 ../../wz/String.wz/Cash.img.xml -> Cash.img\ + 5211003 ../../wz/String.wz/Cash.img.xml -> Cash.img\ + 5211047 ../../wz/String.wz/Cash.img.xml -> Cash.img\ + 5240016 ../../wz/String.wz/Cash.img.xml -> Cash.img\ + 5240019 ../../wz/String.wz/Cash.img.xml -> Cash.img\ + 5251004 ../../wz/String.wz/Cash.img.xml -> Cash.img\ + 5251005 ../../wz/String.wz/Cash.img.xml -> Cash.img\ + 5251006 ../../wz/String.wz/Cash.img.xml -> Cash.img\ + 5360009 ../../wz/String.wz/Cash.img.xml -> Cash.img\ + 5360010 ../../wz/String.wz/Cash.img.xml -> Cash.img\ + 5360011 ../../wz/String.wz/Cash.img.xml -> Cash.img\ + 5360012 ../../wz/String.wz/Cash.img.xml -> Cash.img\ + 5360013 ../../wz/String.wz/Cash.img.xml -> Cash.img\ + 5360014 ../../wz/String.wz/Cash.img.xml -> Cash.img\ + +Item.wz ITEMS with no String.wz node, 12 entries: + 1942000 C:\Nexon\HeavenMS\wz\Character.wz\Dragon\01942000.img.xml -> NOT FOUND + 1942001 C:\Nexon\HeavenMS\wz\Character.wz\Dragon\01942001.img.xml -> NOT FOUND + 1942002 C:\Nexon\HeavenMS\wz\Character.wz\Dragon\01942002.img.xml -> NOT FOUND + 1952000 C:\Nexon\HeavenMS\wz\Character.wz\Dragon\01952000.img.xml -> NOT FOUND + 1952001 C:\Nexon\HeavenMS\wz\Character.wz\Dragon\01952001.img.xml -> NOT FOUND + 1952002 C:\Nexon\HeavenMS\wz\Character.wz\Dragon\01952002.img.xml -> NOT FOUND + 1962000 C:\Nexon\HeavenMS\wz\Character.wz\Dragon\01962000.img.xml -> NOT FOUND + 1962001 C:\Nexon\HeavenMS\wz\Character.wz\Dragon\01962001.img.xml -> NOT FOUND + 1962002 C:\Nexon\HeavenMS\wz\Character.wz\Dragon\01962002.img.xml -> NOT FOUND + 1972000 C:\Nexon\HeavenMS\wz\Character.wz\Dragon\01972000.img.xml -> NOT FOUND + 1972001 C:\Nexon\HeavenMS\wz\Character.wz\Dragon\01972001.img.xml -> NOT FOUND + 1972002 C:\Nexon\HeavenMS\wz\Character.wz\Dragon\01972002.img.xml -> NOT FOUND + diff --git a/tools/MapleMapFieldLimitChecker/manifest.mf b/tools/MapleMapFieldLimitChecker/manifest.mf new file mode 100644 index 0000000000..328e8e5bc3 --- /dev/null +++ b/tools/MapleMapFieldLimitChecker/manifest.mf @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +X-COMMENT: Main-Class will be added automatically by build + diff --git a/tools/MapleMapFieldLimitChecker/src/maplemapfieldlimitchecker/MapleMapFieldLimitChecker.java b/tools/MapleMapFieldLimitChecker/src/maplemapfieldlimitchecker/MapleMapFieldLimitChecker.java new file mode 100644 index 0000000000..657ca2ebc4 --- /dev/null +++ b/tools/MapleMapFieldLimitChecker/src/maplemapfieldlimitchecker/MapleMapFieldLimitChecker.java @@ -0,0 +1,197 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2018 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package maplemapfieldlimitchecker; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStreamReader; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.ArrayList; + +/** + * + * @author RonanLana + * + This application seeks from the XMLs all mapid entries that holds the specified + fieldLimit. + */ +public class MapleMapFieldLimitChecker { + + static String newFile = "lib/Report.txt"; + static String outputWzPath = "lib"; + static PrintWriter printWriter = null; + static InputStreamReader fileReader = null; + static BufferedReader bufferedReader = null; + + static String wzPath = "../../wz"; + static int initialStringLength = 50; + static int itemFileNameSize = 13; + + static int fieldLimit = 0x400000; + + static byte status = 0; + static int mapid = 0; + + private static String getName(String token) { + int i, j; + char[] dest; + String d; + + i = token.lastIndexOf("name"); + i = token.indexOf("\"", i) + 1; //lower bound of the string + j = token.indexOf("\"", i); //upper bound + + dest = new char[initialStringLength]; + token.getChars(i, j, dest, 0); + + d = new String(dest); + return(d.trim()); + } + + private static String getValue(String token) { + int i, j; + char[] dest; + String d; + + i = token.lastIndexOf("value"); + i = token.indexOf("\"", i) + 1; //lower bound of the string + j = token.indexOf("\"", i); //upper bound + + dest = new char[initialStringLength]; + token.getChars(i, j, dest, 0); + + d = new String(dest); + return(d.trim()); + } + + private static void forwardCursor(int st) { + String line = null; + + try { + while(status >= st && (line = bufferedReader.readLine()) != null) { + simpleToken(line); + } + } + catch(Exception e) { + e.printStackTrace(); + } + } + + private static void simpleToken(String token) { + if(token.contains("/imgdir")) { + status -= 1; + } + else if(token.contains("imgdir")) { + status += 1; + } + } + + private static void listFiles(String directoryName, ArrayList files) { + File directory = new File(directoryName); + + // get all the files from a directory + File[] fList = directory.listFiles(); + for (File file : fList) { + if (file.isFile()) { + files.add(file); + } else if (file.isDirectory()) { + listFiles(file.getAbsolutePath(), files); + } + } + } + + private static int getMapIdFromFilename(String name) { + try { + return Integer.valueOf(name.substring(0, name.indexOf('.'))); + } catch(Exception e) { + return -1; + } + } + + private static void translateToken(String token) { + if(token.contains("/imgdir")) { + status -= 1; + } + else if(token.contains("imgdir")) { + status += 1; + + if (status == 2) { + String d = getName(token); + if (!d.contentEquals("info")) { + forwardCursor(status); + } + } + } + else { + if (status == 2) { + String d = getName(token); + + if (d.contentEquals("fieldLimit")) { + int value = Integer.valueOf(getValue(token)); + if ((value & fieldLimit) == fieldLimit) { + System.out.println(mapid + " " + value); + } + } + } + } + } + + private static void inspectMapEntry() { + String line = null; + + try { + while((line = bufferedReader.readLine()) != null) { + translateToken(line); + } + } + catch(Exception e) { + e.printStackTrace(); + } + } + + private static void loadMapWz() throws IOException { + System.out.println("Reading Map.wz ..."); + ArrayList files = new ArrayList<>(); + listFiles(wzPath + "/Map.wz/Map", files); + + for(File f : files) { + fileReader = new InputStreamReader(new FileInputStream(f), "UTF-8"); + bufferedReader = new BufferedReader(fileReader); + + mapid = getMapIdFromFilename(f.getName()); + inspectMapEntry(); + + bufferedReader.close(); + fileReader.close(); + } + } + + public static void main(String[] args) { + try { + loadMapWz(); + System.out.println("Done!"); + } catch (IOException ioe) { + ioe.printStackTrace(); + } + } + +} diff --git a/wz/Map.wz/Map/Map2/211042400.img.xml b/wz/Map.wz/Map/Map2/211042400.img.xml index 165b3cb66c..ccc3c4ef70 100644 --- a/wz/Map.wz/Map/Map2/211042400.img.xml +++ b/wz/Map.wz/Map/Map2/211042400.img.xml @@ -10,7 +10,7 @@ - + From 2df59b293bef8923d4aed112e3a13cbbce48edd0 Mon Sep 17 00:00:00 2001 From: Ubaware <52778420+Ubaware@users.noreply.github.com> Date: Tue, 16 Jul 2019 16:14:18 -0700 Subject: [PATCH 04/37] Issue #126 : Eliminated (almost) all object creation in AbstractMovementPacketHandler. (#487) * Eliminated (almost) all object creation in AbstractMovementPacketHandler. Pets still use old system. * Removed debug code & comments I forgot about. --- src/client/MapleCharacter.java | 2 +- .../AbstractMovementPacketHandler.java | 98 +++++++++++++-- .../channel/handlers/MoveDragonHandler.java | 17 +-- .../channel/handlers/MoveLifeHandler.java | 28 +++-- .../channel/handlers/MovePetHandler.java | 2 +- .../channel/handlers/MovePlayerHandler.java | 14 +-- .../channel/handlers/MoveSummonHandler.java | 11 +- src/server/life/MapleMonster.java | 2 +- .../maps/AbstractAnimatedMapleMapObject.java | 50 ++++++-- src/tools/MaplePacketCreator.java | 119 ++++++++++-------- 10 files changed, 230 insertions(+), 113 deletions(-) diff --git a/src/client/MapleCharacter.java b/src/client/MapleCharacter.java index 764d5695ea..1eb2a6c28d 100644 --- a/src/client/MapleCharacter.java +++ b/src/client/MapleCharacter.java @@ -1276,7 +1276,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public void broadcastStance() { - map.broadcastMessage(this, MaplePacketCreator.movePlayer(id, this.getIdleMovement()), false); + map.broadcastMessage(this, MaplePacketCreator.movePlayer(id, this.getIdleMovement(), getIdleMovementDataLength()), false); } public MapleMap getWarpMap(int map) { diff --git a/src/net/server/channel/handlers/AbstractMovementPacketHandler.java b/src/net/server/channel/handlers/AbstractMovementPacketHandler.java index 47f2852c60..ed9cd86812 100644 --- a/src/net/server/channel/handlers/AbstractMovementPacketHandler.java +++ b/src/net/server/channel/handlers/AbstractMovementPacketHandler.java @@ -30,7 +30,6 @@ import server.maps.AnimatedMapleMapObject; import server.movement.AbsoluteLifeMovement; import server.movement.ChangeEquip; import server.movement.JumpDownMovement; -import server.movement.LifeMovement; import server.movement.LifeMovementFragment; import server.movement.RelativeLifeMovement; import server.movement.TeleportMovement; @@ -144,17 +143,96 @@ public abstract class AbstractMovementPacketHandler extends AbstractMaplePacketH } return res; } - - protected void updatePosition(List movement, AnimatedMapleMapObject target, int yoffset) { - for (LifeMovementFragment move : movement) { - if (move instanceof LifeMovement) { - if (move instanceof AbsoluteLifeMovement) { - Point position = ((LifeMovement) move).getPosition(); - position.y += yoffset; - target.setPosition(position); + + protected void updatePosition(LittleEndianAccessor lea, AnimatedMapleMapObject target, int yOffset) { + + byte numCommands = lea.readByte(); + for (byte i = 0; i < numCommands; i++) { + byte command = lea.readByte(); + switch (command) { + case 0: // normal move + case 5: + case 17: { // Float + //Absolute movement - only this is important for the server, other movement can be passed to the client + short xpos = lea.readShort(); //is signed fine here? + short ypos = lea.readShort(); + target.setPosition(new Point(xpos, ypos + yOffset)); + lea.skip(6); //xwobble = lea.readShort(); ywobble = lea.readShort(); fh = lea.readShort(); + byte newstate = lea.readByte(); + target.setStance(newstate); + lea.readShort(); //duration + break; } - target.setStance(((LifeMovement) move).getNewstate()); + case 1: + case 2: + case 6: // fj + case 12: + case 13: // Shot-jump-back thing + case 16: // Float + case 18: + case 19: // Springs on maps + case 20: // Aran Combat Step + case 22: { + //Relative movement - server only cares about stance + lea.skip(4); //xpos = lea.readShort(); ypos = lea.readShort(); + byte newstate = lea.readByte(); + target.setStance(newstate); + lea.readShort(); //duration + break; + } + case 3: + case 4: // tele... -.- + case 7: // assaulter + case 8: // assassinate + case 9: // rush + case 11: //chair + { +// case 14: { + //Teleport movement - same as above + lea.skip(8); //xpos = lea.readShort(); ypos = lea.readShort(); xwobble = lea.readShort(); ywobble = lea.readShort(); + byte newstate = lea.readByte(); + target.setStance(newstate); + break; + } + case 14: + lea.skip(9); // jump down (?) + break; + case 10: // Change Equip + //ignored by server + lea.readByte(); + break; + /*case 11: { // Chair + short xpos = lea.readShort(); + short ypos = lea.readShort(); + short fh = lea.readShort(); + byte newstate = lea.readByte(); + short duration = lea.readShort(); + ChairMovement cm = new ChairMovement(command, new Point(xpos, ypos), duration, newstate); + cm.setFh(fh); + res.add(cm); + break; + }*/ + case 15: { + //Jump down movement - stance only + lea.skip(12); //short xpos = lea.readShort(); ypos = lea.readShort(); xwobble = lea.readShort(); ywobble = lea.readShort(); fh = lea.readShort(); ofh = lea.readShort(); + byte newstate = lea.readByte(); + target.setStance(newstate); + lea.readShort(); // duration + break; + } + case 21: {//Causes aran to do weird stuff when attacking o.o + /*byte newstate = lea.readByte(); + short unk = lea.readShort(); + AranMovement am = new AranMovement(command, null, unk, newstate); + res.add(am);*/ + lea.skip(3); + break; + } + default: + System.out.println("Unhandled Case:" + command); + return; } } + return; } } diff --git a/src/net/server/channel/handlers/MoveDragonHandler.java b/src/net/server/channel/handlers/MoveDragonHandler.java index c806b82d25..16c8422407 100644 --- a/src/net/server/channel/handlers/MoveDragonHandler.java +++ b/src/net/server/channel/handlers/MoveDragonHandler.java @@ -21,12 +21,11 @@ along with this program. If not, see . */ package net.server.channel.handlers; +import java.awt.Point; + import client.MapleCharacter; import client.MapleClient; -import java.awt.Point; -import java.util.List; import server.maps.MapleDragon; -import server.movement.LifeMovementFragment; import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; @@ -36,14 +35,16 @@ public class MoveDragonHandler extends AbstractMovementPacketHandler { public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { final MapleCharacter chr = c.getPlayer(); final Point startPos = new Point(slea.readShort(), slea.readShort()); - List res = parseMovement(slea); + long movementDataStart = slea.getPosition(); final MapleDragon dragon = chr.getDragon(); - if (dragon != null && res != null && res.size() > 0) { - updatePosition(res, dragon, 0); + updatePosition(slea, dragon, 0); + long movementDataLength = slea.getPosition() - movementDataStart; //how many bytes were read by updatePosition + if (dragon != null && movementDataLength > 0) { + slea.seek(movementDataStart); if (chr.isHidden()) { - chr.getMap().broadcastGMMessage(chr, MaplePacketCreator.moveDragon(dragon, startPos, res)); + chr.getMap().broadcastGMMessage(chr, MaplePacketCreator.moveDragon(dragon, startPos, slea, movementDataLength)); } else { - chr.getMap().broadcastMessage(chr, MaplePacketCreator.moveDragon(dragon, startPos, res), dragon.getPosition()); + chr.getMap().broadcastMessage(chr, MaplePacketCreator.moveDragon(dragon, startPos, slea, movementDataLength), dragon.getPosition()); } } } diff --git a/src/net/server/channel/handlers/MoveLifeHandler.java b/src/net/server/channel/handlers/MoveLifeHandler.java index 727859343d..70abe5a64a 100644 --- a/src/net/server/channel/handlers/MoveLifeHandler.java +++ b/src/net/server/channel/handlers/MoveLifeHandler.java @@ -141,24 +141,26 @@ public final class MoveLifeHandler extends AbstractMovementPacketHandler { short start_x = slea.readShort(); // hmm.. startpos? short start_y = slea.readShort(); // hmm... Point startPos = new Point(start_x, start_y - 2); - List res = parseMovement(slea); + long movementDataStart = slea.getPosition(); + updatePosition(slea, monster, 0); + long movementDataLength = slea.getPosition() - movementDataStart; //how many bytes were read by updatePosition - Boolean aggro = monster.aggroMoveLifeUpdate(player); - if (aggro == null) return; - - if (nextUse != null) { - c.announce(MaplePacketCreator.moveMonsterResponse(objectid, moveid, mobMp, aggro, nextSkillId, nextSkillLevel)); + Boolean aggro = monster.aggroMoveLifeUpdate(player); + if (aggro == null) return; + + if (nextUse != null) { + c.announce(MaplePacketCreator.moveMonsterResponse(objectid, moveid, mobMp, aggro, nextSkillId, nextSkillLevel)); } else { c.announce(MaplePacketCreator.moveMonsterResponse(objectid, moveid, mobMp, aggro)); } - if (res != null) { - if (ServerConstants.USE_DEBUG_SHOW_RCVD_MVLIFE) { - System.out.println((isSkill ? "SKILL " : (isAttack ? "ATTCK " : " ")) + "castPos: " + castPos + " rawAct: " + rawActivity + " opt: " + pOption + " skillID: " + useSkillId + " skillLV: " + useSkillLevel + " " + "allowSkill: " + nextMovementCouldBeSkill + " mobMp: " + mobMp); - } - - map.broadcastMessage(player, MaplePacketCreator.moveMonster(objectid, nextMovementCouldBeSkill, rawActivity, useSkillId, useSkillLevel, pOption, startPos, res), monster.getPosition()); - updatePosition(res, monster, -2); + if (movementDataLength > 0) { + if (ServerConstants.USE_DEBUG_SHOW_RCVD_MVLIFE) { + System.out.println((isSkill ? "SKILL " : (isAttack ? "ATTCK " : " ")) + "castPos: " + castPos + " rawAct: " + rawActivity + " opt: " + pOption + " skillID: " + useSkillId + " skillLV: " + useSkillLevel + " " + "allowSkill: " + nextMovementCouldBeSkill + " mobMp: " + mobMp); + } + slea.seek(movementDataStart); + map.broadcastMessage(player, MaplePacketCreator.moveMonster(objectid, nextMovementCouldBeSkill, rawActivity, useSkillId, useSkillLevel, pOption, startPos, slea, movementDataLength), monster.getPosition()); + //updatePosition(res, monster, -2); //does this need to be done after the packet is broadcast? map.moveMonster(monster, monster.getPosition()); } diff --git a/src/net/server/channel/handlers/MovePetHandler.java b/src/net/server/channel/handlers/MovePetHandler.java index 005f265604..dd62570498 100644 --- a/src/net/server/channel/handlers/MovePetHandler.java +++ b/src/net/server/channel/handlers/MovePetHandler.java @@ -35,7 +35,7 @@ public final class MovePetHandler extends AbstractMovementPacketHandler { slea.readLong(); // Point startPos = StreamUtil.readShortPoint(slea); List res = parseMovement(slea); - if (res.isEmpty()) { + if (res == null || res.isEmpty()) { return; } MapleCharacter player = c.getPlayer(); diff --git a/src/net/server/channel/handlers/MovePlayerHandler.java b/src/net/server/channel/handlers/MovePlayerHandler.java index 6e6f4aa811..2a572003bd 100644 --- a/src/net/server/channel/handlers/MovePlayerHandler.java +++ b/src/net/server/channel/handlers/MovePlayerHandler.java @@ -22,8 +22,6 @@ package net.server.channel.handlers; import client.MapleClient; -import java.util.List; -import server.movement.LifeMovementFragment; import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; @@ -31,14 +29,16 @@ public final class MovePlayerHandler extends AbstractMovementPacketHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { slea.skip(9); - final List res = parseMovement(slea); - if (res != null) { - updatePosition(res, c.getPlayer(), 0); + long movementDataStart = slea.getPosition(); + updatePosition(slea, c.getPlayer(), 0); + long movementDataLength = slea.getPosition() - movementDataStart; //how many bytes were read by updatePosition + if (movementDataLength > 0) { + slea.seek(movementDataStart); c.getPlayer().getMap().movePlayer(c.getPlayer(), c.getPlayer().getPosition()); if (c.getPlayer().isHidden()) { - c.getPlayer().getMap().broadcastGMMessage(c.getPlayer(), MaplePacketCreator.movePlayer(c.getPlayer().getId(), res), false); + c.getPlayer().getMap().broadcastGMMessage(c.getPlayer(), MaplePacketCreator.movePlayer(c.getPlayer().getId(), slea, movementDataLength), false); } else { - c.getPlayer().getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.movePlayer(c.getPlayer().getId(), res), false); + c.getPlayer().getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.movePlayer(c.getPlayer().getId(), slea, movementDataLength), false); } } } diff --git a/src/net/server/channel/handlers/MoveSummonHandler.java b/src/net/server/channel/handlers/MoveSummonHandler.java index 1e5762705f..3ea5c0118b 100644 --- a/src/net/server/channel/handlers/MoveSummonHandler.java +++ b/src/net/server/channel/handlers/MoveSummonHandler.java @@ -23,11 +23,10 @@ package net.server.channel.handlers; import java.awt.Point; import java.util.Collection; -import java.util.List; + import client.MapleCharacter; import client.MapleClient; import server.maps.MapleSummon; -import server.movement.LifeMovementFragment; import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; @@ -36,7 +35,6 @@ public final class MoveSummonHandler extends AbstractMovementPacketHandler { public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { int oid = slea.readInt(); Point startPos = new Point(slea.readShort(), slea.readShort()); - List res = parseMovement(slea); MapleCharacter player = c.getPlayer(); Collection summons = player.getSummonsValues(); MapleSummon summon = null; @@ -46,9 +44,12 @@ public final class MoveSummonHandler extends AbstractMovementPacketHandler { break; } } + long movementDataStart = slea.getPosition(); + updatePosition(slea, summon, 0); + long movementDataLength = slea.getPosition() - movementDataStart; //how many bytes were read by updatePosition if (summon != null) { - updatePosition(res, summon, 0); - player.getMap().broadcastMessage(player, MaplePacketCreator.moveSummon(player.getId(), oid, startPos, res), summon.getPosition()); + slea.seek(movementDataStart); + player.getMap().broadcastMessage(player, MaplePacketCreator.moveSummon(player.getId(), oid, startPos, slea, movementDataLength), summon.getPosition()); } } } diff --git a/src/server/life/MapleMonster.java b/src/server/life/MapleMonster.java index dc57eb4906..797eed98f6 100644 --- a/src/server/life/MapleMonster.java +++ b/src/server/life/MapleMonster.java @@ -1337,7 +1337,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { aggroRemoveController(); setPosition(newPoint); - map.broadcastMessage(MaplePacketCreator.moveMonster(this.getObjectId(), false, -1, 0, 0, 0, this.getPosition(), this.getIdleMovement())); + map.broadcastMessage(MaplePacketCreator.moveMonster(this.getObjectId(), false, -1, 0, 0, 0, this.getPosition(), this.getIdleMovement(), getIdleMovementDataLength())); map.moveMonster(this, this.getPosition()); aggroUpdateController(); diff --git a/src/server/maps/AbstractAnimatedMapleMapObject.java b/src/server/maps/AbstractAnimatedMapleMapObject.java index 8c54788a73..7e69218803 100644 --- a/src/server/maps/AbstractAnimatedMapleMapObject.java +++ b/src/server/maps/AbstractAnimatedMapleMapObject.java @@ -21,14 +21,31 @@ */ package server.maps; -import java.awt.Point; -import java.util.Collections; -import java.util.List; -import server.movement.AbsoluteLifeMovement; -import server.movement.LifeMovementFragment; +import java.util.Arrays; + +import tools.data.input.ByteArrayByteStream; +import tools.data.input.GenericSeekableLittleEndianAccessor; +import tools.data.input.SeekableLittleEndianAccessor; +import tools.data.output.MaplePacketLittleEndianWriter; public abstract class AbstractAnimatedMapleMapObject extends AbstractMapleMapObject implements AnimatedMapleMapObject { - private int stance; + + static { + MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter((int) getIdleMovementDataLength()); + mplew.write(1); //movement command count + mplew.writeShort(-1); //x + mplew.writeShort(-1); //y + mplew.writeShort(0); //xwobble + mplew.writeShort(0); //ywobble + mplew.writeShort(0); //fh + mplew.write(-1); //stance + mplew.writeShort(0); //duration + idleMovementPacketData = mplew.getPacket(); + } + + private static final byte[] idleMovementPacketData; + + private int stance; @Override public int getStance() { @@ -45,11 +62,20 @@ public abstract class AbstractAnimatedMapleMapObject extends AbstractMapleMapObj return Math.abs(stance) % 2 == 1; } - public List getIdleMovement() { - AbsoluteLifeMovement alm = new AbsoluteLifeMovement(0, getPosition(), 0, getStance()); - alm.setPixelsPerSecond(new Point(0, 0)); - - List moveUpdate = Collections.singletonList((LifeMovementFragment) alm); - return moveUpdate; + public SeekableLittleEndianAccessor getIdleMovement() { + byte[] movementData = Arrays.copyOf(idleMovementPacketData, idleMovementPacketData.length); + //seems wasteful to create a whole packet writer when only a few values are changed + int x = getPosition().x; + int y = getPosition().y; + movementData[1] = (byte) (x & 0xFF); //x + movementData[2] = (byte) (x >> 8 & 0xFF); + movementData[3] = (byte) (y & 0xFF); //y + movementData[4] = (byte) (y >> 8 & 0xFF); + movementData[11] = (byte) (getStance() & 0xFF); + return new GenericSeekableLittleEndianAccessor(new ByteArrayByteStream(movementData)); + } + + public static long getIdleMovementDataLength() { + return 14; } } diff --git a/src/tools/MaplePacketCreator.java b/src/tools/MaplePacketCreator.java index 391e6a300c..0192563b47 100644 --- a/src/tools/MaplePacketCreator.java +++ b/src/tools/MaplePacketCreator.java @@ -35,48 +35,6 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import net.opcodes.SendOpcode; -import net.server.PlayerCoolDownValueHolder; -import net.server.Server; -import net.server.channel.Channel; -import net.server.channel.handlers.PlayerInteractionHandler; -import net.server.channel.handlers.SummonDamageHandler.SummonAttackEntry; -import net.server.guild.MapleAlliance; -import net.server.guild.MapleGuild; -import net.server.guild.MapleGuildCharacter; -import net.server.guild.MapleGuildSummary; -import net.server.world.MapleParty; -import net.server.world.MaplePartyCharacter; -import net.server.world.PartyOperation; -import server.CashShop.CashItem; -import server.CashShop.CashItemFactory; -import server.CashShop.SpecialCashItem; -import server.DueyPackage; -import server.MTSItemInfo; -import server.MapleItemInformationProvider; -import server.MapleShopItem; -import server.MapleTrade; -import server.events.gm.MapleSnowball; -import server.life.MapleMonster; -import server.life.MapleNPC; -import server.life.MobSkill; -import server.maps.MapleHiredMerchant; -import server.maps.MapleDoor; -import server.maps.MapleDoorObject; -import server.maps.MapleDragon; -import server.maps.MapleMap; -import server.maps.MapleMapItem; -import server.maps.MapleMist; -import server.maps.MapleMiniGame; -import server.maps.MapleMiniGame.MiniGameResult; -import server.maps.MaplePlayerShop; -import server.maps.MaplePlayerShopItem; -import server.maps.MapleReactor; -import server.maps.MapleSummon; -import server.life.MaplePlayerNPC; -import server.movement.LifeMovementFragment; -import tools.data.output.LittleEndianWriter; -import tools.data.output.MaplePacketLittleEndianWriter; import client.BuddylistEntry; import client.MapleBuffStat; import client.MapleCharacter; @@ -110,8 +68,51 @@ import constants.ServerConstants; import constants.skills.Buccaneer; import constants.skills.Corsair; import constants.skills.ThunderBreaker; -import java.util.TimeZone; +import net.opcodes.SendOpcode; +import net.server.PlayerCoolDownValueHolder; +import net.server.Server; +import net.server.channel.Channel; +import net.server.channel.handlers.PlayerInteractionHandler; +import net.server.channel.handlers.SummonDamageHandler.SummonAttackEntry; +import net.server.guild.MapleAlliance; +import net.server.guild.MapleGuild; +import net.server.guild.MapleGuildCharacter; +import net.server.guild.MapleGuildSummary; +import net.server.world.MapleParty; +import net.server.world.MaplePartyCharacter; +import net.server.world.PartyOperation; +import server.CashShop.CashItem; +import server.CashShop.CashItemFactory; +import server.CashShop.SpecialCashItem; +import server.DueyPackage; +import server.MTSItemInfo; +import server.MapleItemInformationProvider; +import server.MapleShopItem; +import server.MapleTrade; +import server.events.gm.MapleSnowball; +import server.life.MapleMonster; +import server.life.MapleNPC; +import server.life.MaplePlayerNPC; +import server.life.MobSkill; import server.maps.AbstractMapleMapObject; +import server.maps.MapleDoor; +import server.maps.MapleDoorObject; +import server.maps.MapleDragon; +import server.maps.MapleHiredMerchant; +import server.maps.MapleMap; +import server.maps.MapleMapItem; +import server.maps.MapleMiniGame; +import server.maps.MapleMiniGame.MiniGameResult; +import server.maps.MapleMist; +import server.maps.MaplePlayerShop; +import server.maps.MaplePlayerShopItem; +import server.maps.MapleReactor; +import server.maps.MapleSummon; +import server.movement.LifeMovementFragment; +import tools.data.input.SeekableLittleEndianAccessor; +import tools.data.output.LittleEndianWriter; +import tools.data.output.MaplePacketLittleEndianWriter; +import java.util.TimeZone; /** * @@ -2272,33 +2273,41 @@ public class MaplePacketCreator { return mplew.getPacket(); } + private static void rebroadcastMovementList(LittleEndianWriter lew, SeekableLittleEndianAccessor slea, long movementDataLength) { + //movement command length is sent by client, probably not a big issue? (could be calculated on server) + //if multiple write/reads are slow, could use a (cached?) byte[] buffer + for(long i = 0; i < movementDataLength; i++) { + lew.write(slea.readByte()); + } + } + private static void serializeMovementList(LittleEndianWriter lew, List moves) { - lew.write(moves.size()); - for (LifeMovementFragment move : moves) { - move.serialize(lew); - } + lew.write(moves.size()); + for(LifeMovementFragment move : moves) { + move.serialize(lew); + } } - public static byte[] movePlayer(int cid, List moves) { + public static byte[] movePlayer(int cid, SeekableLittleEndianAccessor movementSlea, long movementDataLength) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.MOVE_PLAYER.getValue()); mplew.writeInt(cid); mplew.writeInt(0); - serializeMovementList(mplew, moves); + rebroadcastMovementList(mplew, movementSlea, movementDataLength); return mplew.getPacket(); } - public static byte[] moveSummon(int cid, int oid, Point startPos, List moves) { + public static byte[] moveSummon(int cid, int oid, Point startPos, SeekableLittleEndianAccessor movementSlea, long movementDataLength) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.MOVE_SUMMON.getValue()); mplew.writeInt(cid); mplew.writeInt(oid); mplew.writePos(startPos); - serializeMovementList(mplew, moves); + rebroadcastMovementList(mplew, movementSlea, movementDataLength); return mplew.getPacket(); } - public static byte[] moveMonster(int oid, boolean skillPossible, int skill, int skillId, int skillLevel, int pOption, Point startPos, List moves) { + public static byte[] moveMonster(int oid, boolean skillPossible, int skill, int skillId, int skillLevel, int pOption, Point startPos, SeekableLittleEndianAccessor movementSlea, long movementDataLength) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.MOVE_MONSTER.getValue()); mplew.writeInt(oid); @@ -2309,7 +2318,7 @@ public class MaplePacketCreator { mplew.write(skillLevel); mplew.writeShort(pOption); mplew.writePos(startPos); - serializeMovementList(mplew, moves); + rebroadcastMovementList(mplew, movementSlea, movementDataLength); return mplew.getPacket(); } @@ -8021,12 +8030,12 @@ public class MaplePacketCreator { return mplew.getPacket(); } - public static byte[] moveDragon(MapleDragon dragon, Point startPos, List res) { + public static byte[] moveDragon(MapleDragon dragon, Point startPos, SeekableLittleEndianAccessor movementSlea, long movementDataLength) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.MOVE_DRAGON.getValue()); mplew.writeInt(dragon.getOwner().getId()); mplew.writePos(startPos); - serializeMovementList(mplew, res); + rebroadcastMovementList(mplew, movementSlea, movementDataLength); return mplew.getPacket(); } From 68fae4125125606ccd039f138125f0a105d6b4be Mon Sep 17 00:00:00 2001 From: kolakcc Date: Wed, 17 Jul 2019 01:25:18 +0200 Subject: [PATCH 05/37] Fix Java 8 support (#489) --- configuration.ini | 1 - src/constants/ServerConstants.java | 28 +++++++++++++++---- src/scripting/AbstractPlayerInteraction.java | 18 ++++++------ src/scripting/event/EventManager.java | 18 ++++++------ src/scripting/npc/NPCConversationManager.java | 4 +-- .../reactor/ReactorActionManager.java | 2 +- 6 files changed, 43 insertions(+), 28 deletions(-) diff --git a/configuration.ini b/configuration.ini index 01a874e45d..9a80eeb0b9 100644 --- a/configuration.ini +++ b/configuration.ini @@ -2,5 +2,4 @@ HOST=127.0.0.1 URL=jdbc:mysql://localhost:3306/heavenms DB_USER=root DB_PASS= -JAVA8=FALSE SHUTDOWNHOOK=true \ No newline at end of file diff --git a/src/constants/ServerConstants.java b/src/constants/ServerConstants.java index 4959f1e1d2..46339c645b 100644 --- a/src/constants/ServerConstants.java +++ b/src/constants/ServerConstants.java @@ -51,10 +51,8 @@ public class ServerConstants { public static boolean LOCALSERVER; //Other Configuration - public static boolean JAVA_8; + public static final boolean JAVA_8 = getJavaVersion() >= 8; public static boolean SHUTDOWNHOOK; - // JAVA_8: every static function in AbstractPlayerInteraction are to be made non-static, and code comment sections uncommented after enabling this functionality. - //Server Flags public static final boolean USE_CUSTOM_KEYSET = true; //Enables auto-setup of the HeavenMS's custom keybindings when creating characters. @@ -320,8 +318,7 @@ public class ServerConstants { ServerConstants.DB_USER = p.getProperty("DB_USER"); ServerConstants.DB_PASS = p.getProperty("DB_PASS"); - //java8 And Shutdownhook - ServerConstants.JAVA_8 = p.getProperty("JAVA8").equalsIgnoreCase("TRUE"); + // shutdownhook ServerConstants.SHUTDOWNHOOK = p.getProperty("SHUTDOWNHOOK").equalsIgnoreCase("true"); } catch (Exception e) { @@ -330,4 +327,25 @@ public class ServerConstants { System.exit(0); } } + // https://github.com/openstreetmap/josm/blob/a3a6e8a6b657cf4c5b4c64ea14d6e87be6280d65/src/org/openstreetmap/josm/tools/Utils.java#L1566-L1585 + /** + * Returns the Java version as an int value. + * @return the Java version as an int value (8, 9, etc.) + * @since 12130 + */ + public static int getJavaVersion() { + String version = System.getProperty("java.version"); + if (version.startsWith("1.")) { + version = version.substring(2); + } + // Allow these formats: + // 1.8.0_72-ea + // 9-ea + // 9 + // 9.0.1 + int dotPos = version.indexOf('.'); + int dashPos = version.indexOf('-'); + return Integer.parseInt(version.substring(0, + dotPos > -1 ? dotPos : dashPos > -1 ? dashPos : 1)); + } } diff --git a/src/scripting/AbstractPlayerInteraction.java b/src/scripting/AbstractPlayerInteraction.java index 29facd7c56..63177dc9e1 100644 --- a/src/scripting/AbstractPlayerInteraction.java +++ b/src/scripting/AbstractPlayerInteraction.java @@ -96,7 +96,7 @@ public class AbstractPlayerInteraction { return c.getPlayer().getMap(); } - public static int getHourOfDay() { + public int getHourOfDay() { return Calendar.getInstance().get(Calendar.HOUR_OF_DAY); } @@ -104,7 +104,7 @@ public class AbstractPlayerInteraction { return getMarketPortalId(getWarpMap(mapId)); } - private static int getMarketPortalId(MapleMap map) { + private int getMarketPortalId(MapleMap map) { return (map.findMarketPortal() != null) ? map.findMarketPortal().getId() : map.getRandomPlayerSpawnpoint().getId(); } @@ -236,7 +236,7 @@ public class AbstractPlayerInteraction { return canHoldAllAfterRemoving(Collections.singletonList(itemid), Collections.singletonList(quantity), Collections.singletonList(removeItemid), Collections.singletonList(removeQuantity)); } - private static List convertToIntegerArray(List list) { + private List convertToIntegerArray(List list) { List intList = new LinkedList<>(); for(Double d: list) { intList.add(d.intValue()); @@ -270,7 +270,7 @@ public class AbstractPlayerInteraction { return MapleInventory.checkSpots(c.getPlayer(), addedItems, false); } - private static List> prepareProofInventoryItems(List> items) { + private List> prepareProofInventoryItems(List> items) { List> addedItems = new LinkedList<>(); for(Pair p : items) { Item it = new Item(p.getLeft(), (short) 0, p.getRight().shortValue()); @@ -280,7 +280,7 @@ public class AbstractPlayerInteraction { return addedItems; } - private static List>> prepareInventoryItemList(List itemids, List quantity) { + private List>> prepareInventoryItemList(List itemids, List quantity) { int size = Math.min(itemids.size(), quantity.size()); List>> invList = new ArrayList<>(6); @@ -948,7 +948,7 @@ public class AbstractPlayerInteraction { c.announce(MaplePacketCreator.modifyInventory(false, Collections.singletonList(new ModifyInventory(0, newItem)))); } - public static void spawnNpc(int npcId, Point pos, MapleMap map) { + public void spawnNpc(int npcId, Point pos, MapleMap map) { MapleNPC npc = MapleLifeFactory.getNPC(npcId); if (npc != null) { npc.setPosition(pos); @@ -967,11 +967,11 @@ public class AbstractPlayerInteraction { getPlayer().getMap().spawnMonster(monster); } - public static MapleMonster getMonsterLifeFactory(int mid) { + public MapleMonster getMonsterLifeFactory(int mid) { return MapleLifeFactory.getMonster(mid); } - public static MobSkill getMobSkill(int skill, int level) { + public MobSkill getMobSkill(int skill, int level) { return MobSkillFactory.getMobSkill(skill, level); } @@ -1165,7 +1165,7 @@ public class AbstractPlayerInteraction { } } - public static String getFirstJobStatRequirement(int jobType) { + public String getFirstJobStatRequirement(int jobType) { switch(jobType) { case 1: return "STR " + 35; diff --git a/src/scripting/event/EventManager.java b/src/scripting/event/EventManager.java index ba91944e1f..42f5911630 100644 --- a/src/scripting/event/EventManager.java +++ b/src/scripting/event/EventManager.java @@ -21,6 +21,8 @@ */ package scripting.event; +import jdk.nashorn.api.scripting.ScriptObjectMirror; +import jdk.nashorn.api.scripting.ScriptUtils; import tools.exceptions.EventInstanceInProgressException; import java.util.Collection; import java.util.HashMap; @@ -165,14 +167,14 @@ public class EventManager { startLock = startLock.dispose(); } - private static List convertToIntegerArray(List list) { + private List convertToIntegerArray(List list) { List intList = new ArrayList<>(); for(Double d: list) intList.add(d.intValue()); return intList; } - public static long getLobbyDelay() { + public long getLobbyDelay() { return ServerConstants.EVENT_LOBBY_DELAY; } @@ -181,7 +183,6 @@ public class EventManager { if (!ServerConstants.JAVA_8) { return convertToIntegerArray((List)iv.invokeFunction("setLobbyRange", (Object) null)); } else { // java 8 support here thanks to MedicOP - /* ScriptObjectMirror object = (ScriptObjectMirror) iv.invokeFunction("setLobbyRange", (Object) null); int[] to = object.to(int[].class); List list = new ArrayList<>(); @@ -189,9 +190,7 @@ public class EventManager { list.add(i); } return list; - */ - - throw new NoSuchMethodException(); + } } catch (ScriptException | NoSuchMethodException ex) { // they didn't define a lobby range List defaultRange = new ArrayList<>(); @@ -750,13 +749,12 @@ public class EventManager { if(p != null) { List lmpc; - /*if(ServerConstants.JAVA_8) { + if(ServerConstants.JAVA_8) { lmpc = new ArrayList<>(((Map)(ScriptUtils.convert(p, Map.class))).values()); } else { lmpc = new ArrayList<>((List) p); - }*/ - - lmpc = new ArrayList<>((List) p); + } + party.setEligibleMembers(lmpc); return lmpc; } diff --git a/src/scripting/npc/NPCConversationManager.java b/src/scripting/npc/NPCConversationManager.java index d4cd0e8f3c..f1a38d836e 100644 --- a/src/scripting/npc/NPCConversationManager.java +++ b/src/scripting/npc/NPCConversationManager.java @@ -97,9 +97,9 @@ public class NPCConversationManager extends AbstractPlayerInteraction { private boolean itemScript; private List otherParty; - private static Map npcDefaultTalks = new HashMap<>(); + private Map npcDefaultTalks = new HashMap<>(); - private static String getDefaultTalk(int npcid) { + private String getDefaultTalk(int npcid) { String talk = npcDefaultTalks.get(npcid); if (talk == null) { talk = MapleLifeFactory.getNPCDefaultTalk(npcid); diff --git a/src/scripting/reactor/ReactorActionManager.java b/src/scripting/reactor/ReactorActionManager.java index 44237c5630..ffbd022278 100644 --- a/src/scripting/reactor/ReactorActionManager.java +++ b/src/scripting/reactor/ReactorActionManager.java @@ -186,7 +186,7 @@ public class ReactorActionManager extends AbstractPlayerInteraction { return ReactorScriptManager.getInstance().getDrops(reactor.getId()); } - private static List generateDropList(List drops, int dropRate, boolean meso, int mesoChance, int minItems) { + private List generateDropList(List drops, int dropRate, boolean meso, int mesoChance, int minItems) { MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); List items = new ArrayList<>(); From a29c3bcc8155eaa0c42ffac8dcc33bf8dd13326a Mon Sep 17 00:00:00 2001 From: Ronan Lana Date: Wed, 17 Jul 2019 02:30:48 -0300 Subject: [PATCH 06/37] Update README.md --- README.md | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index a92008c778..ab6a6c6fca 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,9 @@ Besides myself for maintaining this repository, credits are to be given to Wizet Regarding distributability and usage of the code presented here: like it was before, this MapleStory server is open-source. By that, it is meant that anyone is **free to install, use, modify and redistribute the contents**, as long as there is **no kind of commercial trading involved** and the **credits to the original creators are maintained** within the codes. -This is a NetBeans 8.0.2 Project, that MUST be built and run on Java 7 (JDK/JRE 1.7.0_79+) in order to run properly. This means that it's easier to install the project via opening the server project folder inside NetBeans' IDE. Once installed, build this project on your machine and run the server using the "launch.bat" application. +This is a NetBeans 8.2 Project, that should be built and run on Java 8 in order to run properly (used to be ran in Java 7, thanks @kolakcc for the Java 8 support!). + +Being a NetBeans 8.2 Project, this means that it's easier to install the project via opening the server project folder inside NetBeans' IDE. Once installed, build this project on your machine and run the server using the "launch.bat" application. In this project, many gameplay-wise issues generated from either the original WZ files and the server source have been partially or completely solved. Considering the use of the provided edited WZ's and server-side wz.xml files should be of the greatest importance when dealing with this instance of server source, in order to perceive it at it's full potential. My opinion, though! @@ -19,7 +21,7 @@ Server files: https://github.com/ronancpl/HeavenMS Client files & general tools: https://drive.google.com/drive/folders/0BzDsHSr-0V4MYVJ0TWIxd05hYUk -Java7 SDK: https://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html +Java 8 SDK & NetBeans bundle: https://www.oracle.com/technetwork/pt/java/javase/downloads/jdk-netbeans-jsp-3413153-ptb.html **Important note about localhosts**: these executables are red-flagged by antivirus tools as __potentially malicious softwares__, this happens due to the reverse engineering methods that were applied onto these software artifacts. Those depicted here have been put to use for years already and posed no harm so far, so they are soundly assumed to be safe. @@ -131,18 +133,14 @@ Firstly, install all the general tools required to run the server: * mysql-query-browser.msi -> MySQL client component, visually shows the DB data and hubs queries. * hamachi.msi -> used for establishing a tunnelling route for the server/client communication. - -Now install the Java 7 Development Kit: - -* jdk-7u79-windows-x64.exe -* netbeans-8.0.2-javase-windows.exe -> It's a NetBeans project, use other IDE at your own risk. +Now install the Java 8 SDK & NetBeans bundle: +* jdk-8u111-nb-8_2-windows-x64.exe -> It's a NetBeans project, use other IDE at your own risk. Now that the tools have been installed, test if they are working. For WampServer: -* Once you're done installing it, run it and you will see the Wamp icon on the bottom right corner. -Left click it and click 'Put Online'. +* Once you're done installing it, run it and you will see the Wamp icon on the bottom right corner. Left click it and click 'Put Online'. * In case of ORANGE ICON, change port 80 at "httpd.conf" to another, as it clashes with a Windows default port. Then Left click it again and click 'Start All Services'. * The Wamp icon must look completely green (if its orange or red, you have a problem). @@ -161,7 +159,9 @@ For expediency, "HeavenMS-master" folder on this guide will be referred just as Setting up the SQL: open MySQL Query Browser, then create a new session with the parameters below, then click OK. -Server Host: localhost Port: 3306 Username: root +* Server Host: localhost +* Port: 3306 +* Username: root Now it must be done CAREFULLY: @@ -183,9 +183,7 @@ Now open NetBeans, and click "Open a project..." . Select then the "HeavenMS" fo Inside the project, you may encounter some code errors. -Firstly, a **new Java7 platform** must be defined to run the server. Click "Manage Platforms...", then "Add platform", browse through "C:\Program Files\Java" for the JDK 1.7 folder. Then, name this new platform "JDK 1.7". - -In case errors still show up, these errors probably occurs because you have yet to set the core JARs of the project. From the project hierarchy, right-click the project and select "Resolve Project Problems". +If that's the case, you have yet to set the core JARs of the project. From the project hierarchy, right-click the project and select "Resolve Project Problems". Locate the folder "cores" inside the root directory of this project and manually configure the missing files on NetBeans (mina-core, slf4j-api, ...). From 187023c81fdd2f6131f866313ca1c0d1ac3c892e Mon Sep 17 00:00:00 2001 From: Ubaware Date: Thu, 18 Jul 2019 15:21:23 -0700 Subject: [PATCH 07/37] Proper coupon packet. (DB) coupon_items type 0 = mesos. (#491) --- .../channel/handlers/CouponCodeHandler.java | 43 +++++++++++++------ src/tools/MaplePacketCreator.java | 25 +++++++---- 2 files changed, 47 insertions(+), 21 deletions(-) diff --git a/src/net/server/channel/handlers/CouponCodeHandler.java b/src/net/server/channel/handlers/CouponCodeHandler.java index 32c53365a1..ee852650e9 100644 --- a/src/net/server/channel/handlers/CouponCodeHandler.java +++ b/src/net/server/channel/handlers/CouponCodeHandler.java @@ -31,6 +31,7 @@ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.Arrays; import java.util.HashMap; import java.util.LinkedList; import java.util.List; @@ -63,7 +64,6 @@ public final class CouponCodeHandler extends AbstractMaplePacketHandler { ResultSet rs = ps.executeQuery(); while (rs.next()) { int type = rs.getInt("type"), quantity = rs.getInt("quantity"); - if (type < 5) { Integer i = couponPoints.get(type); if (i != null) { @@ -195,8 +195,13 @@ public final class CouponCodeHandler extends AbstractMaplePacketHandler { if (type < 0) { c.announce(MaplePacketCreator.showCashShopMessage((byte) parseCouponResult(type))); } else { - List couponPackage = new LinkedList<>(); - + List cashItems = new LinkedList(); + List> items = new LinkedList>(); + int nxCredit = 0; + int maplePoints = 0; + int nxPrepaid = 0; + int mesos = 0; + for (Pair> p : codeRes.getRight()) { type = p.getLeft(); int quantity = p.getRight().getRight(); @@ -204,18 +209,26 @@ public final class CouponCodeHandler extends AbstractMaplePacketHandler { CashShop cs = c.getPlayer().getCashShop(); switch (type) { case 0: + c.getPlayer().gainMeso(quantity, false); //mesos + mesos += quantity; + break; case 4: cs.gainCash(1, quantity); //nxCredit + nxCredit += quantity; break; case 1: cs.gainCash(2, quantity); //maplePoint + maplePoints += quantity; break; case 2: cs.gainCash(4, quantity); //nxPrepaid + nxPrepaid += quantity; break; case 3: cs.gainCash(1, quantity); + nxCredit += quantity; cs.gainCash(4, (quantity / 5000)); + nxPrepaid += quantity / 5000; break; default: @@ -234,22 +247,28 @@ public final class CouponCodeHandler extends AbstractMaplePacketHandler { Item it = CashShop.generateCouponItem(item, qty); cs.addToInventory(it); - couponPackage.add(it); + cashItems.add(it); } else { MapleInventoryManipulator.addById(c, item, qty, "", -1); + items.add(new Pair((int)qty, item)); } - - //c.announce(MaplePacketCreator.showCouponRedeemedItem(item)); break; } } - - if (!couponPackage.isEmpty()) { - c.announce(MaplePacketCreator.showBoughtCashPackage(couponPackage, c.getAccID())); - } else { - c.announce(MaplePacketCreator.showBoughtQuestItem(0)); + if(cashItems.size() > 255) { + List oldList = cashItems; + cashItems = Arrays.asList(new Item[255]); + int index = 0; + for(Item item : oldList) { + cashItems.set(index, item); + index++; + } + } + if (nxCredit != 0 || nxPrepaid != 0) { //coupon packet can only show maple points (afaik) + c.announce(MaplePacketCreator.showBoughtQuestItem(0)); + } else { + c.announce(MaplePacketCreator.showCouponRedeemedItems(c.getAccID(), maplePoints, mesos, cashItems, items)); } - c.enableCSActions(); } } finally { diff --git a/src/tools/MaplePacketCreator.java b/src/tools/MaplePacketCreator.java index 0192563b47..fb9eb0231b 100644 --- a/src/tools/MaplePacketCreator.java +++ b/src/tools/MaplePacketCreator.java @@ -6112,12 +6112,12 @@ public class MaplePacketCreator { return mplew.getPacket(); } + public static byte[] sendNameTransferCheck(boolean canUseName) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.CASHSHOP_CHECK_NAME_CHANGE.getValue()); mplew.writeShort(0); mplew.writeBool(!canUseName); - return mplew.getPacket(); } @@ -6219,16 +6219,23 @@ public class MaplePacketCreator { return mplew.getPacket(); } - public static byte[] showCouponRedeemedItem(int itemid) { + public static byte[] showCouponRedeemedItems(int accountId, int maplePoints, int mesos, List cashItems, List> items) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); - mplew.writeShort(0x49); //v72 - mplew.writeInt(0); - mplew.writeInt(1); - mplew.writeShort(1); - mplew.writeShort(0x1A); - mplew.writeInt(itemid); - mplew.writeInt(0); + mplew.write(0x59); + mplew.write((byte)cashItems.size()); + for(Item item : cashItems) { + addCashItemInformation(mplew, item, accountId); + } + mplew.writeInt(maplePoints); + mplew.writeInt(items.size()); + for(Pair itemPair : items) { + int quantity = itemPair.getLeft(); + mplew.writeShort((short) quantity); //quantity (0 = 1 for cash items) + mplew.writeShort(0x1F); //0 = ?, >=0x20 = ?, <0x20 = ? (does nothing?) + mplew.writeInt(itemPair.getRight()); + } + mplew.writeInt(mesos); return mplew.getPacket(); } From 3031ff7ab26d10fe1ed84f2afdc25f1ea71604bc Mon Sep 17 00:00:00 2001 From: kolakcc Date: Mon, 22 Jul 2019 19:39:40 +0200 Subject: [PATCH 08/37] Fix stuck players when other player denies match request (#493) * Fix stuck players when other player denies match request * Add guild dismiss notification upon match dismiss/deny --- src/net/server/coordinator/MapleMatchCheckerCoordinator.java | 2 +- .../matchchecker/listener/MatchCheckerGuildCreation.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/net/server/coordinator/MapleMatchCheckerCoordinator.java b/src/net/server/coordinator/MapleMatchCheckerCoordinator.java index 1caa9747bf..a50fe4ac37 100644 --- a/src/net/server/coordinator/MapleMatchCheckerCoordinator.java +++ b/src/net/server/coordinator/MapleMatchCheckerCoordinator.java @@ -300,7 +300,7 @@ public class MapleMatchCheckerCoordinator { } private void disposeMatchElement(MapleMatchCheckingElement mmce) { - Set matchPlayers = mmce.getAcceptedMatchPlayers(); + Set matchPlayers = mmce.getMatchPlayers(); while (!poolMatchPlayers(matchPlayers)) { try { Thread.sleep(1000); diff --git a/src/net/server/coordinator/matchchecker/listener/MatchCheckerGuildCreation.java b/src/net/server/coordinator/matchchecker/listener/MatchCheckerGuildCreation.java index ed235a00d9..ec15535e8d 100644 --- a/src/net/server/coordinator/matchchecker/listener/MatchCheckerGuildCreation.java +++ b/src/net/server/coordinator/matchchecker/listener/MatchCheckerGuildCreation.java @@ -159,7 +159,7 @@ public class MatchCheckerGuildCreation implements MatchCheckerListenerRecipe { } if (chr.isLoggedinWorld()) { - chr.announce(MaplePacketCreator.genericGuildMessage((byte)0x24)); + chr.announce(MaplePacketCreator.genericGuildMessage((byte)0x26)); } } } @@ -189,6 +189,7 @@ public class MatchCheckerGuildCreation implements MatchCheckerListenerRecipe { if (chr.isLoggedinWorld()) { chr.message(msg); + chr.announce(MaplePacketCreator.genericGuildMessage((byte)0x26)); } } } From 890b1822d8d0c9632557549c1bce30d65b367107 Mon Sep 17 00:00:00 2001 From: Periwinks Date: Mon, 22 Jul 2019 14:24:26 -0400 Subject: [PATCH 09/37] Repeat question if user has wrong pass count (#497) Kerning City PQ Stage 1 NPC Cloto - Originally in HeavenMS, she would tell the user they had the wrong number of passes, but not repeat the question. - This was mainly a problem for those who accidentally skipped the window and would have to check - With this fix, cloto follows up her 'wrong answer' speech, but also repeats the proper question associated with each player --- scripts/npc/9020001.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/npc/9020001.js b/scripts/npc/9020001.js index 55a6826e46..f6e590d54a 100644 --- a/scripts/npc/9020001.js +++ b/scripts/npc/9020001.js @@ -170,7 +170,8 @@ function action(mode, type, selection) { eim.gridInsert(cm.getPlayer(), 0); } else { - cm.sendNext("I'm sorry, but that is not the right answer! Please have the correct number of coupons in your inventory."); + var question = stage1Questions[eim.gridCheck(cm.getPlayer()) - 1]; + cm.sendNext("I'm sorry, but that is not the right answer!\r\n" + question); } } } @@ -294,4 +295,4 @@ function action(mode, type, selection) { cm.dispose(); } } -} \ No newline at end of file +} From 442d45bef2818166f9c314a52a7043ae038f0a0a Mon Sep 17 00:00:00 2001 From: Ubaware Date: Mon, 22 Jul 2019 12:40:14 -0700 Subject: [PATCH 10/37] Bugfix for previous movement changes. (#494) --- .../server/channel/handlers/MoveLifeHandler.java | 5 +++-- src/server/maps/AbstractAnimatedMapleMapObject.java | 13 +++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/net/server/channel/handlers/MoveLifeHandler.java b/src/net/server/channel/handlers/MoveLifeHandler.java index 70abe5a64a..245d18279e 100644 --- a/src/net/server/channel/handlers/MoveLifeHandler.java +++ b/src/net/server/channel/handlers/MoveLifeHandler.java @@ -141,8 +141,9 @@ public final class MoveLifeHandler extends AbstractMovementPacketHandler { short start_x = slea.readShort(); // hmm.. startpos? short start_y = slea.readShort(); // hmm... Point startPos = new Point(start_x, start_y - 2); + Point serverStartPos = new Point(monster.getPosition()); long movementDataStart = slea.getPosition(); - updatePosition(slea, monster, 0); + updatePosition(slea, monster, -2); long movementDataLength = slea.getPosition() - movementDataStart; //how many bytes were read by updatePosition Boolean aggro = monster.aggroMoveLifeUpdate(player); @@ -159,7 +160,7 @@ public final class MoveLifeHandler extends AbstractMovementPacketHandler { System.out.println((isSkill ? "SKILL " : (isAttack ? "ATTCK " : " ")) + "castPos: " + castPos + " rawAct: " + rawActivity + " opt: " + pOption + " skillID: " + useSkillId + " skillLV: " + useSkillLevel + " " + "allowSkill: " + nextMovementCouldBeSkill + " mobMp: " + mobMp); } slea.seek(movementDataStart); - map.broadcastMessage(player, MaplePacketCreator.moveMonster(objectid, nextMovementCouldBeSkill, rawActivity, useSkillId, useSkillLevel, pOption, startPos, slea, movementDataLength), monster.getPosition()); + map.broadcastMessage(player, MaplePacketCreator.moveMonster(objectid, nextMovementCouldBeSkill, rawActivity, useSkillId, useSkillLevel, pOption, startPos, slea, movementDataLength), serverStartPos); //updatePosition(res, monster, -2); //does this need to be done after the packet is broadcast? map.moveMonster(monster, monster.getPosition()); } diff --git a/src/server/maps/AbstractAnimatedMapleMapObject.java b/src/server/maps/AbstractAnimatedMapleMapObject.java index 7e69218803..e7b1f9d4c1 100644 --- a/src/server/maps/AbstractAnimatedMapleMapObject.java +++ b/src/server/maps/AbstractAnimatedMapleMapObject.java @@ -33,6 +33,7 @@ public abstract class AbstractAnimatedMapleMapObject extends AbstractMapleMapObj static { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter((int) getIdleMovementDataLength()); mplew.write(1); //movement command count + mplew.write(0); mplew.writeShort(-1); //x mplew.writeShort(-1); //y mplew.writeShort(0); //xwobble @@ -67,15 +68,15 @@ public abstract class AbstractAnimatedMapleMapObject extends AbstractMapleMapObj //seems wasteful to create a whole packet writer when only a few values are changed int x = getPosition().x; int y = getPosition().y; - movementData[1] = (byte) (x & 0xFF); //x - movementData[2] = (byte) (x >> 8 & 0xFF); - movementData[3] = (byte) (y & 0xFF); //y - movementData[4] = (byte) (y >> 8 & 0xFF); - movementData[11] = (byte) (getStance() & 0xFF); + movementData[2] = (byte) (x & 0xFF); //x + movementData[3] = (byte) (x >> 8 & 0xFF); + movementData[4] = (byte) (y & 0xFF); //y + movementData[5] = (byte) (y >> 8 & 0xFF); + movementData[12] = (byte) (getStance() & 0xFF); return new GenericSeekableLittleEndianAccessor(new ByteArrayByteStream(movementData)); } public static long getIdleMovementDataLength() { - return 14; + return 15; } } From 85812ba48932eda720910c6bf2be4a3a5f2385b9 Mon Sep 17 00:00:00 2001 From: ronancpl Date: Sun, 28 Jul 2019 17:34:52 -0300 Subject: [PATCH 11/37] Heal & Summons atk limit + Skills on change job + Java8 scripting fix Adjusted reactor drops, now performing spray-like for any reactor. Revised usage of synchronized statements in several methods in the source. Fixed a quest from the Aran questline using "password" system unpredictedly. Fixed column name in table "reports". Fixed commands "startquest" and "completequest" not using the quest's NPC in the talk window. Fixed HP regen bonuses such as sauna robes and from Endure skill, when applied in maps with improved regen, leading to false-positives (with the heal on the player). Fixed a recent typo on a property from HenesysPQ. Fixed "Combat Step" effect showing twice for other players. Fixed type-cast issues within some script-hubbing methods in some Java classes. Reactivated an unused flag that ignores level difference when applying EXP gains to party players. Fixed Gaviota not disappearing after attack, as defined in the description of the skill. Fixed CPQ1 field 3 & 4 not allowing players to use summons/protectors. Fixed exped leaders still receiving exped creation packets even though it was dismissed due to failure on starting (daily entry limit, other fail cases). Fixed a locking issue that would show up due to a infinite loop case within the procedure that makes disappear items immediately if there were already many items on map. Fixed several summon skills not using buff icons. Fixed max damage calculation for summons getting extremely low values when either a player doesn't equip a weapon or attack value is too low. Fixed explosive loots not taking effect at all, although loot drop-types were already implemented. Fixed NPE cases when trying to update position of summons/dragons server-side. Reviewed reactor reset of reactors that disappears for a while. They are now supposed to return immediately once issued a reset. --- README.md | 2 +- .../area_bosses/{BossEvent.js => AreaBoss.js} | 0 docs/mychanges_ptbr.txt | 37 +++++- launch.bat | 2 +- nbproject/build-impl.xml | 110 +++++++----------- nbproject/genfiles.properties | 10 +- nbproject/private/private.properties | 2 +- nbproject/project.properties | 7 +- nbproject/project.xml | 1 - scripts/event/HenesysPQ.js | 2 +- scripts/npc/1032109.js | 5 + scripts/quest/21738.js | 25 ++-- sql/db_database.sql | 2 +- src/client/MapleCharacter.java | 69 +++++++---- src/client/MapleClient.java | 10 +- src/client/SkillFactory.java | 1 + src/client/command/CommandsExecutor.java | 1 + .../commands/gm3/QuestCompleteCommand.java | 9 +- .../commands/gm3/QuestStartCommand.java | 9 +- src/constants/skills/Aran.java | 1 + src/net/mina/MaplePacketEncoder.java | 64 +++++----- src/net/server/channel/Channel.java | 1 + .../handlers/AbstractDealDamageHandler.java | 14 +-- .../channel/handlers/HealOvertimeHandler.java | 3 +- .../channel/handlers/MoveDragonHandler.java | 18 +-- .../channel/handlers/MoveLifeHandler.java | 17 +-- .../channel/handlers/MoveSummonHandler.java | 6 +- .../handlers/PetExcludeItemsHandler.java | 2 + .../handlers/PlayerLoggedinHandler.java | 1 + .../channel/handlers/SummonDamageHandler.java | 23 +++- .../MapleMatchCheckerCoordinator.java | 2 +- src/net/server/world/World.java | 5 +- src/scripting/AbstractPlayerInteraction.java | 38 ++++-- src/scripting/event/EventInstanceManager.java | 36 +++--- src/scripting/event/EventManager.java | 17 ++- src/scripting/npc/NPCConversationManager.java | 11 +- .../reactor/ReactorActionManager.java | 2 +- .../reactor/ReactorScriptManager.java | 2 +- src/server/MapleStatEffect.java | 21 +--- src/server/expeditions/MapleExpedition.java | 3 +- src/server/life/MapleMonster.java | 21 ++-- src/server/maps/MapleMap.java | 49 +++----- src/server/maps/MapleMapFactory.java | 4 +- src/server/maps/MapleReactor.java | 70 ++++++++++- src/server/partyquest/MonsterCarnival.java | 2 +- src/tools/MaplePacketCreator.java | 9 +- wz/Character.wz/Longcoat/01050018.img.xml | 2 +- wz/Character.wz/Longcoat/01050100.img.xml | 2 +- wz/Character.wz/Longcoat/01050127.img.xml | 2 +- wz/Character.wz/Longcoat/01051017.img.xml | 2 +- wz/Character.wz/Longcoat/01051098.img.xml | 2 +- wz/Character.wz/Longcoat/01051140.img.xml | 2 +- 52 files changed, 475 insertions(+), 283 deletions(-) rename docs/area_bosses/{BossEvent.js => AreaBoss.js} (100%) diff --git a/README.md b/README.md index ab6a6c6fca..c03774e7fb 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Java 8 SDK & NetBeans bundle: https://www.oracle.com/technetwork/pt/java/javase/ **Change log:** - * Fixed Monster Magnet crashing the caster when trying to pull bosses. + * Fixed Monster Magnet crashing the caster when trying to pull bosses. Drawback: Dojo HPBar becomes unavailable. * Fixed some 'rn' problems with quest icons & removed "tab" from party leader changed message. https://hostr.co/tsYsQzzV6xT0 diff --git a/docs/area_bosses/BossEvent.js b/docs/area_bosses/AreaBoss.js similarity index 100% rename from docs/area_bosses/BossEvent.js rename to docs/area_bosses/AreaBoss.js diff --git a/docs/mychanges_ptbr.txt b/docs/mychanges_ptbr.txt index 461deea159..c876cdebb7 100644 --- a/docs/mychanges_ptbr.txt +++ b/docs/mychanges_ptbr.txt @@ -2014,4 +2014,39 @@ Revisado limite de dano aplicável por alguns summons, cujo valor limite estava Implementado normalização de fuso horário em pacotes enviados ao cliente. Agora o sistema utiliza mesmo fuso horário definido nas flags do servidor. Corrigido certos casos onde grupos dentro de lobby de CPQ não conseguiam ser desafiados, geralmente ocorrendo ao se desconectar após o desafio ter sido aceito e antes de começar a instância. Revisado script de créditos. -Adicionado checagem por GM's no método de autoban de jogador. \ No newline at end of file +Adicionado checagem por GM's no método de autoban de jogador. + +17 Julho 2019, +Corrigido drops de reatores não utilizando o sistema de drops sequenciais. +Revisado uso de sincronizações em vários métodos do sistema, tais como nos métodos de colocação de novos itens no mapa, detecção de toque em reatores, tabela de convidados em casamento, aplicação de dano de jogadores em mobs, recepção de pacotes. + +18 Julho 2019, +Corrigido aplicação indevida de requisição de palavra-chave que prosseguia quest em uma das quests na questline de Aran. +Corrigido nome errado em coluna da tabela "reports". +Corrigido uso de NPC default na conversa padrão que ocorre ao se utilizar o comando "startquest" e "completequest". + +19 Julho 2019, +Corrigido quest onde mobs podem aparecer na área do NPC Grendel permitindo repetir os ganhos de quest tanto quanto respawn de mobs à vontade. +Corrigido robes de sauna e outros, que permitem ganhos bônus de HP, gerando ganhos 10x maiores que o esperado. +Ajustado limites para recuperação de HP de forma a permitir ganhos em vários casos onde há a aplicação de bônus, tais como usando sauna robe, Endure skill. + +22 Julho 2019, +Corrigido atributo de contagem de dano em mob aliado da HenesysPQ não instanciado. +Corrigido skill "Combat Step" sendo considerado um "buff" pelo sistema do servidor. Isso implicava em duplicação de efeito visual para outros jogadores. + +26 - 27 Julho 2019, +Corrigido problemas de cast de tipos que passou a ocorrer após trocar para Java 8. +Ajustado flag que permite jogadores a ganhar EXP de mob independente de diferenças de nível. +Corrigido Gaviota não sumindo após lançar ataque. +Corrigido funcionalidade de ignorar items de pets não se mantendo após trocar de mapas. +Corrigido CPQ1 campo 3 e 4 não permitindo jogadores a usar summons/protectors em campo. +Corrigido líderes de expedição recebendo pacote de timer para fase de registro em casos onde a expedição falhou em ser iniciada. +Corrigido problema de locking ocorrendo recentemente ao tentar rodar limpeza de itens no mapa (ocorre ao realizar drops de vários itens, mais antigos imediatamente sumindo), problema ocorrendo devido a um caso de loop infinito. +Corrigido várias skills de summons não utilizando o ícone de buff no canto superior direito da tela. +Corrigido alguns danos de summons sendo calculados extremamente baixos quando o jogador não equipa uma arma ou o mesmo não possui pelo menos uma dezena em ataque. + +28 Julho 2019, +Corrigido funcionalidade de loot explosivo de mobs não aplicando devidamente. +Corrigido linguagens, bastante usado na MCPQ, não utilizando o valor requisitado pelo jogador ao logar/trocar de canais. +Corrigido casos de NPE ao tentar realizar updates de posição lado-servidor em alguns summons de jogador. +Revisado reset de reatores em reatores que estão desaparecidos por um tempo, para retornar de imediato. \ No newline at end of file diff --git a/launch.bat b/launch.bat index 076a28d634..52b0eafefa 100644 --- a/launch.bat +++ b/launch.bat @@ -1,6 +1,6 @@ @echo off @title HeavenMS -set PATH=C:\Program Files\Java\jdk1.7.0_79\bin;%PATH% +set PATH=C:\Program Files\Java\jdk1.8.0_211\bin;%PATH% set CLASSPATH=.;dist\* java -Xmx2048m -Dwzpath=wz\ net.server.Server pause \ No newline at end of file diff --git a/nbproject/build-impl.xml b/nbproject/build-impl.xml index 6fd0f0e472..d08448f6c7 100644 --- a/nbproject/build-impl.xml +++ b/nbproject/build-impl.xml @@ -46,51 +46,15 @@ is divided into following sections: - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - Must set platform.home - Must set platform.bootcp - Must set platform.java - Must set platform.javac - - The J2SE Platform is not correctly set up. - Your active platform is: ${platform.active}, but the corresponding property "platforms.${platform.active}.home" is not found in the project's properties files. - Either open the project in the IDE and setup the Platform with the same name or add it manually. - For example like this: - ant -Duser.properties.file=<path_to_property_file> jar (where you put the property "platforms.${platform.active}.home" in a .properties file) - or ant -Dplatforms.${platform.active}.home=<path_to_JDK_home> jar (where no properties file is used) - + @@ -112,7 +76,7 @@ is divided into following sections: - + @@ -190,6 +154,7 @@ is divided into following sections: + @@ -217,6 +182,20 @@ is divided into following sections: + + + + + + + + + + + + + + @@ -242,6 +221,7 @@ is divided into following sections: + @@ -284,7 +264,7 @@ is divided into following sections: - + @@ -324,7 +304,7 @@ is divided into following sections: - + @@ -405,7 +385,7 @@ is divided into following sections: - + @@ -428,7 +408,7 @@ is divided into following sections: - + @@ -460,7 +440,7 @@ is divided into following sections: - + @@ -540,7 +520,7 @@ is divided into following sections: - + @@ -565,7 +545,7 @@ is divided into following sections: - + @@ -707,7 +687,7 @@ is divided into following sections: - + @@ -742,9 +722,6 @@ is divided into following sections: - - - @@ -760,9 +737,7 @@ is divided into following sections: - - - + @@ -787,7 +762,7 @@ is divided into following sections: - + @@ -814,7 +789,7 @@ is divided into following sections: - + @@ -853,7 +828,7 @@ is divided into following sections: - + @@ -865,7 +840,7 @@ is divided into following sections: - + @@ -988,15 +963,15 @@ is divided into following sections: - + - + - + @@ -1004,7 +979,7 @@ is divided into following sections: - + @@ -1012,7 +987,7 @@ is divided into following sections: To run this application from the command line without Ant, try: - ${platform.java} -jar "${dist.jar.resolved}" + java -jar "${dist.jar.resolved}" @@ -1199,7 +1174,7 @@ is divided into following sections: Must select one file in the IDE or set run.class - + Must select one file in the IDE or set applet.url @@ -1221,13 +1196,10 @@ is divided into following sections: - - - - + - + diff --git a/nbproject/genfiles.properties b/nbproject/genfiles.properties index 4d5b6615f0..6db8caa016 100644 --- a/nbproject/genfiles.properties +++ b/nbproject/genfiles.properties @@ -1,8 +1,8 @@ -build.xml.data.CRC32=92113194 +build.xml.data.CRC32=92efccf9 build.xml.script.CRC32=ff13faf5 -build.xml.stylesheet.CRC32=8064a381@1.75.2.48 +build.xml.stylesheet.CRC32=8064a381@1.80.1.48 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. -nbproject/build-impl.xml.data.CRC32=92113194 -nbproject/build-impl.xml.script.CRC32=cef58264 -nbproject/build-impl.xml.stylesheet.CRC32=876e7a8f@1.75.2.48 +nbproject/build-impl.xml.data.CRC32=92efccf9 +nbproject/build-impl.xml.script.CRC32=8cda444e +nbproject/build-impl.xml.stylesheet.CRC32=830a3534@1.80.1.48 diff --git a/nbproject/private/private.properties b/nbproject/private/private.properties index 67c9c27960..c1164614bd 100644 --- a/nbproject/private/private.properties +++ b/nbproject/private/private.properties @@ -3,4 +3,4 @@ do.depend=false do.jar=true javac.debug=true javadoc.preview=true -user.properties.file=C:\\Users\\RonanLana\\AppData\\Roaming\\NetBeans\\8.0.2\\build.properties +user.properties.file=C:\\Users\\RonanLana\\AppData\\Roaming\\NetBeans\\8.2\\build.properties diff --git a/nbproject/project.properties b/nbproject/project.properties index 861f8eb51c..db7c8c2d82 100644 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -47,10 +47,11 @@ javac.classpath=\ # Space-separated list of extra javac options javac.compilerargs= javac.deprecation=false +javac.external.vm=false javac.processorpath=\ ${javac.classpath} -javac.source=1.7 -javac.target=1.7 +javac.source=1.8 +javac.target=1.8 javac.test.classpath=\ ${javac.classpath}:\ ${build.classes.dir} @@ -84,7 +85,7 @@ manifest.custom.permissions= manifest.file=manifest.mf meta.inf.dir=${src.dir}/META-INF mkdist.disabled=false -platform.active=JDK_1.7 +platform.active=default_platform project.license=gpl30_msv2 project.licensePath=./nbproject/licenseheader.txt run.classpath=\ diff --git a/nbproject/project.xml b/nbproject/project.xml index aed1c56350..980f89761c 100644 --- a/nbproject/project.xml +++ b/nbproject/project.xml @@ -4,7 +4,6 @@ HeavenMS - diff --git a/scripts/event/HenesysPQ.js b/scripts/event/HenesysPQ.js index cc4ebb5061..18decbfa3d 100644 --- a/scripts/event/HenesysPQ.js +++ b/scripts/event/HenesysPQ.js @@ -106,7 +106,7 @@ function setup(level, lobbyid) { eim.setProperty("level", level); eim.setProperty("stage", "0"); eim.setProperty("bunnyCake", "0"); - eim.setProperty("bunnyDamage", "0"); + eim.setProperty("bunnyDamaged", "0"); eim.getInstanceMap(910010000).resetPQ(level); eim.getInstanceMap(910010000).allowSummonState(false); diff --git a/scripts/npc/1032109.js b/scripts/npc/1032109.js index 80c74e25b2..a21274ad52 100644 --- a/scripts/npc/1032109.js +++ b/scripts/npc/1032109.js @@ -9,6 +9,11 @@ var status; var mobId = 2220100; //Blue Mushroom function start(){ + if (!cm.isQuestStarted(20718)) { // thanks Stray, Ari + cm.dispose(); + return; + } + status = -1; action(1, 0, 0); } diff --git a/scripts/quest/21738.js b/scripts/quest/21738.js index 5e19fd7a27..04eb91b521 100644 --- a/scripts/quest/21738.js +++ b/scripts/quest/21738.js @@ -34,17 +34,22 @@ function start(mode, type, selection) { else status--; - if (status == 0) { - qm.sendGetText("Hm, what do you want?"); + if (status == 0) { // thanks ZERO傑洛 for noticing this quest shouldn't need a pw -- GMS-like string data thanks to skycombat + qm.sendNext("What is it? I usually don't welcome uninvited guests, but you have a mysterious aura that makes me curious about what you have to say.", 9); } else if (status == 1) { - var text = qm.getText(); - - if(text != "There's something strange going on in Orbis....") { - qm.sendNext("No business to deal with? I won't brook loitering around here, go away."); - qm.dispose(); - } else { - qm.sendNext("Oh, that's right. I can sense the power emanating from you, as well. So I shall entrust something to you."); - } + qm.sendNext("(You tell her about Giant Nependeath.)", 3); + } else if (status == 2) { + qm.sendNext("Giant Nependeath? It's definitely a big problem, but I don't think it's enough to really affect Orbis. Wait, where did you say the Giant Nependeath was, again?", 9); + } else if (status == 3) { + qm.sendNext("Neglected Strolling Path.", 3); + } else if (status == 4) { + qm.sendNext("...Neglected Strolling Path? If Giant Nependeath is there, someone is trying to enter Sealed Garden! But why? And more importantly, who?", 9); + } else if (status == 5) { + qm.sendNext("Sealed Garden?", 3); + } else if (status == 6) { + qm.sendAcceptDecline("I can't tell you about Sealed Garden. If you want to find out, I must first see whether you are worthy of the information. Do you mind if I look into your fate?", 9); + } else if (status == 7) { + qm.sendOk("Well, now let's look into your fate. Give me a second."); } else { qm.forceStartQuest(); qm.dispose(); diff --git a/sql/db_database.sql b/sql/db_database.sql index 6bd4014580..3f106d8c6c 100644 --- a/sql/db_database.sql +++ b/sql/db_database.sql @@ -17406,7 +17406,7 @@ CREATE TABLE IF NOT EXISTS `reports` ( `victimid` int(11) NOT NULL, `reason` tinyint(4) NOT NULL, `chatlog` text NOT NULL, - `status` text NOT NULL, + `description` text NOT NULL, # correct field name, thanks resinate PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; diff --git a/src/client/MapleCharacter.java b/src/client/MapleCharacter.java index 1eb2a6c28d..ba413682f8 100644 --- a/src/client/MapleCharacter.java +++ b/src/client/MapleCharacter.java @@ -792,28 +792,31 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } return false; } + + public int calculateMaxBaseDamage(int watk, MapleWeaponType weapon) { + int mainstat, secondarystat; + if (getJob().isA(MapleJob.THIEF) && weapon == MapleWeaponType.DAGGER_OTHER) { + weapon = MapleWeaponType.DAGGER_THIEVES; + } + + if (weapon == MapleWeaponType.BOW || weapon == MapleWeaponType.CROSSBOW || weapon == MapleWeaponType.GUN) { + mainstat = localdex; + secondarystat = localstr; + } else if (weapon == MapleWeaponType.CLAW || weapon == MapleWeaponType.DAGGER_THIEVES) { + mainstat = localluk; + secondarystat = localdex + localstr; + } else { + mainstat = localstr; + secondarystat = localdex; + } + return (int) (((weapon.getMaxDamageMultiplier() * mainstat + secondarystat) / 100.0) * watk); + } public int calculateMaxBaseDamage(int watk) { int maxbasedamage; Item weapon_item = getInventory(MapleInventoryType.EQUIPPED).getItem((short) -11); if (weapon_item != null) { - MapleWeaponType weapon = ii.getWeaponType(weapon_item.getItemId()); - int mainstat, secondarystat; - if (getJob().isA(MapleJob.THIEF) && weapon == MapleWeaponType.DAGGER_OTHER) { - weapon = MapleWeaponType.DAGGER_THIEVES; - } - - if (weapon == MapleWeaponType.BOW || weapon == MapleWeaponType.CROSSBOW || weapon == MapleWeaponType.GUN) { - mainstat = localdex; - secondarystat = localstr; - } else if (weapon == MapleWeaponType.CLAW || weapon == MapleWeaponType.DAGGER_THIEVES) { - mainstat = localluk; - secondarystat = localdex + localstr; - } else { - mainstat = localstr; - secondarystat = localdex; - } - maxbasedamage = (int) (((weapon.getMaxDamageMultiplier() * mainstat + secondarystat) / 100.0) * watk); + maxbasedamage = calculateMaxBaseDamage(watk, ii.getWeaponType(weapon_item.getItemId())); } else { if (job.isA(MapleJob.PIRATE) || job.isA(MapleJob.THUNDERBREAKER1)) { double weapMulti = 3; @@ -830,8 +833,8 @@ public class MapleCharacter extends AbstractMapleCharacterObject { return maxbasedamage; } - public int calculateMaxBaseMagicDamage() { - int maxbasedamage = getTotalMagic(); + public int calculateMaxBaseMagicDamage(int matk) { + int maxbasedamage = matk; int totalint = getTotalInt(); if (totalint > 2000) { @@ -1110,6 +1113,29 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } } } + + private void broadcastChangeJob() { + for (MapleCharacter chr : map.getAllPlayers()) { + MapleClient chrC = chr.getClient(); + + if (chrC != null) { // propagate new job 3rd-person effects (FJ, Aran 1st strike, etc) + this.sendDestroyData(chrC); + this.sendSpawnData(chrC); + } + } + + TimerManager.getInstance().schedule(new Runnable() { // need to delay to ensure clientside has finished reloading character data + @Override + public void run() { + MapleCharacter thisChr = MapleCharacter.this; + MapleMap map = thisChr.getMap(); + + if (map != null) { + map.broadcastMessage(thisChr, MaplePacketCreator.showForeignEffect(thisChr.getId(), 8), false); + } + } + }, 777); + } public synchronized void changeJob(MapleJob newJob) { if (newJob == null) { @@ -1222,7 +1248,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { setMasteries(this.job.getId()); guildUpdate(); - getMap().broadcastMessage(this, MaplePacketCreator.showForeignEffect(this.getId(), 8), false); + broadcastChangeJob(); if (GameConstants.hasSPTable(newJob) && newJob.getId() != 2001) { if (getBuffedValue(MapleBuffStat.MONSTER_RIDING) != null) { @@ -7064,7 +7090,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } rs.close(); ps.close(); - ps = con.prepareStatement("SELECT name, characterslots FROM accounts WHERE id = ?", Statement.RETURN_GENERATED_KEYS); + ps = con.prepareStatement("SELECT name, characterslots, language FROM accounts WHERE id = ?", Statement.RETURN_GENERATED_KEYS); ps.setInt(1, ret.accountid); rs = ps.executeQuery(); if (rs.next()) { @@ -7072,6 +7098,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { retClient.setAccountName(rs.getString("name")); retClient.setCharacterSlots(rs.getByte("characterslots")); + retClient.setLanguage(rs.getInt("language")); // thanks Zein for noticing user language not overriding default once player is in-game } rs.close(); ps.close(); diff --git a/src/client/MapleClient.java b/src/client/MapleClient.java index 67589efabb..149e8b88bf 100644 --- a/src/client/MapleClient.java +++ b/src/client/MapleClient.java @@ -1285,12 +1285,18 @@ public class MapleClient { actionsSemaphore.release(); } - public void lockEncoder() { - encoderLock.lock(); + public boolean tryacquireEncoder() { + if (actionsSemaphore.tryAcquire()) { + encoderLock.lock(); + return true; + } else { + return false; + } } public void unlockEncoder() { encoderLock.unlock(); + actionsSemaphore.release(); } private static class CharNameAndId { diff --git a/src/client/SkillFactory.java b/src/client/SkillFactory.java index 8e0e5398c4..1bd4aa0c63 100644 --- a/src/client/SkillFactory.java +++ b/src/client/SkillFactory.java @@ -180,6 +180,7 @@ public class SkillFactory { case NightWalker.POISON_BOMB: case NightWalker.VAMPIRE: case ChiefBandit.CHAKRA: + case Aran.COMBAT_STEP: case Evan.RECOVERY_AURA: isBuff = false; break; diff --git a/src/client/command/CommandsExecutor.java b/src/client/command/CommandsExecutor.java index b9d6e0fc6e..547f21c771 100644 --- a/src/client/command/CommandsExecutor.java +++ b/src/client/command/CommandsExecutor.java @@ -265,6 +265,7 @@ public class CommandsExecutor { addCommand("unbug", 2, UnBugCommand.class); addCommand("id", 2, IdCommand.class); addCommand("gachalist", GachaListCommand.class); + addCommand("loot", LootCommand.class); commandsNameDesc.add(levelCommandsCursor); } diff --git a/src/client/command/commands/gm3/QuestCompleteCommand.java b/src/client/command/commands/gm3/QuestCompleteCommand.java index 3ea851b0f9..358d6642da 100644 --- a/src/client/command/commands/gm3/QuestCompleteCommand.java +++ b/src/client/command/commands/gm3/QuestCompleteCommand.java @@ -26,6 +26,7 @@ package client.command.commands.gm3; import client.command.Command; import client.MapleClient; import client.MapleCharacter; +import server.quest.MapleQuest; public class QuestCompleteCommand extends Command { { @@ -44,7 +45,13 @@ public class QuestCompleteCommand extends Command { int questId = Integer.parseInt(params[0]); if (player.getQuestStatus(questId) == 1) { - c.getAbstractPlayerInteraction().forceCompleteQuest(questId); + MapleQuest quest = MapleQuest.getInstance(questId); + if (quest != null && quest.getNpcRequirement(true) != -1) { + c.getAbstractPlayerInteraction().forceCompleteQuest(questId, quest.getNpcRequirement(true)); + } else { + c.getAbstractPlayerInteraction().forceCompleteQuest(questId); + } + player.dropMessage(5, "QUEST " + questId + " completed."); } else { player.dropMessage(5, "QUESTID " + questId + " not started or already completed."); diff --git a/src/client/command/commands/gm3/QuestStartCommand.java b/src/client/command/commands/gm3/QuestStartCommand.java index c609e66d64..831ab05b2e 100644 --- a/src/client/command/commands/gm3/QuestStartCommand.java +++ b/src/client/command/commands/gm3/QuestStartCommand.java @@ -26,6 +26,7 @@ package client.command.commands.gm3; import client.command.Command; import client.MapleClient; import client.MapleCharacter; +import server.quest.MapleQuest; public class QuestStartCommand extends Command { { @@ -44,7 +45,13 @@ public class QuestStartCommand extends Command { int questid = Integer.parseInt(params[0]); if (player.getQuestStatus(questid) == 0) { - c.getAbstractPlayerInteraction().forceStartQuest(questid); + MapleQuest quest = MapleQuest.getInstance(questid); + if (quest != null && quest.getNpcRequirement(false) != -1) { + c.getAbstractPlayerInteraction().forceStartQuest(questid, quest.getNpcRequirement(false)); + } else { + c.getAbstractPlayerInteraction().forceStartQuest(questid); + } + player.dropMessage(5, "QUEST " + questid + " started."); } else { player.dropMessage(5, "QUESTID " + questid + " already started/completed."); diff --git a/src/constants/skills/Aran.java b/src/constants/skills/Aran.java index 75a857c2bb..7a61ceeddb 100644 --- a/src/constants/skills/Aran.java +++ b/src/constants/skills/Aran.java @@ -29,6 +29,7 @@ public class Aran { public static final int DOUBLE_SWING = 21000002; public static final int TRIPLE_SWING = 21100001; public static final int COMBO_ABILITY = 21000000; + public static final int COMBAT_STEP = 21001001; public static final int POLEARM_BOOSTER = 21001003; public static final int MAPLE_WARRIOR = 21121000; public static final int FREEZE_STANDING = 21121003; diff --git a/src/net/mina/MaplePacketEncoder.java b/src/net/mina/MaplePacketEncoder.java index 9887244c1d..cad289e166 100644 --- a/src/net/mina/MaplePacketEncoder.java +++ b/src/net/mina/MaplePacketEncoder.java @@ -24,7 +24,6 @@ package net.mina; import constants.ServerConstants; import client.MapleClient; import constants.OpcodeConstants; -import net.opcodes.SendOpcode; import net.server.coordinator.MapleSessionCoordinator; import org.apache.mina.core.buffer.IoBuffer; import org.apache.mina.core.session.IoSession; @@ -43,40 +42,41 @@ public class MaplePacketEncoder implements ProtocolEncoder { final MapleClient client = (MapleClient) session.getAttribute(MapleClient.CLIENT_KEY); try { - client.lockEncoder(); - try { - final MapleAESOFB send_crypto = client.getSendCrypto(); - final byte[] input = (byte[]) message; - if (ServerConstants.USE_DEBUG_SHOW_PACKET) { - int packetLen = input.length; - int pHeader = readFirstShort(input); - String pHeaderStr = Integer.toHexString(pHeader).toUpperCase(); - String op = lookupRecv(pHeader); - String Recv = "ServerSend:" + op + " [" + pHeaderStr + "] (" + packetLen + ")\r\n"; - if (packetLen <= 50000) { - String RecvTo = Recv + HexTool.toString(input) + "\r\n" + HexTool.toStringFromAscii(input); - System.out.println(RecvTo); - if (op == null) { - System.out.println("UnknownPacket:" + RecvTo); + if (client.tryacquireEncoder()) { + try { + final MapleAESOFB send_crypto = client.getSendCrypto(); + final byte[] input = (byte[]) message; + if (ServerConstants.USE_DEBUG_SHOW_PACKET) { + int packetLen = input.length; + int pHeader = readFirstShort(input); + String pHeaderStr = Integer.toHexString(pHeader).toUpperCase(); + String op = lookupRecv(pHeader); + String Recv = "ServerSend:" + op + " [" + pHeaderStr + "] (" + packetLen + ")\r\n"; + if (packetLen <= 50000) { + String RecvTo = Recv + HexTool.toString(input) + "\r\n" + HexTool.toStringFromAscii(input); + System.out.println(RecvTo); + if (op == null) { + System.out.println("UnknownPacket:" + RecvTo); + } + } else { + FilePrinter.print(FilePrinter.PACKET_STREAM + MapleSessionCoordinator.getSessionRemoteAddress(session) + ".txt", HexTool.toString(new byte[]{input[0], input[1]}) + " ..."); } - } else { - FilePrinter.print(FilePrinter.PACKET_STREAM + MapleSessionCoordinator.getSessionRemoteAddress(session) + ".txt", HexTool.toString(new byte[]{input[0], input[1]}) + " ..."); } + + final byte[] unencrypted = new byte[input.length]; + System.arraycopy(input, 0, unencrypted, 0, input.length); + final byte[] ret = new byte[unencrypted.length + 4]; + final byte[] header = send_crypto.getPacketHeader(unencrypted.length); + MapleCustomEncryption.encryptData(unencrypted); + + send_crypto.crypt(unencrypted); + System.arraycopy(header, 0, ret, 0, 4); + System.arraycopy(unencrypted, 0, ret, 4, unencrypted.length); + + out.write(IoBuffer.wrap(ret)); + } finally { + client.unlockEncoder(); } - - final byte[] unencrypted = new byte[input.length]; - System.arraycopy(input, 0, unencrypted, 0, input.length); - final byte[] ret = new byte[unencrypted.length + 4]; - final byte[] header = send_crypto.getPacketHeader(unencrypted.length); - MapleCustomEncryption.encryptData(unencrypted); - - send_crypto.crypt(unencrypted); - System.arraycopy(header, 0, ret, 0, 4); - System.arraycopy(unencrypted, 0, ret, 4, unencrypted.length); - - out.write(IoBuffer.wrap(ret)); - } finally { - client.unlockEncoder(); } // System.arraycopy(unencrypted, 0, ret, 4, unencrypted.length); // out.write(ByteBuffer.wrap(ret)); diff --git a/src/net/server/channel/Channel.java b/src/net/server/channel/Channel.java index 1c14e708b5..4433d65d4c 100644 --- a/src/net/server/channel/Channel.java +++ b/src/net/server/channel/Channel.java @@ -460,6 +460,7 @@ public final class Channel { } expeditions.put(exped.getType(), exped); + exped.beginRegistration(); // thanks Conrad for noticing leader still receiving packets on failure-to-register cases return true; } } diff --git a/src/net/server/channel/handlers/AbstractDealDamageHandler.java b/src/net/server/channel/handlers/AbstractDealDamageHandler.java index 99f92ffbb8..8162296a1e 100644 --- a/src/net/server/channel/handlers/AbstractDealDamageHandler.java +++ b/src/net/server/channel/handlers/AbstractDealDamageHandler.java @@ -134,8 +134,9 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl } } - protected synchronized void applyAttack(AttackInfo attack, final MapleCharacter player, int attackCount) { - if (player.getMap().isOwnershipRestricted(player)) { + protected void applyAttack(AttackInfo attack, final MapleCharacter player, int attackCount) { + final MapleMap map = player.getMap(); + if (map.isOwnershipRestricted(player)) { return; } @@ -150,7 +151,7 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl theSkill = SkillFactory.getSkill(GameConstants.getHiddenSkill(attack.skill)); //returns back the skill id if its not a hidden skill so we are gucci attackEffect = attack.getAttackEffect(player, theSkill); if (attackEffect == null) { - player.getClient().announce(MaplePacketCreator.enableActions()); + player.announce(MaplePacketCreator.enableActions()); return; } @@ -176,7 +177,7 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl } } } else { - player.getClient().announce(MaplePacketCreator.enableActions()); + player.announce(MaplePacketCreator.enableActions()); } } @@ -195,7 +196,6 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl }*/ int totDamage = 0; - final MapleMap map = player.getMap(); if (attack.skill == ChiefBandit.MESO_EXPLOSION) { int delay = 0; @@ -308,7 +308,7 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl TimerManager.getInstance().schedule(new Runnable() { @Override public void run() { - player.getMap().spawnMesoDrop(Math.min((int) Math.max(((double) eachdf / (double) 20000) * (double) maxmeso, (double) 1), maxmeso), new Point((int) (monster.getPosition().getX() + Randomizer.nextInt(100) - 50), (int) (monster.getPosition().getY())), monster, player, true, (byte) 2); + map.spawnMesoDrop(Math.min((int) Math.max(((double) eachdf / (double) 20000) * (double) maxmeso, (double) 1), maxmeso), new Point((int) (monster.getPosition().getX() + Randomizer.nextInt(100) - 50), (int) (monster.getPosition().getY())), monster, player, true, (byte) 2); } }, delay); delay += 100; @@ -333,7 +333,7 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl List toSteal = new ArrayList<>(); toSteal.add(mi.retrieveDrop(monster.getId()).get(i)); - player.getMap().dropItemsFromMonster(toSteal, player, monster); + map.dropItemsFromMonster(toSteal, player, monster); monster.addStolen(toSteal.get(0).itemId); } } diff --git a/src/net/server/channel/handlers/HealOvertimeHandler.java b/src/net/server/channel/handlers/HealOvertimeHandler.java index 70c5157c48..dec1b5c1b9 100644 --- a/src/net/server/channel/handlers/HealOvertimeHandler.java +++ b/src/net/server/channel/handlers/HealOvertimeHandler.java @@ -25,6 +25,7 @@ import client.MapleCharacter; import client.MapleClient; import client.autoban.AutobanFactory; import client.autoban.AutobanManager; +import constants.GameConstants; import net.AbstractMaplePacketHandler; import net.server.Server; import server.maps.MapleMapFactory; @@ -46,7 +47,7 @@ public final class HealOvertimeHandler extends AbstractMaplePacketHandler { abm.setTimestamp(8, timestamp, 28); // thanks Vcoc & Thora for pointing out d/c happening here if ((abm.getLastSpam(0) + 1500) > timestamp) AutobanFactory.FAST_HP_HEALING.addPoint(abm, "Fast hp healing"); - int abHeal = 120 + (int)(20 * MapleMapFactory.getMapRecoveryRate(chr.getMapId())); // Sleepywood sauna and showa spa... + int abHeal = (int)(77 * MapleMapFactory.getMapRecoveryRate(chr.getMapId()) * 1.5); // thanks Ari for noticing players not getting healed in sauna in certain cases if (healHP > abHeal) { AutobanFactory.HIGH_HP_HEALING.autoban(chr, "Healing: " + healHP + "; Max is " + abHeal + "."); return; diff --git a/src/net/server/channel/handlers/MoveDragonHandler.java b/src/net/server/channel/handlers/MoveDragonHandler.java index 16c8422407..0b8bb9f099 100644 --- a/src/net/server/channel/handlers/MoveDragonHandler.java +++ b/src/net/server/channel/handlers/MoveDragonHandler.java @@ -37,14 +37,16 @@ public class MoveDragonHandler extends AbstractMovementPacketHandler { final Point startPos = new Point(slea.readShort(), slea.readShort()); long movementDataStart = slea.getPosition(); final MapleDragon dragon = chr.getDragon(); - updatePosition(slea, dragon, 0); - long movementDataLength = slea.getPosition() - movementDataStart; //how many bytes were read by updatePosition - if (dragon != null && movementDataLength > 0) { - slea.seek(movementDataStart); - if (chr.isHidden()) { - chr.getMap().broadcastGMMessage(chr, MaplePacketCreator.moveDragon(dragon, startPos, slea, movementDataLength)); - } else { - chr.getMap().broadcastMessage(chr, MaplePacketCreator.moveDragon(dragon, startPos, slea, movementDataLength), dragon.getPosition()); + if (dragon != null) { + updatePosition(slea, dragon, 0); + long movementDataLength = slea.getPosition() - movementDataStart; //how many bytes were read by updatePosition + if (movementDataLength > 0) { + slea.seek(movementDataStart); + if (chr.isHidden()) { + chr.getMap().broadcastGMMessage(chr, MaplePacketCreator.moveDragon(dragon, startPos, slea, movementDataLength)); + } else { + chr.getMap().broadcastMessage(chr, MaplePacketCreator.moveDragon(dragon, startPos, slea, movementDataLength), dragon.getPosition()); + } } } } diff --git a/src/net/server/channel/handlers/MoveLifeHandler.java b/src/net/server/channel/handlers/MoveLifeHandler.java index 245d18279e..67d6704ed9 100644 --- a/src/net/server/channel/handlers/MoveLifeHandler.java +++ b/src/net/server/channel/handlers/MoveLifeHandler.java @@ -143,14 +143,15 @@ public final class MoveLifeHandler extends AbstractMovementPacketHandler { Point startPos = new Point(start_x, start_y - 2); Point serverStartPos = new Point(monster.getPosition()); long movementDataStart = slea.getPosition(); - updatePosition(slea, monster, -2); - long movementDataLength = slea.getPosition() - movementDataStart; //how many bytes were read by updatePosition - - Boolean aggro = monster.aggroMoveLifeUpdate(player); - if (aggro == null) return; - - if (nextUse != null) { - c.announce(MaplePacketCreator.moveMonsterResponse(objectid, moveid, mobMp, aggro, nextSkillId, nextSkillLevel)); + + updatePosition(slea, monster, -2); // Thanks Doodle and ZERO傑洛 for noticing sponge-based bosses moving out of stage in case of no-offset applied + long movementDataLength = slea.getPosition() - movementDataStart; //how many bytes were read by updatePosition + + Boolean aggro = monster.aggroMoveLifeUpdate(player); + if (aggro == null) return; + + if (nextUse != null) { + c.announce(MaplePacketCreator.moveMonsterResponse(objectid, moveid, mobMp, aggro, nextSkillId, nextSkillLevel)); } else { c.announce(MaplePacketCreator.moveMonsterResponse(objectid, moveid, mobMp, aggro)); } diff --git a/src/net/server/channel/handlers/MoveSummonHandler.java b/src/net/server/channel/handlers/MoveSummonHandler.java index 3ea5c0118b..911ffd2ce8 100644 --- a/src/net/server/channel/handlers/MoveSummonHandler.java +++ b/src/net/server/channel/handlers/MoveSummonHandler.java @@ -44,10 +44,10 @@ public final class MoveSummonHandler extends AbstractMovementPacketHandler { break; } } - long movementDataStart = slea.getPosition(); - updatePosition(slea, summon, 0); - long movementDataLength = slea.getPosition() - movementDataStart; //how many bytes were read by updatePosition if (summon != null) { + long movementDataStart = slea.getPosition(); + updatePosition(slea, summon, 0); + long movementDataLength = slea.getPosition() - movementDataStart; //how many bytes were read by updatePosition slea.seek(movementDataStart); player.getMap().broadcastMessage(player, MaplePacketCreator.moveSummon(player.getId(), oid, startPos, slea, movementDataLength), summon.getPosition()); } diff --git a/src/net/server/channel/handlers/PetExcludeItemsHandler.java b/src/net/server/channel/handlers/PetExcludeItemsHandler.java index 4b1842c51a..b0619ac4fe 100644 --- a/src/net/server/channel/handlers/PetExcludeItemsHandler.java +++ b/src/net/server/channel/handlers/PetExcludeItemsHandler.java @@ -33,6 +33,8 @@ import tools.data.input.SeekableLittleEndianAccessor; * @author Ronan */ public final class PetExcludeItemsHandler extends AbstractMaplePacketHandler { + + @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { final int petId = slea.readInt(); slea.skip(4); diff --git a/src/net/server/channel/handlers/PlayerLoggedinHandler.java b/src/net/server/channel/handlers/PlayerLoggedinHandler.java index b51161b6ce..1698aa3732 100644 --- a/src/net/server/channel/handlers/PlayerLoggedinHandler.java +++ b/src/net/server/channel/handlers/PlayerLoggedinHandler.java @@ -203,6 +203,7 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { } if (!newcomer) { + c.setLanguage(player.getClient().getLanguage()); c.setCharacterSlots((byte) player.getClient().getCharacterSlots()); player.newClient(c); } diff --git a/src/net/server/channel/handlers/SummonDamageHandler.java b/src/net/server/channel/handlers/SummonDamageHandler.java index 08315c3a0b..4972eefa73 100644 --- a/src/net/server/channel/handlers/SummonDamageHandler.java +++ b/src/net/server/channel/handlers/SummonDamageHandler.java @@ -26,9 +26,14 @@ import client.MapleClient; import client.Skill; import client.SkillFactory; import client.autoban.AutobanFactory; +import client.inventory.Item; +import client.inventory.MapleInventoryType; +import client.inventory.MapleWeaponType; import client.status.MonsterStatusEffect; +import constants.skills.Outlaw; import java.util.ArrayList; import java.util.List; +import server.MapleItemInformationProvider; import server.MapleStatEffect; import server.life.MapleMonster; import server.life.MapleMonsterInformationProvider; @@ -115,15 +120,29 @@ public final class SummonDamageHandler extends AbstractDealDamageHandler { player.getMap().damageMonster(player, target, damage); } } + + if (summon.getSkill() == Outlaw.GAVIOTA) { // thanks Periwinks for noticing Gaviota not cancelling after grenade toss + player.cancelEffect(summonEffect, false, -1); + } } private static int calcMaxDamage(MapleStatEffect summonEffect, MapleCharacter player, boolean magic) { double maxDamage; if (magic) { - maxDamage = player.calculateMaxBaseMagicDamage() * (0.05 * summonEffect.getMatk()); + int matk = Math.max(player.getTotalMagic(), 14); + maxDamage = player.calculateMaxBaseMagicDamage(matk) * (0.05 * summonEffect.getMatk()); } else { - int maxBaseDmg = player.calculateMaxBaseDamage(player.getTotalWatk()); // thanks Conrad for detecting some summons legitimately hitting over the calculated limit + int watk = Math.max(player.getTotalWatk(), 14); + Item weapon_item = player.getInventory(MapleInventoryType.EQUIPPED).getItem((short) -11); + + int maxBaseDmg; // thanks Conrad, Atoot for detecting some summons legitimately hitting over the calculated limit + if (weapon_item != null) { + maxBaseDmg = player.calculateMaxBaseDamage(watk, MapleItemInformationProvider.getInstance().getWeaponType(weapon_item.getItemId())); + } else { + maxBaseDmg = player.calculateMaxBaseDamage(watk, MapleWeaponType.SWORD1H); + } + float summonDmgMod = (maxBaseDmg >= 438) ? 0.054f : 0.077f; maxDamage = maxBaseDmg * (summonDmgMod * summonEffect.getWatk()); } diff --git a/src/net/server/coordinator/MapleMatchCheckerCoordinator.java b/src/net/server/coordinator/MapleMatchCheckerCoordinator.java index a50fe4ac37..79cef27403 100644 --- a/src/net/server/coordinator/MapleMatchCheckerCoordinator.java +++ b/src/net/server/coordinator/MapleMatchCheckerCoordinator.java @@ -300,7 +300,7 @@ public class MapleMatchCheckerCoordinator { } private void disposeMatchElement(MapleMatchCheckingElement mmce) { - Set matchPlayers = mmce.getMatchPlayers(); + Set matchPlayers = mmce.getMatchPlayers(); // thanks Ai for noticing players getting match-stuck on certain cases while (!poolMatchPlayers(matchPlayers)) { try { Thread.sleep(1000); diff --git a/src/net/server/world/World.java b/src/net/server/world/World.java index 8fdaaa4c3e..fa1df90ca4 100644 --- a/src/net/server/world/World.java +++ b/src/net/server/world/World.java @@ -47,6 +47,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.SortedMap; import java.util.TreeMap; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.locks.ReentrantReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock; @@ -130,7 +131,7 @@ public class World { private Set queuedGuilds = new HashSet<>(); private Map, Pair>> queuedMarriages = new HashMap<>(); - private Map> marriageGuests = new HashMap<>(); + private Map> marriageGuests = new ConcurrentHashMap<>(); private Map partyChars = new HashMap<>(); private Map parties = new HashMap<>(); @@ -720,7 +721,7 @@ public class World { return new Pair<>(type, guests); } - public synchronized boolean addMarriageGuest(int marriageId, int playerId) { + public boolean addMarriageGuest(int marriageId, int playerId) { Set guests = marriageGuests.get(marriageId); if(guests != null) { if(guests.contains(playerId)) return false; diff --git a/src/scripting/AbstractPlayerInteraction.java b/src/scripting/AbstractPlayerInteraction.java index 63177dc9e1..b6f8c031a6 100644 --- a/src/scripting/AbstractPlayerInteraction.java +++ b/src/scripting/AbstractPlayerInteraction.java @@ -236,25 +236,43 @@ public class AbstractPlayerInteraction { return canHoldAllAfterRemoving(Collections.singletonList(itemid), Collections.singletonList(quantity), Collections.singletonList(removeItemid), Collections.singletonList(removeQuantity)); } - private List convertToIntegerArray(List list) { - List intList = new LinkedList<>(); - for(Double d: list) { - intList.add(d.intValue()); + private List convertToIntegerArray(List list) { + List intList = new ArrayList<>(); // JAVA 7 Rhino script engine. Thanks Bruno, felipepm10 for noticing a typecast issue here. + + if (ServerConstants.JAVA_8) { + for (Object d: list) { + intList.add(((Integer) d).intValue()); + } + } else { + for (Object d: list) { + intList.add(((Double) d).intValue()); + } } return intList; } - public boolean canHoldAll(List itemids) { - List quantity = new LinkedList<>(); - for (int i = 0; i < itemids.size(); i++) { - quantity.add(1.0); + public boolean canHoldAll(List itemids) { + List quantity = new LinkedList<>(); + + if (ServerConstants.JAVA_8) { + Integer intOne = 1; + + for (int i = 0; i < itemids.size(); i++) { + quantity.add(intOne); + } + } else { + Double doubleOne = 1.0; + + for (int i = 0; i < itemids.size(); i++) { + quantity.add(doubleOne); + } } - + return canHoldAll(itemids, quantity); } - public boolean canHoldAll(List itemids, List quantity) { + public boolean canHoldAll(List itemids, List quantity) { return canHoldAll(convertToIntegerArray(itemids), convertToIntegerArray(quantity), true); } diff --git a/src/scripting/event/EventInstanceManager.java b/src/scripting/event/EventInstanceManager.java index f70b468684..bce4b556da 100644 --- a/src/scripting/event/EventInstanceManager.java +++ b/src/scripting/event/EventInstanceManager.java @@ -911,24 +911,28 @@ public class EventInstanceManager { return(MapleLifeFactory.getMonster(mid)); } - private List convertToIntegerArray(List list) { - List intList; - if(ServerConstants.JAVA_8) - intList=new ArrayList (new ArrayList(java.util.Arrays.asList(list.toArray()))); - else - { - intList = new ArrayList<>(); - for(Double d: list) intList.add(d.intValue()); + private List convertToIntegerArray(List list) { + List intList = new ArrayList<>(); + + if (ServerConstants.JAVA_8) { + for (Object d: list) { + intList.add(((Integer) d).intValue()); + } + } else { + for (Object d: list) { + intList.add(((Double) d).intValue()); + } } - return intList; + + return intList; } - public void setEventClearStageExp(List gain) { + public void setEventClearStageExp(List gain) { onMapClearExp.clear(); onMapClearExp.addAll(convertToIntegerArray(gain)); } - public void setEventClearStageMeso(List gain) { + public void setEventClearStageMeso(List gain) { onMapClearMeso.clear(); onMapClearMeso.addAll(convertToIntegerArray(gain)); } @@ -959,7 +963,7 @@ public class EventInstanceManager { } } - public final void setExclusiveItems(List items) { + public final void setExclusiveItems(List items) { List exclusive = convertToIntegerArray(items); wL.lock(); @@ -972,19 +976,19 @@ public class EventInstanceManager { } } - public final void setEventRewards(List rwds, List qtys, int expGiven) { + public final void setEventRewards(List rwds, List qtys, int expGiven) { setEventRewards(1, rwds, qtys, expGiven); } - public final void setEventRewards(List rwds, List qtys) { + public final void setEventRewards(List rwds, List qtys) { setEventRewards(1, rwds, qtys); } - public final void setEventRewards(int eventLevel, List rwds, List qtys) { + public final void setEventRewards(int eventLevel, List rwds, List qtys) { setEventRewards(eventLevel, rwds, qtys, 0); } - public final void setEventRewards(int eventLevel, List rwds, List qtys, int expGiven) { + public final void setEventRewards(int eventLevel, List rwds, List qtys, int expGiven) { // fixed EXP will be rewarded at the same time the random item is given if(eventLevel <= 0 || eventLevel > ServerConstants.MAX_EVENT_LEVELS) return; diff --git a/src/scripting/event/EventManager.java b/src/scripting/event/EventManager.java index 42f5911630..2a15dc2946 100644 --- a/src/scripting/event/EventManager.java +++ b/src/scripting/event/EventManager.java @@ -167,10 +167,19 @@ public class EventManager { startLock = startLock.dispose(); } - private List convertToIntegerArray(List list) { + private List convertToIntegerArray(List list) { List intList = new ArrayList<>(); - for(Double d: list) intList.add(d.intValue()); - + + if (ServerConstants.JAVA_8) { + for (Object d: list) { + intList.add(((Integer) d).intValue()); + } + } else { + for (Object d: list) { + intList.add(((Double) d).intValue()); + } + } + return intList; } @@ -181,7 +190,7 @@ public class EventManager { private List getLobbyRange() { try { if (!ServerConstants.JAVA_8) { - return convertToIntegerArray((List)iv.invokeFunction("setLobbyRange", (Object) null)); + return convertToIntegerArray((List)iv.invokeFunction("setLobbyRange", (Object) null)); } else { // java 8 support here thanks to MedicOP ScriptObjectMirror object = (ScriptObjectMirror) iv.invokeFunction("setLobbyRange", (Object) null); int[] to = object.to(int[].class); diff --git a/src/scripting/npc/NPCConversationManager.java b/src/scripting/npc/NPCConversationManager.java index f1a38d836e..c84b5e2517 100644 --- a/src/scripting/npc/NPCConversationManager.java +++ b/src/scripting/npc/NPCConversationManager.java @@ -35,6 +35,7 @@ import provider.MapleDataProviderFactory; import scripting.AbstractPlayerInteraction; import server.MapleItemInformationProvider; import server.MapleStatEffect; +import server.MapleShop; import server.MapleShopFactory; import server.events.gm.MapleEvent; import server.gachapon.MapleGachapon; @@ -83,6 +84,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import tools.FilePrinter; /** * @@ -400,7 +402,14 @@ public class NPCConversationManager extends AbstractPlayerInteraction { } public void openShopNPC(int id) { - MapleShopFactory.getInstance().getShop(id).sendShop(c); + MapleShop shop = MapleShopFactory.getInstance().getShop(id); + + if (shop != null) { + shop.sendShop(c); + } else { // check for missing shopids thanks to resinate + FilePrinter.printError(FilePrinter.NPC_UNCODED, "Shop ID: " + id + " is missing from database."); + MapleShopFactory.getInstance().getShop(11000).sendShop(c); + } } public void maxMastery() { diff --git a/src/scripting/reactor/ReactorActionManager.java b/src/scripting/reactor/ReactorActionManager.java index ffbd022278..89ff6c338a 100644 --- a/src/scripting/reactor/ReactorActionManager.java +++ b/src/scripting/reactor/ReactorActionManager.java @@ -105,7 +105,7 @@ public class ReactorActionManager extends AbstractPlayerInteraction { } public void dropItems(int posX, int posY, boolean meso, int mesoChance, int minMeso, int maxMeso, int minItems) { - dropItems(false, posX, posY, meso, mesoChance, minMeso, maxMeso, minItems); + dropItems(true, posX, posY, meso, mesoChance, minMeso, maxMeso, minItems); // all reactors actually drop items sequentially... thanks inhyuk for pointing this out! } public void dropItems(boolean delayed, int posX, int posY, boolean meso, int mesoChance, final int minMeso, final int maxMeso, int minItems) { diff --git a/src/scripting/reactor/ReactorScriptManager.java b/src/scripting/reactor/ReactorScriptManager.java index 45e61feed0..6e06f41ee9 100644 --- a/src/scripting/reactor/ReactorScriptManager.java +++ b/src/scripting/reactor/ReactorScriptManager.java @@ -114,7 +114,7 @@ public class ReactorScriptManager extends AbstractScriptManager { touching(c, reactor, false); } - public synchronized void touching(MapleClient c, MapleReactor reactor, boolean touching) { + private void touching(MapleClient c, MapleReactor reactor, boolean touching) { try { Invocable iv = getInvocable("reactor/" + reactor.getId() + ".js", c); if (iv == null) return; diff --git a/src/server/MapleStatEffect.java b/src/server/MapleStatEffect.java index ec718cd608..64f9e72401 100644 --- a/src/server/MapleStatEffect.java +++ b/src/server/MapleStatEffect.java @@ -1340,7 +1340,7 @@ public class MapleStatEffect { if (localstatups.size() > 0) { byte[] buff = null; byte[] mbuff = null; - if (getSummonMovementType() == null && this.isActive(applyto)) { + if (this.isActive(applyto)) { buff = MaplePacketCreator.giveBuff((skill ? sourceid : -sourceid), localDuration, localstatups); } if (isDash()) { @@ -1390,11 +1390,10 @@ public class MapleStatEffect { } if (buff != null) { - if (!hasNoIcon()) { //Thanks flav for such a simple release! :) - applyto.announce(buff); - } else { - System.out.println(" NO buff icon for id " + sourceid); - } + //Thanks flav for such a simple release! :) + //Thanks Conrad, Atoot for noticing summons not using buff icon + + applyto.announce(buff); } long starttime = Server.getInstance().getCurrentTime(); @@ -1820,16 +1819,6 @@ public class MapleStatEffect { return null; } - public boolean hasNoIcon() { - return (sourceid == 3111002 || sourceid == 3211002 || + // puppet, puppet - sourceid == 3211005 || + // golden eagle - sourceid == 2121005 || sourceid == 2221005 || + // elquines, ifrit - sourceid == 2321003 || sourceid == 3121006 || + // bahamut, phoenix - sourceid == 3221005 || sourceid == 3111005 || + // frostprey, silver hawk - sourceid == 2311006 || sourceid == 5220002 || + // summon dragon, wrath of the octopi - sourceid == 5211001 || sourceid == 5211002); // octopus, gaviota - } - public boolean isSkill() { return skill; } diff --git a/src/server/expeditions/MapleExpedition.java b/src/server/expeditions/MapleExpedition.java index fef1ee2f15..17335dd105 100644 --- a/src/server/expeditions/MapleExpedition.java +++ b/src/server/expeditions/MapleExpedition.java @@ -109,7 +109,6 @@ public class MapleExpedition { minSize = (minPlayers != 0) ? minPlayers : type.getMinSize(); maxSize = (maxPlayers != 0) ? maxPlayers : type.getMaxSize(); bossLogs = new CopyOnWriteArrayList<>(); - beginRegistration(); } public int getMinSize() { @@ -120,7 +119,7 @@ public class MapleExpedition { return maxSize; } - private void beginRegistration() { + public void beginRegistration() { registering = true; leader.announce(MaplePacketCreator.getClock(type.getRegistrationTime() * 60)); if (!silent) { diff --git a/src/server/life/MapleMonster.java b/src/server/life/MapleMonster.java index 797eed98f6..0bb34c0d7f 100644 --- a/src/server/life/MapleMonster.java +++ b/src/server/life/MapleMonster.java @@ -548,14 +548,21 @@ public class MapleMonster extends AbstractLoadedMapleLife { int totalPartyLevel = 0; // thanks G h o s t, Alfred, Vcoc, BHB for poiting out a bug in detecting party members after membership transactions in a party took place - for (MapleCharacter member : partyParticipation.keySet().iterator().next().getPartyMembersOnSameMap()) { - if (!leechInterval.inInterval(member.getLevel())) { - underleveled.add(member); - continue; + if (!ServerConstants.USE_ENFORCE_MOB_LEVEL_RANGE) { + for (MapleCharacter member : partyParticipation.keySet().iterator().next().getPartyMembersOnSameMap()) { + if (!leechInterval.inInterval(member.getLevel())) { + underleveled.add(member); + continue; + } + + totalPartyLevel += member.getLevel(); + expMembers.add(member); + } + } else { // thanks Ari for noticing unused server flag after EXP system overhaul + for (MapleCharacter member : partyParticipation.keySet().iterator().next().getPartyMembersOnSameMap()) { + totalPartyLevel += member.getLevel(); + expMembers.add(member); } - - totalPartyLevel += member.getLevel(); - expMembers.add(member); } int membersSize = expMembers.size(); diff --git a/src/server/maps/MapleMap.java b/src/server/maps/MapleMap.java index f92f1bf3e9..98eca82656 100644 --- a/src/server/maps/MapleMap.java +++ b/src/server/maps/MapleMap.java @@ -387,9 +387,10 @@ public class MapleMap { } public void addMapObject(MapleMapObject mapobject) { + int curOID = getUsableOID(); + objectWLock.lock(); try { - int curOID = getUsableOID(); mapobject.setObjectId(curOID); this.mapobjects.put(curOID, mapobject); } finally { @@ -413,11 +414,11 @@ public class MapleMap { private void spawnAndAddRangedMapObject(MapleMapObject mapobject, DelayedPacketCreation packetbakery, SpawnCondition condition) { List inRangeCharacters = new LinkedList<>(); + int curOID = getUsableOID(); chrRLock.lock(); objectWLock.lock(); try { - int curOID = getUsableOID(); mapobject.setObjectId(curOID); this.mapobjects.put(curOID, mapobject); for (MapleCharacter chr : characters) { @@ -896,15 +897,16 @@ public class MapleMap { return droppedItemCount.get(); } - private synchronized void instantiateItemDrop(MapleMapItem mdrop) { + private void instantiateItemDrop(MapleMapItem mdrop) { if(droppedItemCount.get() >= ServerConstants.ITEM_LIMIT_ON_MAP) { MapleMapObject mapobj; do { + mapobj = null; + objectWLock.lock(); try { - mapobj = registeredDrops.remove(0).get(); - while(mapobj == null) { + while (mapobj == null) { if (registeredDrops.isEmpty()) { break; } @@ -1576,18 +1578,11 @@ public class MapleMap { public void destroyReactor(int oid) { final MapleReactor reactor = getReactorByOid(oid); - broadcastMessage(MaplePacketCreator.destroyReactor(reactor)); - reactor.cancelReactorTimeout(); - reactor.setAlive(false); - removeMapObject(reactor); - if (reactor.getDelay() > 0) { - registerMapSchedule(new Runnable() { - @Override - public void run() { - respawnReactor(reactor); - } - }, reactor.getDelay()); + if (reactor != null) { + if (reactor.destroy()) { + removeMapObject(reactor); + } } } @@ -1611,9 +1606,14 @@ public class MapleMap { public final void resetReactors(List list) { for (MapleReactor r : list) { + if (r.forceDelayedRespawn()) { // thanks Conrad for suggesting reactor with delay respawning immediately + continue; + } + r.lockReactor(); try { r.resetReactorActions(0); + r.setAlive(true); broadcastMessage(MaplePacketCreator.triggerReactor(r, 0)); } finally { r.unlockReactor(); @@ -1742,7 +1742,7 @@ public class MapleMap { public void destroyNPC(int npcid) { // assumption: there's at most one of the same NPC in a map. List npcs = getMapObjectsInRange(new Point(0, 0), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.NPC)); - + chrRLock.lock(); objectWLock.lock(); try { @@ -2106,19 +2106,6 @@ public class MapleMap { c.announce(reactor.makeSpawnData()); } }); - - } - - private void respawnReactor(final MapleReactor reactor) { - reactor.lockReactor(); - try { - reactor.resetReactorActions(0); - reactor.setAlive(true); - } finally { - reactor.unlockReactor(); - } - - spawnReactor(reactor); } public void spawnDoor(final MapleDoorObject door) { @@ -2587,6 +2574,7 @@ public class MapleMap { break; } } + chr.commitExcludedItems(); // thanks OishiiKawaiiDesu for noticing pet item ignore registry erasing upon changing maps if (chr.getMonsterCarnival() != null) { chr.getClient().announce(MaplePacketCreator.getClock(chr.getMonsterCarnival().getTimeLeftSeconds())); @@ -3555,6 +3543,7 @@ public class MapleMap { reactor.lockReactor(); try { reactor.resetReactorActions(0); + reactor.setAlive(true); broadcastMessage(MaplePacketCreator.triggerReactor(reactor, 0)); } finally { reactor.unlockReactor(); diff --git a/src/server/maps/MapleMapFactory.java b/src/server/maps/MapleMapFactory.java index 761cda3931..036bd77578 100644 --- a/src/server/maps/MapleMapFactory.java +++ b/src/server/maps/MapleMapFactory.java @@ -278,10 +278,10 @@ public class MapleMapFactory { MapleData mcData = mapData.getChildByPath("monsterCarnival"); if (mcData != null) { map.setDeathCP(MapleDataTool.getIntConvert("deathCP", mcData, 0)); - map.setMaxMobs(MapleDataTool.getIntConvert("mobGenMax", mcData, 0)); + map.setMaxMobs(MapleDataTool.getIntConvert("mobGenMax", mcData, Integer.MAX_VALUE)); // thanks Atoot for noticing CPQ1 bf. 3 & 4 not accepting spawns due to undefined limits map.setTimeDefault(MapleDataTool.getIntConvert("timeDefault", mcData, 0)); map.setTimeExpand(MapleDataTool.getIntConvert("timeExpand", mcData, 0)); - map.setMaxReactors(MapleDataTool.getIntConvert("guardianGenMax", mcData, 0)); + map.setMaxReactors(MapleDataTool.getIntConvert("guardianGenMax", mcData, Integer.MAX_VALUE)); MapleData guardianGenData = mcData.getChildByPath("guardianGenPos"); for (MapleData node : guardianGenData.getChildren()) { GuardianSpawnPoint pt = new GuardianSpawnPoint(new Point(MapleDataTool.getIntConvert("x", node), MapleDataTool.getIntConvert("y", node))); diff --git a/src/server/maps/MapleReactor.java b/src/server/maps/MapleReactor.java index 38f2128d7e..68ef3c9e05 100644 --- a/src/server/maps/MapleReactor.java +++ b/src/server/maps/MapleReactor.java @@ -57,6 +57,7 @@ public class MapleReactor extends AbstractMapleMapObject { private boolean shouldCollect; private boolean attackHit; private ScheduledFuture timeoutTask = null; + private Runnable delayedRespawnRun = null; private GuardianSpawnPoint guardian = null; private byte facingDirection = 0; private Lock reactorLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.REACTOR, true); @@ -165,7 +166,9 @@ public class MapleReactor extends AbstractMapleMapObject { @Override public void sendSpawnData(MapleClient client) { - client.announce(makeSpawnData()); + if (this.isAlive()) { + client.announce(makeSpawnData()); + } } public final byte[] makeSpawnData() { @@ -318,6 +321,71 @@ public class MapleReactor extends AbstractMapleMapObject { e.printStackTrace(); } } + + public boolean destroy() { + if (reactorLock.tryLock()) { + try { + boolean alive = this.isAlive(); + if (alive) { + this.setAlive(false); + this.cancelReactorTimeout(); + + if (this.getDelay() > 0) { + this.delayedRespawn(); + } + } else if (this.inDelayedRespawn()) { + return false; + } else { + return true; // reactor neither alive nor in delayed respawn, remove map object allowed + } + } finally { + reactorLock.unlock(); + } + } + + map.broadcastMessage(MaplePacketCreator.destroyReactor(this)); + return false; + } + + private void respawn() { + this.lockReactor(); + try { + this.resetReactorActions(0); + this.setAlive(true); + } finally { + this.unlockReactor(); + } + + map.broadcastMessage(this.makeSpawnData()); + } + + public void delayedRespawn() { + Runnable r = new Runnable() { + @Override + public void run() { + delayedRespawnRun = null; + respawn(); + } + }; + + delayedRespawnRun = r; + map.getChannelServer().registerOverallAction(map.getId(), r, this.getDelay()); + } + + public boolean forceDelayedRespawn() { + Runnable r = delayedRespawnRun; + + if (r != null) { + map.getChannelServer().forceRunOverallAction(map.getId(), r); + return true; + } else { + return false; + } + } + + public boolean inDelayedRespawn() { + return delayedRespawnRun != null; + } public Rectangle getArea() { return new Rectangle(getPosition().x + stats.getTL().x, getPosition().y + stats.getTL().y, stats.getBR().x - stats.getTL().x, stats.getBR().y - stats.getTL().y); diff --git a/src/server/partyquest/MonsterCarnival.java b/src/server/partyquest/MonsterCarnival.java index 19ecefd217..76630bb3dc 100644 --- a/src/server/partyquest/MonsterCarnival.java +++ b/src/server/partyquest/MonsterCarnival.java @@ -94,7 +94,7 @@ public class MonsterCarnival { public void run() { timeUp(); } - }, (map.getTimeDefault() - 10) * 1000); + }, map.getTimeDefault() * 1000); // thanks Atoot for noticing an irregular "event extended" issue here effectTimer = TimerManager.getInstance().schedule(new Runnable() { @Override public void run() { diff --git a/src/tools/MaplePacketCreator.java b/src/tools/MaplePacketCreator.java index fb9eb0231b..a2f6c124fd 100644 --- a/src/tools/MaplePacketCreator.java +++ b/src/tools/MaplePacketCreator.java @@ -337,7 +337,7 @@ public class MaplePacketCreator { if (!viewall) { mplew.write(0); } - if (chr.isGM()) { + if (chr.isGM() || chr.isGmJob()) { // thanks Egg Daddy (Ubaware), resinate for noticing GM jobs crashing on non-GM players account mplew.write(0); return; } @@ -1811,6 +1811,11 @@ public class MaplePacketCreator { } public static byte[] dropItemFromMapObject(MapleCharacter player, MapleMapItem drop, Point dropfrom, Point dropto, byte mod) { + int dropType = drop.getDropType(); + if (drop.hasClientsideOwnership(player) && dropType < 3) { + dropType = 2; + } + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.DROP_ITEM_FROM_MAPOBJECT.getValue()); mplew.write(mod); @@ -1818,7 +1823,7 @@ public class MaplePacketCreator { mplew.writeBool(drop.getMeso() > 0); // 1 mesos, 0 item, 2 and above all item meso bag, mplew.writeInt(drop.getItemId()); // drop object ID mplew.writeInt(drop.getClientsideOwnerId()); // owner charid/partyid :) - mplew.write(drop.hasClientsideOwnership(player) ? 2 : drop.getDropType()); // 0 = timeout for non-owner, 1 = timeout for non-owner's party, 2 = FFA, 3 = explosive/FFA + mplew.write(dropType); // 0 = timeout for non-owner, 1 = timeout for non-owner's party, 2 = FFA, 3 = explosive/FFA mplew.writePos(dropto); mplew.writeInt(drop.getDropper().getObjectId()); // dropper oid, found thanks to Li Jixue diff --git a/wz/Character.wz/Longcoat/01050018.img.xml b/wz/Character.wz/Longcoat/01050018.img.xml index 3edf4f7ef0..41f9468146 100644 --- a/wz/Character.wz/Longcoat/01050018.img.xml +++ b/wz/Character.wz/Longcoat/01050018.img.xml @@ -20,7 +20,6 @@ - @@ -115,6 +114,7 @@ + diff --git a/wz/Character.wz/Longcoat/01050100.img.xml b/wz/Character.wz/Longcoat/01050100.img.xml index 27bac3d905..e6aed8455d 100644 --- a/wz/Character.wz/Longcoat/01050100.img.xml +++ b/wz/Character.wz/Longcoat/01050100.img.xml @@ -16,7 +16,6 @@ - @@ -115,6 +114,7 @@ + diff --git a/wz/Character.wz/Longcoat/01050127.img.xml b/wz/Character.wz/Longcoat/01050127.img.xml index 849fcfbe09..54650795ee 100644 --- a/wz/Character.wz/Longcoat/01050127.img.xml +++ b/wz/Character.wz/Longcoat/01050127.img.xml @@ -16,7 +16,6 @@ - @@ -116,6 +115,7 @@ + diff --git a/wz/Character.wz/Longcoat/01051017.img.xml b/wz/Character.wz/Longcoat/01051017.img.xml index d5cfcf06fb..9304c640ca 100644 --- a/wz/Character.wz/Longcoat/01051017.img.xml +++ b/wz/Character.wz/Longcoat/01051017.img.xml @@ -20,7 +20,6 @@ - @@ -115,6 +114,7 @@ + diff --git a/wz/Character.wz/Longcoat/01051098.img.xml b/wz/Character.wz/Longcoat/01051098.img.xml index 7260350896..fa0c2cdfee 100644 --- a/wz/Character.wz/Longcoat/01051098.img.xml +++ b/wz/Character.wz/Longcoat/01051098.img.xml @@ -16,7 +16,6 @@ - @@ -115,6 +114,7 @@ + diff --git a/wz/Character.wz/Longcoat/01051140.img.xml b/wz/Character.wz/Longcoat/01051140.img.xml index d3c52a7054..c5c97730e3 100644 --- a/wz/Character.wz/Longcoat/01051140.img.xml +++ b/wz/Character.wz/Longcoat/01051140.img.xml @@ -16,7 +16,6 @@ - @@ -116,6 +115,7 @@ + From 153f5de4fa760d0ad72aca4129f027dd9547c451 Mon Sep 17 00:00:00 2001 From: Ubaware Date: Wed, 31 Jul 2019 16:22:48 -0700 Subject: [PATCH 12/37] Added cash shop name changes and world transfers. (#495) * Name changes * World transfers. Fix NPE. Applied Arnuh's suggestions. More logging. --- docs/leftover.txt | 2 - sql/db_database.sql | 22 ++ src/client/MapleCharacter.java | 374 ++++++++++++++++++ src/client/MapleClient.java | 20 +- src/constants/ServerConstants.java | 5 + src/net/server/Server.java | 80 +++- .../handlers/CashOperationHandler.java | 64 ++- .../channel/handlers/TransferNameHandler.java | 45 ++- .../handlers/TransferNameResultHandler.java | 2 +- .../handlers/TransferWorldHandler.java | 42 +- .../channel/handlers/UseCashItemHandler.java | 18 + .../handlers/login/LoginPasswordHandler.java | 2 +- src/tools/FilePrinter.java | 2 + src/tools/MaplePacketCreator.java | 75 +++- 14 files changed, 733 insertions(+), 20 deletions(-) diff --git a/docs/leftover.txt b/docs/leftover.txt index 38d0fbcee6..b005a6c3c4 100644 --- a/docs/leftover.txt +++ b/docs/leftover.txt @@ -2,8 +2,6 @@ Uncoded features: NX Format -Name Change -World transfer MTS (v53) Family system (v67) Family and Medal Quests(?) diff --git a/sql/db_database.sql b/sql/db_database.sql index 3f106d8c6c..3e84c0ac4b 100644 --- a/sql/db_database.sql +++ b/sql/db_database.sql @@ -16342,6 +16342,17 @@ CREATE TABLE IF NOT EXISTS `mts_items` ( PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; +CREATE TABLE IF NOT EXISTS `namechanges` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `characterid` int(11) NOT NULL, + `old` varchar(13) NOT NULL, + `new` varchar(13) NOT NULL, + `requestTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `completionTime` timestamp, + PRIMARY KEY (`id`), + INDEX (characterid) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + CREATE TABLE IF NOT EXISTS `newyear` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `senderid` int(10) NOT NULL DEFAULT '-1', @@ -21418,6 +21429,17 @@ CREATE TABLE IF NOT EXISTS `wishlists` ( PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; +CREATE TABLE IF NOT EXISTS `worldtransfers` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `characterid` int(11) NOT NULL, + `from` tinyint(3) NOT NULL, + `to` tinyint(3) NOT NULL, + `requestTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `completionTime` timestamp, + PRIMARY KEY (`id`), + INDEX (characterid) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + ALTER TABLE `dueyitems` ADD CONSTRAINT `dueyitems_ibfk_1` FOREIGN KEY (`PackageId`) REFERENCES `dueypackages` (`PackageId`) ON DELETE CASCADE; diff --git a/src/client/MapleCharacter.java b/src/client/MapleCharacter.java index ba413682f8..1ee1049b7e 100644 --- a/src/client/MapleCharacter.java +++ b/src/client/MapleCharacter.java @@ -328,6 +328,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { private int banishSp = -1; private long banishTime = 0; private long lastExpGainTime; + private boolean pendingNameChange; //only used to change name on logout, not to be relied upon elsewhere private MapleCharacter() { super.setListener(new AbstractCharacterListener() { @@ -10364,6 +10365,379 @@ public class MapleCharacter extends AbstractMapleCharacterObject { jailExpiration = 0; } + public boolean registerNameChange(String newName) { + try (Connection con = DatabaseConnection.getConnection()) { + //check for pending name change + long currentTimeMillis = System.currentTimeMillis(); + try (PreparedStatement ps = con.prepareStatement("SELECT completionTime FROM namechanges WHERE characterid=?")) { //double check, just in case + ps.setInt(1, getId()); + ResultSet rs = ps.executeQuery(); + while(rs.next()) { + Timestamp completedTimestamp = rs.getTimestamp("completionTime"); + if(completedTimestamp == null) return false; //pending + else if(completedTimestamp.getTime() + ServerConstants.NAME_CHANGE_COOLDOWN > currentTimeMillis) return false; + } + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.CHANGE_CHARACTER_NAME, e, "Failed to register name change for character " + getName() + "."); + return false; + } + try (PreparedStatement ps = con.prepareStatement("INSERT INTO namechanges (characterid, old, new) VALUES (?, ?, ?)")){ + ps.setInt(1, getId()); + ps.setString(2, getName()); + ps.setString(3, newName); + ps.executeUpdate(); + this.pendingNameChange = true; + return true; + } catch (SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.CHANGE_CHARACTER_NAME, e, "Failed to register name change for character " + getName() + "."); + } + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.CHANGE_CHARACTER_NAME, e, "Failed to get DB connection."); + } + return false; + } + + public boolean cancelPendingNameChange() { + try (Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("DELETE FROM namechanges WHERE characterid=? AND completionTime IS NULL")) { + ps.setInt(1, getId()); + int affectedRows = ps.executeUpdate(); + if(affectedRows > 0) pendingNameChange = false; + return affectedRows > 0; //rows affected + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.CHANGE_CHARACTER_NAME, e, "Failed to cancel name change for character " + getName() + "."); + return false; + } + } + + public void doPendingNameChange() { //called on logout + if(!pendingNameChange) return; + try (Connection con = DatabaseConnection.getConnection()) { + int nameChangeId = -1; + String newName = null; + try (PreparedStatement ps = con.prepareStatement("SELECT * FROM namechanges WHERE characterid = ? AND completionTime IS NULL")) { + ps.setInt(1, getId()); + ResultSet rs = ps.executeQuery(); + if(!rs.next()) return; + nameChangeId = rs.getInt("id"); + newName = rs.getString("new"); + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.CHANGE_CHARACTER_NAME, e, "Failed to retrieve pending name changes for character " + getName() + "."); + } + con.setAutoCommit(false); + boolean success = doNameChange(con, getId(), getName(), newName, nameChangeId); + if(!success) con.rollback(); + else FilePrinter.print(FilePrinter.CHANGE_CHARACTER_NAME, "Name change applied : from \"" + getName() + "\" to \"" + newName + "\" at " + Calendar.getInstance().getTime().toString()); + con.setAutoCommit(true); + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.CHANGE_CHARACTER_NAME, e, "Failed to get DB connection."); + } + } + + public static void doNameChange(int characterId, String oldName, String newName, int nameChangeId) { //Don't do this while player is online + try (Connection con = DatabaseConnection.getConnection()) { + con.setAutoCommit(false); + boolean success = doNameChange(con, characterId, oldName, newName, nameChangeId); + if(!success) con.rollback(); + con.setAutoCommit(true); + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.CHANGE_CHARACTER_NAME, e, "Failed to get DB connection."); + } + } + + public static boolean doNameChange(Connection con, int characterId, String oldName, String newName, int nameChangeId) { + try (PreparedStatement ps = con.prepareStatement("UPDATE characters SET name = ? WHERE id = ?")) { + ps.setString(1, newName); + ps.setInt(2, characterId); + ps.executeUpdate(); + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.CHANGE_CHARACTER_NAME, e, "Character ID : " + characterId); + return false; + } + try (PreparedStatement ps = con.prepareStatement("UPDATE rings SET partnername = ? WHERE partnername = ?")) { + ps.setString(1, newName); + ps.setString(2, oldName); + ps.executeUpdate(); + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.CHANGE_CHARACTER_NAME, e, "Character ID : " + characterId); + return false; + } + /*try (PreparedStatement ps = con.prepareStatement("UPDATE playernpcs SET name = ? WHERE name = ?")) { + ps.setString(1, newName); + ps.setString(2, oldName); + ps.executeUpdate(); + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.CHANGE_CHARACTER_NAME, e, "Character ID : " + characterId); + return false; + } + try (PreparedStatement ps = con.prepareStatement("UPDATE gifts SET `from` = ? WHERE `from` = ?")) { + ps.setString(1, newName); + ps.setString(2, oldName); + ps.executeUpdate(); + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.CHANGE_CHARACTER_NAME, e, "Character ID : " + characterId); + return false; + } + try (PreparedStatement ps = con.prepareStatement("UPDATE dueypackages SET SenderName = ? WHERE SenderName = ?")) { + ps.setString(1, newName); + ps.setString(2, oldName); + ps.executeUpdate(); + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.CHANGE_CHARACTER_NAME, e, "Character ID : " + characterId); + return false; + } + try (PreparedStatement ps = con.prepareStatement("UPDATE dueypackages SET SenderName = ? WHERE SenderName = ?")) { + ps.setString(1, newName); + ps.setString(2, oldName); + ps.executeUpdate(); + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.CHANGE_CHARACTER_NAME, e, "Character ID : " + characterId); + return false; + } + try (PreparedStatement ps = con.prepareStatement("UPDATE inventoryitems SET owner = ? WHERE owner = ?")) { //GMS doesn't do this + ps.setString(1, newName); + ps.setString(2, oldName); + ps.executeUpdate(); + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.CHANGE_CHARACTER_NAME, e, "Character ID : " + characterId); + return false; + } + try (PreparedStatement ps = con.prepareStatement("UPDATE mts_items SET owner = ? WHERE owner = ?")) { //GMS doesn't do this + ps.setString(1, newName); + ps.setString(2, oldName); + ps.executeUpdate(); + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.CHANGE_CHARACTER_NAME, e, "Character ID : " + characterId); + return false; + } + try (PreparedStatement ps = con.prepareStatement("UPDATE newyear SET sendername = ? WHERE sendername = ?")) { + ps.setString(1, newName); + ps.setString(2, oldName); + ps.executeUpdate(); + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.CHANGE_CHARACTER_NAME, e, "Character ID : " + characterId); + return false; + } + try (PreparedStatement ps = con.prepareStatement("UPDATE newyear SET receivername = ? WHERE receivername = ?")) { + ps.setString(1, newName); + ps.setString(2, oldName); + ps.executeUpdate(); + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.CHANGE_CHARACTER_NAME, e, "Character ID : " + characterId); + return false; + } + try (PreparedStatement ps = con.prepareStatement("UPDATE notes SET `to` = ? WHERE `to` = ?")) { + ps.setString(1, newName); + ps.setString(2, oldName); + ps.executeUpdate(); + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.CHANGE_CHARACTER_NAME, e, "Character ID : " + characterId); + return false; + } + try (PreparedStatement ps = con.prepareStatement("UPDATE notes SET `from` = ? WHERE `from` = ?")) { + ps.setString(1, newName); + ps.setString(2, oldName); + ps.executeUpdate(); + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.CHANGE_CHARACTER_NAME, e, "Character ID : " + characterId); + return false; + } + try (PreparedStatement ps = con.prepareStatement("UPDATE nxcode SET retriever = ? WHERE retriever = ?")) { + ps.setString(1, newName); + ps.setString(2, oldName); + ps.executeUpdate(); + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.CHANGE_CHARACTER_NAME, e, "Character ID : " + characterId); + return false; + }*/ + if(nameChangeId != -1) { + try (PreparedStatement ps = con.prepareStatement("UPDATE namechanges SET completionTime = ? WHERE id = ?")) { + ps.setTimestamp(1, new Timestamp(System.currentTimeMillis())); + ps.setInt(2, nameChangeId); + ps.executeUpdate(); + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.CHANGE_CHARACTER_NAME, e, "Character ID : " + characterId); + return false; + } + } + return true; + } + + public int checkWorldTransferEligibility() { + if(getLevel() < 20) { + return 2; + } else if(getClient().getTempBanCalendar() != null && getClient().getTempBanCalendar().getTimeInMillis() + (30*24*60*60*1000) < Calendar.getInstance().getTimeInMillis()) { + return 3; + } else if(isMarried()) { + return 4; + } else if(getGuildRank() < 2) { + return 5; + } else if(getFamily() != null) { + return 8; + } else { + return 0; + } + } + + public static String checkWorldTransferEligibility(Connection con, int characterId, int oldWorld, int newWorld) { + if(!ServerConstants.ALLOW_CASHSHOP_WORLD_TRANSFER) return "World transfers disabled."; + int accountId = -1; + try (PreparedStatement ps = con.prepareStatement("SELECT accountid, level, guildid, guildrank, partnerId, familyId FROM characters WHERE id = ?")) { + ps.setInt(1, characterId); + ResultSet rs = ps.executeQuery(); + if(!rs.next()) return "Character does not exist."; + accountId = rs.getInt("accountid"); + if(rs.getInt("level") < 20) return "Character is under level 20."; + if(rs.getInt("familyId") != -1) return "Character is in family."; + if(rs.getInt("partnerId") != 0) return "Character is married."; + if(rs.getInt("guildid") != 0 && rs.getInt("guildrank") < 2) return "Character is the leader of a guild."; + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.CHANGE_CHARACTER_NAME, e); + return "SQL Error"; + } + try (PreparedStatement ps = con.prepareStatement("SELECT tempban FROM accounts WHERE id = ?")) { + ps.setInt(1, accountId); + ResultSet rs = ps.executeQuery(); + if(!rs.next()) return "Account does not exist."; + if(rs.getLong("tempban") != 0 && !rs.getString("tempban").equals("2018-06-20 00:00:00.0")) return "Account has been banned."; + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.CHANGE_CHARACTER_NAME, e); + return "SQL Error"; + } + try (PreparedStatement ps = con.prepareStatement("SELECT COUNT(*) AS rowcount FROM characters WHERE accountid = ? AND world = ?")) { + ps.setInt(1, accountId); + ps.setInt(2, newWorld); + ResultSet rs = ps.executeQuery(); + if(!rs.next()) return "SQL Error"; + if(rs.getInt("rowcount") >= 3) return "Too many characters on destination world."; + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.CHANGE_CHARACTER_NAME, e); + return "SQL Error"; + } + return null; + } + + public boolean registerWorldTransfer(int newWorld) { + try (Connection con = DatabaseConnection.getConnection()) { + //check for pending world transfer + long currentTimeMillis = System.currentTimeMillis(); + try (PreparedStatement ps = con.prepareStatement("SELECT completionTime FROM worldtransfers WHERE characterid=?")) { //double check, just in case + ps.setInt(1, getId()); + ResultSet rs = ps.executeQuery(); + while(rs.next()) { + Timestamp completedTimestamp = rs.getTimestamp("completionTime"); + if(completedTimestamp == null) return false; //pending + else if(completedTimestamp.getTime() + ServerConstants.WORLD_TRANSFER_COOLDOWN > currentTimeMillis) return false; + } + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.WORLD_TRANSFER, e, "Failed to register world transfer for character " + getName() + "."); + return false; + } + try (PreparedStatement ps = con.prepareStatement("INSERT INTO worldtransfers (characterid, `from`, `to`) VALUES (?, ?, ?)")){ + ps.setInt(1, getId()); + ps.setInt(2, getWorld()); + ps.setInt(3, newWorld); + ps.executeUpdate(); + return true; + } catch (SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.WORLD_TRANSFER, e, "Failed to register world transfer for character " + getName() + "."); + } + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.WORLD_TRANSFER, e, "Failed to get DB connection."); + } + return false; + } + + public boolean cancelPendingWorldTranfer() { + try (Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("DELETE FROM worldtransfers WHERE characterid=? AND completionTime IS NULL")) { + ps.setInt(1, getId()); + int affectedRows = ps.executeUpdate(); + return affectedRows > 0; //rows affected + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.WORLD_TRANSFER, e, "Failed to cancel pending world transfer for character " + getName() + "."); + return false; + } + } + + public static boolean doWorldTransfer(Connection con, int characterId, int oldWorld, int newWorld, int worldTransferId) { + int mesos = 0; + try (PreparedStatement ps = con.prepareStatement("SELECT meso FROM characters WHERE id = ?")) { + ps.setInt(1, characterId); + ResultSet rs = ps.executeQuery(); + if(!rs.next()) { + FilePrinter.printError(FilePrinter.WORLD_TRANSFER, "Character data invalid? (charid " + characterId + ")"); + return false; + } + mesos = rs.getInt("meso"); + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.WORLD_TRANSFER, e, "Character ID : " + characterId); + return false; + } + try (PreparedStatement ps = con.prepareStatement("UPDATE characters SET world = ?, meso = ?, guildid = ?, guildrank = ? WHERE id = ?")) { + ps.setInt(1, newWorld); + ps.setInt(2, Math.min(mesos, 1000000)); //might want a limit in ServerConstants for this + ps.setInt(3, 0); + ps.setInt(4, 5); + ps.setInt(5, characterId); + ps.executeUpdate(); + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.WORLD_TRANSFER, e, "Character ID : " + characterId); + return false; + } + try (PreparedStatement ps = con.prepareStatement("DELETE FROM buddies WHERE characterid = ? OR buddyid = ?")) { + ps.setInt(1, characterId); + ps.setInt(2, characterId); + ps.executeUpdate(); + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.WORLD_TRANSFER, e, "Character ID : " + characterId); + return false; + } + if(worldTransferId != -1) { + try (PreparedStatement ps = con.prepareStatement("UPDATE worldtransfers SET completionTime = ? WHERE id = ?")) { + ps.setTimestamp(1, new Timestamp(System.currentTimeMillis())); + ps.setInt(2, worldTransferId); + ps.executeUpdate(); + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.WORLD_TRANSFER, e, "Character ID : " + characterId); + return false; + } + } + return true; + } + public String getLastCommandMessage() { return this.commandtext; } diff --git a/src/client/MapleClient.java b/src/client/MapleClient.java index 149e8b88bf..70b4e8da4a 100644 --- a/src/client/MapleClient.java +++ b/src/client/MapleClient.java @@ -121,6 +121,7 @@ public class MapleClient { private final Lock lock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CLIENT, true); private final Lock encoderLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CLIENT_ENCODER, true); private static final Lock loginLocks[] = new Lock[200]; // thanks Masterrulax & try2hack for pointing out a bottleneck issue here + private Calendar tempBanCalendar; private int votePoints; private int voteTime = -1; private int visibleWorlds; @@ -640,7 +641,7 @@ public class MapleClient { } } - public Calendar getTempBanCalendar() { + public Calendar getTempBanCalendarFromDB() { Connection con = null; PreparedStatement ps = null; ResultSet rs = null; @@ -654,10 +655,12 @@ public class MapleClient { return null; } long blubb = rs.getLong("tempban"); - if (blubb == 0) { // basically if timestamp in db is 0000-00-00 + + if (blubb == 0 || rs.getString("tempban").equals("2018-06-20 00:00:00.0")) { // 0000-00-00 or 2018-06-20 (default set in LoginPasswordHandler) return null; } lTempban.setTimeInMillis(rs.getTimestamp("tempban").getTime()); + tempBanCalendar = lTempban; return lTempban; } catch (SQLException e) { e.printStackTrace(); @@ -678,6 +681,14 @@ public class MapleClient { } return null;//why oh why!?! } + + public Calendar getTempBanCalendar() { + return tempBanCalendar; + } + + public boolean hasBeenBanned() { + return tempBanCalendar != null; + } public static long dottedQuadToLong(String dottedQuad) throws RuntimeException { String[] quads = dottedQuad.split("\\."); @@ -1017,6 +1028,7 @@ public class MapleClient { player.saveCharToDB(true); player.logOff(); + if(ServerConstants.INSTANT_NAME_CHANGE) player.doPendingNameChange(); clear(); } else { getChannelServer().removePlayer(player); @@ -1329,6 +1341,10 @@ public class MapleClient { return (short) Math.max(0, characterSlots - Server.getInstance().getAccountWorldCharacterCount(accId, world)); } + public short getAvailableCharacterWorldSlots(int world) { + return (short) Math.max(0, characterSlots - Server.getInstance().getAccountWorldCharacterCount(accId, world)); + } + public short getCharacterSlots() { return characterSlots; } diff --git a/src/constants/ServerConstants.java b/src/constants/ServerConstants.java index 46339c645b..0ace201a7b 100644 --- a/src/constants/ServerConstants.java +++ b/src/constants/ServerConstants.java @@ -126,6 +126,8 @@ public class ServerConstants { //Cash Shop Configuration public static final boolean USE_JOINT_CASHSHOP_INVENTORY = true;//Enables usage of a same cash shop inventory for explorers, cygnus and legends. Items from exclusive cash shop inventories won't show up on the shared inventory, though. public static final boolean USE_CLEAR_OUTDATED_COUPONS = true; //Enables deletion of older code coupon registry from the DB, freeing so-long irrelevant data. + public static final boolean ALLOW_CASHSHOP_NAME_CHANGE = true; //Allows players to buy name changes in the cash shop. + public static final boolean ALLOW_CASHSHOP_WORLD_TRANSFER =true;//Allows players to buy world transfers in the cash shop. //Maker Configuration public static final boolean USE_MAKER_PERMISSIVE_ATKUP = true; //Allows players to use attack-based strengthening gems on non-weapon items. @@ -169,6 +171,9 @@ public class ServerConstants { public static final int TOT_MOB_QUEST_REQUIREMENT = 77; //Overwrites old 999-mobs requirement for the ToT questline with new requirement value, set 0 for default. public static final int MOB_REACTOR_REFRESH_TIME = 30 * 1000; //Overwrites refresh time for those reactors oriented to inflict damage to bosses (Ice Queen, Riche), set 0 for default. public static final int PARTY_SEARCH_REENTRY_LIMIT = 10; //Max amount of times a party leader is allowed to persist on the Party Search before entry expiration (thus needing to manually restart the Party Search to be able to search for members). + public static final int NAME_CHANGE_COOLDOWN = 30*24*60*60*1000; //Cooldown for name changes, default (GMS) is 30 days. + public static final int WORLD_TRANSFER_COOLDOWN=NAME_CHANGE_COOLDOWN;//Cooldown for world tranfers, default is same as name change (30 days). + public static final boolean INSTANT_NAME_CHANGE = false; //Whether or not to wait for server restart to apply name changes. Does on reconnect otherwise (requires queries on every login). //Dangling Items/Locks Configuration public static final int ITEM_EXPIRE_TIME = 3 * 60 * 1000; //Time before items start disappearing. Recommended to be set up to 3 minutes. diff --git a/src/net/server/Server.java b/src/net/server/Server.java index 1caaf8e614..7892ce7d41 100644 --- a/src/net/server/Server.java +++ b/src/net/server/Server.java @@ -103,6 +103,7 @@ import server.life.MaplePlayerNPCFactory; import server.quest.MapleQuest; import tools.AutoJCE; import tools.DatabaseConnection; +import tools.FilePrinter; import tools.Pair; import org.apache.mina.core.session.IoSession; @@ -881,7 +882,8 @@ public class Server { } catch (SQLException sqle) { sqle.printStackTrace(); } - + applyAllNameChanges(); //name changes can be missed by INSTANT_NAME_CHANGE + applyAllWorldTransfers(); MaplePet.clearMissingPetsFromDb(); MapleCashidGenerator.loadExistentCashIdsFromDb(); @@ -1554,6 +1556,82 @@ public class Server { } } + private static void applyAllNameChanges() { + try (Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("SELECT * FROM namechanges WHERE completionTime IS NULL")) { + ResultSet rs = ps.executeQuery(); + List> changedNames = new LinkedList>(); //logging only + while(rs.next()) { + con.setAutoCommit(false); + int nameChangeId = rs.getInt("id"); + int characterId = rs.getInt("characterId"); + String oldName = rs.getString("old"); + String newName = rs.getString("new"); + boolean success = MapleCharacter.doNameChange(con, characterId, oldName, newName, nameChangeId); + if(!success) con.rollback(); //discard changes + else changedNames.add(new Pair(oldName, newName)); + con.setAutoCommit(true); + } + //log + for(Pair namePair : changedNames) { + FilePrinter.print(FilePrinter.CHANGE_CHARACTER_NAME, "Name change applied : from \"" + namePair.getLeft() + "\" to \"" + namePair.getRight() + "\" at " + Calendar.getInstance().getTime().toString()); + } + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.CHANGE_CHARACTER_NAME, e, "Failed to retrieve list of pending name changes."); + } + } + + private static void applyAllWorldTransfers() { + try (Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("SELECT * FROM worldtransfers WHERE completionTime IS NULL")) { + ResultSet rs = ps.executeQuery(); + List removedTransfers = new LinkedList(); + while(rs.next()) { + int nameChangeId = rs.getInt("id"); + int characterId = rs.getInt("characterId"); + int oldWorld = rs.getInt("from"); + int newWorld = rs.getInt("to"); + String reason = MapleCharacter.checkWorldTransferEligibility(con, characterId, oldWorld, newWorld); //check if character is still eligible + if(reason != null) { + removedTransfers.add(nameChangeId); + FilePrinter.print(FilePrinter.WORLD_TRANSFER, "World transfer cancelled : Character ID " + characterId + " at " + Calendar.getInstance().getTime().toString() + ", Reason : " + reason); + try (PreparedStatement delPs = con.prepareStatement("DELETE FROM worldtransfers WHERE id = ?")) { + delPs.setInt(1, nameChangeId); + delPs.executeUpdate(); + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.WORLD_TRANSFER, e, "Failed to delete world transfer for character ID " + characterId); + } + } + } + rs.beforeFirst(); + List>> worldTransfers = new LinkedList>>(); //logging only > + while(rs.next()) { + con.setAutoCommit(false); + int nameChangeId = rs.getInt("id"); + if(removedTransfers.contains(nameChangeId)) continue; + int characterId = rs.getInt("characterId"); + int oldWorld = rs.getInt("from"); + int newWorld = rs.getInt("to"); + boolean success = MapleCharacter.doWorldTransfer(con, characterId, oldWorld, newWorld, nameChangeId); + if(!success) con.rollback(); + else worldTransfers.add(new Pair>(characterId, new Pair(oldWorld, newWorld))); + con.setAutoCommit(true); + } + //log + for(Pair> worldTransferPair : worldTransfers) { + int charId = worldTransferPair.getLeft(); + int oldWorld = worldTransferPair.getRight().getLeft(); + int newWorld = worldTransferPair.getRight().getRight(); + FilePrinter.print(FilePrinter.WORLD_TRANSFER, "World transfer applied : Character ID " + charId + " from World " + oldWorld + " to World " + newWorld + " at " + Calendar.getInstance().getTime().toString()); + } + } catch(SQLException e) { + e.printStackTrace(); + FilePrinter.printError(FilePrinter.WORLD_TRANSFER, e, "Failed to retrieve list of pending world transfers."); + } + } + public void loadAccountCharacters(MapleClient c) { Integer accId = c.getAccID(); if (!isFirstAccountLogin(accId)) { diff --git a/src/net/server/channel/handlers/CashOperationHandler.java b/src/net/server/channel/handlers/CashOperationHandler.java index 9ebb36ccb6..f1b51fadf8 100644 --- a/src/net/server/channel/handlers/CashOperationHandler.java +++ b/src/net/server/channel/handlers/CashOperationHandler.java @@ -34,6 +34,7 @@ import java.util.Calendar; import java.util.List; import java.util.Map; import net.AbstractMaplePacketHandler; +import net.server.Server; import server.CashShop; import server.CashShop.CashItem; import server.CashShop.CashItemFactory; @@ -343,7 +344,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { slea.readByte(); MapleCharacter partner = c.getChannelServer().getPlayerStorage().getCharacterByName(sentTo); if (partner == null) { - chr.dropMessage(5, "The partner you specified cannot be found. Please make sure your partner is online and in the same channel."); + c.announce(MaplePacketCreator.showCashShopMessage((byte)0xBE)); } else { // Need to check to make sure its actually an equip and the right SN... if(itemRing.toItem() instanceof Equip) { @@ -351,7 +352,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { Pair rings = MapleRing.createRing(itemRing.getItemId(), chr, partner); eqp.setRingId(rings.getLeft()); cs.addToInventory(eqp); - c.announce(MaplePacketCreator.showBoughtCashItem(eqp, c.getAccID())); + c.announce(MaplePacketCreator.showBoughtCashRing(eqp, partner.getName(), c.getAccID())); cs.gift(partner.getId(), chr.getName(), text, eqp.getSN(), rings.getRight()); cs.gainCash(payment, -itemRing.getPrice()); chr.addFriendshipRing(MapleRing.loadFromDb(rings.getLeft())); @@ -368,6 +369,65 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { } c.announce(MaplePacketCreator.showCash(c.getPlayer())); + } else if (action == 0x2E) { //name change + CashItem cItem = CashItemFactory.getItem(slea.readInt()); + if (cItem == null || !canBuy(chr, cItem, cs.getCash(4))) { + c.announce(MaplePacketCreator.showCashShopMessage((byte)0)); + c.enableCSActions(); + return; + } + if(cItem.getSN() == 50600000 && ServerConstants.ALLOW_CASHSHOP_NAME_CHANGE) { + slea.readMapleAsciiString(); //old name + String newName = slea.readMapleAsciiString(); + if(!MapleCharacter.canCreateChar(newName) || chr.getLevel() < 10) { //(longest ban duration isn't tracked currently) + c.announce(MaplePacketCreator.showCashShopMessage((byte)0)); + c.enableCSActions(); + return; + } else if(c.getTempBanCalendar() != null && c.getTempBanCalendar().getTimeInMillis() + (30*24*60*60*1000) > Calendar.getInstance().getTimeInMillis()) { + c.announce(MaplePacketCreator.showCashShopMessage((byte)0)); + c.enableCSActions(); + return; + } + if(chr.registerNameChange(newName)) { //success + Item item = cItem.toItem(); + c.announce(MaplePacketCreator.showNameChangeSuccess(item, c.getAccID())); + cs.addToInventory(item); + cs.gainCash(4, cItem, chr.getWorld()); + } else { + c.announce(MaplePacketCreator.showCashShopMessage((byte)0)); + } + } + c.enableCSActions(); + } else if(action == 0x31) { //world transfer + CashItem cItem = CashItemFactory.getItem(slea.readInt()); + if (cItem == null || !canBuy(chr, cItem, cs.getCash(4))) { + c.announce(MaplePacketCreator.showCashShopMessage((byte)0)); + c.enableCSActions(); + return; + } + if(cItem.getSN() == 50600001 && ServerConstants.ALLOW_CASHSHOP_WORLD_TRANSFER) { + int newWorldSelection = slea.readInt(); + + int worldTransferError = chr.checkWorldTransferEligibility(); + if(worldTransferError != 0 || newWorldSelection >= Server.getInstance().getWorldsSize() || Server.getInstance().getWorldsSize() <= 1) { + c.announce(MaplePacketCreator.showCashShopMessage((byte)0)); + return; + } else if(newWorldSelection == c.getWorld()) { + c.announce(MaplePacketCreator.showCashShopMessage((byte)0xDC)); + return; + } else if(c.getAvailableCharacterWorldSlots(newWorldSelection) < 1 || Server.getInstance().getAccountWorldCharacterCount(c.getAccID(), newWorldSelection) >= 3) { + c.announce(MaplePacketCreator.showCashShopMessage((byte)0xDF)); + return; + } else if(chr.registerWorldTransfer(newWorldSelection)) { + Item item = cItem.toItem(); + c.announce(MaplePacketCreator.showWorldTransferSuccess(item, c.getAccID())); + cs.addToInventory(item); + cs.gainCash(4, cItem, chr.getWorld()); + } else { + c.announce(MaplePacketCreator.showCashShopMessage((byte)0)); + } + } + c.enableCSActions(); } else { System.out.println("Unhandled action: " + action + "\n" + slea); } diff --git a/src/net/server/channel/handlers/TransferNameHandler.java b/src/net/server/channel/handlers/TransferNameHandler.java index 373c101cea..426a37a5ba 100644 --- a/src/net/server/channel/handlers/TransferNameHandler.java +++ b/src/net/server/channel/handlers/TransferNameHandler.java @@ -20,14 +20,25 @@ package net.server.channel.handlers; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Timestamp; +import java.util.Calendar; +import java.sql.Connection; + +import client.MapleCharacter; import client.MapleClient; +import constants.ServerConstants; import net.AbstractMaplePacketHandler; +import tools.DatabaseConnection; import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; /** * * @author Ronan + * @author Ubaware */ public final class TransferNameHandler extends AbstractMaplePacketHandler { @@ -40,7 +51,37 @@ public final class TransferNameHandler extends AbstractMaplePacketHandler { c.announce(MaplePacketCreator.enableActions()); return; } - - c.announce(MaplePacketCreator.sendNameTransferRules(4)); + if(!ServerConstants.ALLOW_CASHSHOP_NAME_CHANGE) { + c.announce(MaplePacketCreator.sendNameTransferRules(4)); + return; + } + MapleCharacter chr = c.getPlayer(); + if(chr.getLevel() < 10) { + c.announce(MaplePacketCreator.sendNameTransferRules(4)); + return; + } else if(c.getTempBanCalendar() != null && c.getTempBanCalendar().getTimeInMillis() + (30*24*60*60*1000) < Calendar.getInstance().getTimeInMillis()) { + c.announce(MaplePacketCreator.sendNameTransferRules(2)); + return; + } + //sql queries + try (Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("SELECT completionTime FROM namechanges WHERE characterid=?")) { //double check, just in case + ps.setInt(1, chr.getId()); + ResultSet rs = ps.executeQuery(); + while(rs.next()) { + Timestamp completedTimestamp = rs.getTimestamp("completionTime"); + if(completedTimestamp == null) { //has pending name request + c.announce(MaplePacketCreator.sendNameTransferRules(1)); + return; + } else if(completedTimestamp.getTime() + ServerConstants.NAME_CHANGE_COOLDOWN > System.currentTimeMillis()) { + c.announce(MaplePacketCreator.sendNameTransferRules(3)); + return; + }; + } + } catch(SQLException e) { + e.printStackTrace(); + return; + } + c.announce(MaplePacketCreator.sendNameTransferRules(0)); } } \ No newline at end of file diff --git a/src/net/server/channel/handlers/TransferNameResultHandler.java b/src/net/server/channel/handlers/TransferNameResultHandler.java index b12999a384..6e75bbc1d2 100644 --- a/src/net/server/channel/handlers/TransferNameResultHandler.java +++ b/src/net/server/channel/handlers/TransferNameResultHandler.java @@ -35,6 +35,6 @@ public final class TransferNameResultHandler extends AbstractMaplePacketHandler @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { String name = slea.readMapleAsciiString(); - c.announce(MaplePacketCreator.sendNameTransferCheck(MapleCharacter.canCreateChar(name))); + c.announce(MaplePacketCreator.sendNameTransferCheck(name, MapleCharacter.canCreateChar(name))); } } \ No newline at end of file diff --git a/src/net/server/channel/handlers/TransferWorldHandler.java b/src/net/server/channel/handlers/TransferWorldHandler.java index 79657dfca1..d822c247bb 100644 --- a/src/net/server/channel/handlers/TransferWorldHandler.java +++ b/src/net/server/channel/handlers/TransferWorldHandler.java @@ -20,14 +20,25 @@ package net.server.channel.handlers; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Timestamp; + +import client.MapleCharacter; import client.MapleClient; +import constants.ServerConstants; import net.AbstractMaplePacketHandler; +import net.server.Server; +import tools.DatabaseConnection; import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; /** * * @author Ronan + * @author Ubaware */ public final class TransferWorldHandler extends AbstractMaplePacketHandler { @@ -40,7 +51,34 @@ public final class TransferWorldHandler extends AbstractMaplePacketHandler { c.announce(MaplePacketCreator.enableActions()); return; } - - c.announce(MaplePacketCreator.sendWorldTransferRules(9)); + MapleCharacter chr = c.getPlayer(); + if(!ServerConstants.ALLOW_CASHSHOP_WORLD_TRANSFER || Server.getInstance().getWorldsSize() <= 1) { + c.announce(MaplePacketCreator.sendWorldTransferRules(9, c)); + return; + } + int worldTransferError = chr.checkWorldTransferEligibility(); + if(worldTransferError != 0) { + c.announce(MaplePacketCreator.sendWorldTransferRules(worldTransferError, c)); + return; + } + try (Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("SELECT completionTime FROM worldtransfers WHERE characterid=?")) { + ps.setInt(1, chr.getId()); + ResultSet rs = ps.executeQuery(); + while(rs.next()) { + Timestamp completedTimestamp = rs.getTimestamp("completionTime"); + if(completedTimestamp == null) { //has pending world transfer + c.announce(MaplePacketCreator.sendWorldTransferRules(6, c)); + return; + } else if(completedTimestamp.getTime() + ServerConstants.WORLD_TRANSFER_COOLDOWN > System.currentTimeMillis()) { + c.announce(MaplePacketCreator.sendWorldTransferRules(7, c)); + return; + }; + } + } catch(SQLException e) { + e.printStackTrace(); + return; + } + c.announce(MaplePacketCreator.sendWorldTransferRules(0, c)); } } \ No newline at end of file diff --git a/src/net/server/channel/handlers/UseCashItemHandler.java b/src/net/server/channel/handlers/UseCashItemHandler.java index 31b75fee32..978ce9c288 100644 --- a/src/net/server/channel/handlers/UseCashItemHandler.java +++ b/src/net/server/channel/handlers/UseCashItemHandler.java @@ -423,6 +423,24 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler { } }, 1000 * 10); remove(c, position, itemId); + } else if (itemType == 540) { + slea.readByte(); + slea.readInt(); + if(itemId == 5400000) { //name change + if(player.cancelPendingNameChange()) { + player.dropMessage(1, "Successfully canceled pending name change."); + } else { + player.dropMessage(1, "You do not have a pending name change."); + } + } else if(itemId == 5401000) { //world transfer + if(player.cancelPendingWorldTranfer()) { + player.dropMessage(1, "Successfully canceled pending world transfer."); + } else { + player.dropMessage(1, "You do not have a pending world transfer."); + } + } + remove(c, position, itemId); + c.announce(MaplePacketCreator.enableActions()); } else if (itemType == 543) { if(itemId == 5432000 && !c.gainCharacterSlot()) { player.dropMessage(1, "You have already used up all 12 extra character slots."); diff --git a/src/net/server/handlers/login/LoginPasswordHandler.java b/src/net/server/handlers/login/LoginPasswordHandler.java index 3a2041d510..49c35adeed 100644 --- a/src/net/server/handlers/login/LoginPasswordHandler.java +++ b/src/net/server/handlers/login/LoginPasswordHandler.java @@ -135,7 +135,7 @@ public final class LoginPasswordHandler implements MaplePacketHandler { c.announce(MaplePacketCreator.getLoginFailed(3)); return; } - Calendar tempban = c.getTempBanCalendar(); + Calendar tempban = c.getTempBanCalendarFromDB(); if (tempban != null) { if (tempban.getTimeInMillis() > Calendar.getInstance().getTimeInMillis()) { c.announce(MaplePacketCreator.getTempBan(tempban.getTimeInMillis(), c.getGReason())); diff --git a/src/tools/FilePrinter.java b/src/tools/FilePrinter.java index 0e934c1dd3..0d787b146a 100644 --- a/src/tools/FilePrinter.java +++ b/src/tools/FilePrinter.java @@ -59,6 +59,8 @@ public class FilePrinter { QUEST_UNCODED = "game/quests/UncodedQuests.txt", AUTOSAVING_CHARACTER = "players/SaveCharAuto.txt", SAVING_CHARACTER = "players/SaveChar.txt", + CHANGE_CHARACTER_NAME = "players/NameChange.txt", + WORLD_TRANSFER = "players/WorldTransfer.txt", USED_COMMANDS = "commands/UsedCommands.txt", DEADLOCK_ERROR = "deadlocks/Deadlocks.txt", DEADLOCK_STACK = "deadlocks/Path.txt", diff --git a/src/tools/MaplePacketCreator.java b/src/tools/MaplePacketCreator.java index a2f6c124fd..fe25226db8 100644 --- a/src/tools/MaplePacketCreator.java +++ b/src/tools/MaplePacketCreator.java @@ -81,6 +81,7 @@ import net.server.guild.MapleGuildSummary; import net.server.world.MapleParty; import net.server.world.MaplePartyCharacter; import net.server.world.PartyOperation; +import net.server.world.World; import server.CashShop.CashItem; import server.CashShop.CashItemFactory; import server.CashShop.SpecialCashItem; @@ -6091,18 +6092,33 @@ public class MaplePacketCreator { 8: must quit family, 9: unknown error */ - public static byte[] sendWorldTransferRules(int error) { + public static byte[] sendWorldTransferRules(int error, MapleClient c) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.CASHSHOP_CHECK_TRANSFER_WORLD_POSSIBLE_RESULT.getValue()); - mplew.writeInt(0); - mplew.write(0); + mplew.writeInt(0); //ignored mplew.write(error); mplew.writeInt(0); - + mplew.writeBool(error == 0); //0 = ?, otherwise list servers + if(error == 0) { + List worlds = Server.getInstance().getWorlds(); + mplew.writeInt(worlds.size()); + for(World world : worlds) { + mplew.writeMapleAsciiString(GameConstants.WORLD_NAMES[world.getId()]); + } + } return mplew.getPacket(); } - /* 1: name change already submitted + public static byte[] showWorldTransferSuccess(Item item, int accountId) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); + mplew.write(0xA0); + addCashItemInformation(mplew, item, accountId); + return mplew.getPacket(); + } + + /* 0: no error, send rules + 1: name change already submitted 2: name change within a month 3: recently banned 4: unknown error @@ -6117,15 +6133,28 @@ public class MaplePacketCreator { return mplew.getPacket(); } + /* 0: Name available + * >0: Name is in use + * <0: Unknown error + */ - public static byte[] sendNameTransferCheck(boolean canUseName) { + public static byte[] sendNameTransferCheck(String availableName, boolean canUseName) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.CASHSHOP_CHECK_NAME_CHANGE.getValue()); - mplew.writeShort(0); + //Send provided name back to client to add to temporary cache of checked & accepted names + mplew.writeMapleAsciiString(availableName); mplew.writeBool(!canUseName); return mplew.getPacket(); } + public static byte[] showNameChangeSuccess(Item item, int accountId) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); + mplew.write(0x9E); + addCashItemInformation(mplew, item, accountId); + return mplew.getPacket(); + } + public static byte[] showMTSCash(MapleCharacter p) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.MTS_OPERATION2.getValue()); @@ -7708,8 +7737,20 @@ public class MaplePacketCreator { return mplew.getPacket(); } + public static byte[] showBoughtCashRing(Item ring, String recipient, int accountId) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); + mplew.write(0x87); + addCashItemInformation(mplew, ring, accountId); + mplew.writeMapleAsciiString(recipient); + mplew.writeInt(ring.getItemId()); + mplew.writeShort(1); //quantity + return mplew.getPacket(); + } + /* * 00 = Due to an unknown error, failed + * A3 = Request timed out. Please try again. * A4 = Due to an unknown error, failed + warpout * A5 = You don't have enough cash. * A6 = long as shet msg @@ -7726,6 +7767,7 @@ public class MaplePacketCreator { * B2 = Expired Coupon * B3 = Coupon has been used already * B4 = Nexon internet cafes? lolfk + * B8 = Due to gender restrictions, the coupon cannot be used. * BB = inv full * BC = long as shet "(not?) available to purchase by a use at the premium" msg * BD = invalid gift recipient @@ -7738,6 +7780,8 @@ public class MaplePacketCreator { * C4 = check birthday code * C7 = only available to users buying cash item, whatever msg too long * C8 = already applied for this + * CD = You have reached the daily purchase limit for the cash shop. + * D0 = coupon account limit reached * D2 = coupon system currently unavailable * D3 = item can only be used 15 days after registration * D4 = not enough gift tokens @@ -7851,6 +7895,23 @@ public class MaplePacketCreator { return mplew.getPacket(); } + + public static byte[] deleteCashItem(Item item) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); + mplew.write(0x6C); + mplew.writeLong(item.getCashId()); + return mplew.getPacket(); + } + + public static byte[] refundCashItem(Item item, int maplePoints) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); + mplew.write(0x85); + mplew.writeLong(item.getCashId()); + mplew.writeInt(maplePoints); + return mplew.getPacket(); + } public static byte[] putIntoCashInventory(Item item, int accountId) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); From c49540bd8390a9d9f24baae3b7b8ab143cbb8290 Mon Sep 17 00:00:00 2001 From: Ronan Lana Date: Wed, 31 Jul 2019 20:26:21 -0300 Subject: [PATCH 13/37] Update db_database.sql Default value NULL for completionTime timestamps. --- sql/db_database.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sql/db_database.sql b/sql/db_database.sql index 3e84c0ac4b..d8a8dc3824 100644 --- a/sql/db_database.sql +++ b/sql/db_database.sql @@ -16348,7 +16348,7 @@ CREATE TABLE IF NOT EXISTS `namechanges` ( `old` varchar(13) NOT NULL, `new` varchar(13) NOT NULL, `requestTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `completionTime` timestamp, + `completionTime` timestamp NULL, PRIMARY KEY (`id`), INDEX (characterid) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; @@ -21435,7 +21435,7 @@ CREATE TABLE IF NOT EXISTS `worldtransfers` ( `from` tinyint(3) NOT NULL, `to` tinyint(3) NOT NULL, `requestTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `completionTime` timestamp, + `completionTime` timestamp NULL, PRIMARY KEY (`id`), INDEX (characterid) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; From d4279dc3096be103159f5d33c70f022d1e68ec18 Mon Sep 17 00:00:00 2001 From: Periwinks Date: Thu, 8 Aug 2019 21:15:34 -0400 Subject: [PATCH 14/37] Fix cash shop bbsmojis (#510) They originally caused a BBS post to not send --- src/net/server/channel/handlers/BBSOperationHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/net/server/channel/handlers/BBSOperationHandler.java b/src/net/server/channel/handlers/BBSOperationHandler.java index 38310e4aa3..020fa8ba0f 100644 --- a/src/net/server/channel/handlers/BBSOperationHandler.java +++ b/src/net/server/channel/handlers/BBSOperationHandler.java @@ -56,7 +56,7 @@ public final class BBSOperationHandler extends AbstractMaplePacketHandler { String text = correctLength(slea.readMapleAsciiString(), 600); int icon = slea.readInt(); if (icon >= 0x64 && icon <= 0x6a) { - if (c.getPlayer().haveItemWithId(5290000 + icon - 0x64, false)) { + if (!c.getPlayer().haveItemWithId(5290000 + icon - 0x64, false)) { return; } } else if (icon < 0 || icon > 3) { From b6ec7164d59cbd2da91c07d26ac3c475d7017a73 Mon Sep 17 00:00:00 2001 From: Periwinks Date: Thu, 8 Aug 2019 21:18:25 -0400 Subject: [PATCH 15/37] Fix mob DR skills (#509) In Maplestory, there are three reflection buffs: - Physical Reflect - Magical Reflect - Mixed Reflect (both combined) Physical reflect would only reflect damage to physical users, Magical would only reflect to magical users. In HeavenMS, the reflects are treated as an HP reflect and MP reflect, so the vanilla reflection mechanic was implemented here --- .../server/channel/handlers/AbstractDealDamageHandler.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/net/server/channel/handlers/AbstractDealDamageHandler.java b/src/net/server/channel/handlers/AbstractDealDamageHandler.java index 8162296a1e..576bf33f23 100644 --- a/src/net/server/channel/handlers/AbstractDealDamageHandler.java +++ b/src/net/server/channel/handlers/AbstractDealDamageHandler.java @@ -521,7 +521,7 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl map.damageMonster(player, monster, totDamageToOneMonster); } - if (monster.isBuffed(MonsterStatus.WEAPON_REFLECT)) { + if (monster.isBuffed(MonsterStatus.WEAPON_REFLECT) && !attack.magic) { List> mobSkills = monster.getSkills(); for (Pair ms : mobSkills) { @@ -532,13 +532,14 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl } } } - if (monster.isBuffed(MonsterStatus.MAGIC_REFLECT)) { + if (monster.isBuffed(MonsterStatus.MAGIC_REFLECT) && attack.magic) { List> mobSkills = monster.getSkills(); for (Pair ms : mobSkills) { if (ms.left == 145) { MobSkill toUse = MobSkillFactory.getMobSkill(ms.left, ms.right); - player.addMP(-toUse.getY()); + player.addHP(-toUse.getY()); + map.broadcastMessage(player, MaplePacketCreator.damagePlayer(0, monster.getId(), player.getId(), toUse.getY(), 0, 0, false, 0, true, monster.getObjectId(), 0, 0), true); } } } From 993398180e8bf56f9cd9791d55ef4295c3979b04 Mon Sep 17 00:00:00 2001 From: Periwinks Date: Thu, 8 Aug 2019 21:22:24 -0400 Subject: [PATCH 16/37] Fix #15 (#508) --- src/client/MapleCharacter.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/client/MapleCharacter.java b/src/client/MapleCharacter.java index 1ee1049b7e..7e588748cd 100644 --- a/src/client/MapleCharacter.java +++ b/src/client/MapleCharacter.java @@ -4827,6 +4827,10 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public int getQuestExpRate() { + if (hasNoviceExpRate()) { + return 1; + } + World w = getWorldServer(); return w.getExpRate() * w.getQuestRate(); } From 2295317a84f31673361b72ba1003cc60f5c1cc51 Mon Sep 17 00:00:00 2001 From: kolakcc Date: Thu, 15 Aug 2019 01:47:00 +0200 Subject: [PATCH 17/37] Script engine refactor preparation (#492) * Fix Invocable casting, remove useless script engine cache * Remove useless script retry * Remove null reference in EventManager --- src/client/MapleClient.java | 7 +- src/scripting/AbstractScriptManager.java | 64 +++++++++---------- src/scripting/event/EventScriptManager.java | 4 +- src/scripting/npc/NPCScriptManager.java | 26 ++++---- src/scripting/quest/QuestScriptManager.java | 13 ++-- .../reactor/ReactorScriptManager.java | 14 ++-- 6 files changed, 63 insertions(+), 65 deletions(-) diff --git a/src/client/MapleClient.java b/src/client/MapleClient.java index 70b4e8da4a..77e84e3397 100644 --- a/src/client/MapleClient.java +++ b/src/client/MapleClient.java @@ -44,6 +44,7 @@ import java.util.Set; import java.util.concurrent.Semaphore; import java.util.concurrent.locks.Lock; +import jdk.nashorn.api.scripting.NashornScriptEngine; import tools.*; import javax.script.ScriptEngine; @@ -106,7 +107,7 @@ public class MapleClient { private long lastPong; private int gmlevel; private Set macs = new HashSet<>(); - private Map engines = new HashMap<>(); + private Map engines = new HashMap<>(); private byte characterSlots = 3; private byte loginattempt = 0; private String pin = ""; @@ -1174,11 +1175,11 @@ public class MapleClient { gmlevel = level; } - public void setScriptEngine(String name, ScriptEngine e) { + public void setScriptEngine(String name, NashornScriptEngine e) { engines.put(name, e); } - public ScriptEngine getScriptEngine(String name) { + public NashornScriptEngine getScriptEngine(String name) { return engines.get(name); } diff --git a/src/scripting/AbstractScriptManager.java b/src/scripting/AbstractScriptManager.java index 2ec8782b11..1fdf81c3e4 100644 --- a/src/scripting/AbstractScriptManager.java +++ b/src/scripting/AbstractScriptManager.java @@ -27,12 +27,11 @@ import java.io.File; import java.io.FileReader; import java.io.IOException; -import javax.script.Invocable; -import javax.script.ScriptEngine; -import javax.script.ScriptEngineManager; -import javax.script.ScriptException; +import javax.script.*; import constants.ServerConstants; +import jdk.nashorn.api.scripting.NashornScriptEngine; +import jdk.nashorn.api.scripting.NashornScriptEngineFactory; import tools.FilePrinter; /** @@ -40,45 +39,42 @@ import tools.FilePrinter; * @author Matze */ public abstract class AbstractScriptManager { - - protected ScriptEngine engine; - private ScriptEngineManager sem; + private ScriptEngineFactory sef; protected AbstractScriptManager() { - sem = new ScriptEngineManager(); + sef = new ScriptEngineManager().getEngineByName("javascript").getFactory(); } - protected Invocable getInvocable(String path, MapleClient c) { + protected NashornScriptEngine getScriptEngine(String path) { path = "scripts/" + path; - engine = null; - if (c != null) { - try { - engine = c.getScriptEngine(path); - } catch (NullPointerException npe) { - c = null; // player disconnected - } + File scriptFile = new File(path); + if (!scriptFile.exists()) { + return null; } - if (engine == null) { - File scriptFile = new File(path); - if (!scriptFile.exists()) { - return null; - } - engine = sem.getEngineByName("javascript"); - if (c != null) { - c.setScriptEngine(path, engine); - } - try (FileReader fr = new FileReader(scriptFile)) { - if (ServerConstants.JAVA_8){ - engine.eval("load('nashorn:mozilla_compat.js');" + System.lineSeparator()); - } - engine.eval(fr); - } catch (final ScriptException | IOException t) { - FilePrinter.printError(FilePrinter.INVOCABLE + path.substring(12, path.length()), t, path); - return null; + NashornScriptEngine engine = (NashornScriptEngine) sef.getScriptEngine(); + try (FileReader fr = new FileReader(scriptFile)) { + if (ServerConstants.JAVA_8){ + engine.eval("load('nashorn:mozilla_compat.js');" + System.lineSeparator()); } + engine.eval(fr); + } catch (final ScriptException | IOException t) { + FilePrinter.printError(FilePrinter.INVOCABLE + path.substring(12), t, path); + return null; } - return (Invocable) engine; + return engine; + } + + protected NashornScriptEngine getScriptEngine(String path, MapleClient c) { + String cachePath = "scripts/" + path; + NashornScriptEngine engine = c.getScriptEngine(cachePath); + + if (engine == null) { + engine = getScriptEngine(cachePath); + c.setScriptEngine(path, engine); + } + + return engine; } protected void resetContext(String path, MapleClient c) { diff --git a/src/scripting/event/EventScriptManager.java b/src/scripting/event/EventScriptManager.java index 2d7d16d905..87af1a564a 100644 --- a/src/scripting/event/EventScriptManager.java +++ b/src/scripting/event/EventScriptManager.java @@ -54,7 +54,7 @@ public class EventScriptManager extends AbstractScriptManager { super(); for (String script : scripts) { if (!script.equals("")) { - Invocable iv = getInvocable("event/" + script + ".js", null); + Invocable iv = getScriptEngine("event/" + script + ".js"); events.put(script, new EventEntry(iv, new EventManager(cserv, iv, script))); } } @@ -88,7 +88,7 @@ public class EventScriptManager extends AbstractScriptManager { Channel cserv = events.values().iterator().next().em.getChannelServer(); for (Entry entry : events.entrySet()) { String script = entry.getKey(); - Invocable iv = getInvocable("event/" + script + ".js", null); + Invocable iv = getScriptEngine("event/" + script + ".js"); events.put(script, new EventEntry(iv, new EventManager(cserv, iv, script))); } } diff --git a/src/scripting/npc/NPCScriptManager.java b/src/scripting/npc/NPCScriptManager.java index 910f49bd9b..1abc218633 100644 --- a/src/scripting/npc/NPCScriptManager.java +++ b/src/scripting/npc/NPCScriptManager.java @@ -30,7 +30,10 @@ import java.util.List; import java.util.Map; import javax.script.Invocable; +import javax.script.ScriptEngine; import javax.script.ScriptException; + +import jdk.nashorn.api.scripting.NashornScriptEngine; import net.server.world.MaplePartyCharacter; import scripting.AbstractScriptManager; @@ -56,7 +59,7 @@ public class NPCScriptManager extends AbstractScriptManager { public boolean isNpcScriptAvailable(MapleClient c, String fileName) { Invocable iv = null; if (fileName != null) { - iv = getInvocable("npc/" + fileName + ".js", c); + iv = getScriptEngine("npc/" + fileName + ".js", c); } return iv != null; @@ -90,24 +93,19 @@ public class NPCScriptManager extends AbstractScriptManager { return; } cms.put(c, cm); - Invocable iv = null; - iv = getInvocable("npc/" + filename + ".js", c); + NashornScriptEngine iv = getScriptEngine("npc/" + filename + ".js", c); if (iv == null) { c.getPlayer().dropMessage(1, npc + ""); cm.dispose(); return; } - engine.put("cm", cm); + iv.put("cm", cm); scripts.put(c, iv); try { iv.invokeFunction("start", chrs); } catch (final NoSuchMethodException nsme) { - try { - iv.invokeFunction("start", chrs); - } catch (final NoSuchMethodException nsma) { - nsma.printStackTrace(); - } + nsme.printStackTrace(); } } catch (final UndeclaredThrowableException ute) { @@ -127,25 +125,25 @@ public class NPCScriptManager extends AbstractScriptManager { } if (c.canClickNPC()) { cms.put(c, cm); - Invocable iv = null; + NashornScriptEngine iv = null; if (!itemScript) { if (fileName != null) { - iv = getInvocable("npc/" + fileName + ".js", c); + iv = getScriptEngine("npc/" + fileName + ".js", c); } } else { if (fileName != null) { // thanks MiLin for drafting NPC-based item scripts - iv = getInvocable("item/" + fileName + ".js", c); + iv = getScriptEngine("item/" + fileName + ".js", c); } } if (iv == null) { - iv = getInvocable("npc/" + npc + ".js", c); + iv = getScriptEngine("npc/" + npc + ".js", c); cm.resetItemScript(); } if (iv == null) { dispose(c); return false; } - engine.put(engineName, cm); + iv.put(engineName, cm); scripts.put(c, iv); c.setClickedNPC(); try { diff --git a/src/scripting/quest/QuestScriptManager.java b/src/scripting/quest/QuestScriptManager.java index c599a943f2..46b7dc7f6e 100644 --- a/src/scripting/quest/QuestScriptManager.java +++ b/src/scripting/quest/QuestScriptManager.java @@ -27,6 +27,7 @@ import java.util.Map; import javax.script.Invocable; +import jdk.nashorn.api.scripting.NashornScriptEngine; import scripting.AbstractScriptManager; import server.quest.MapleQuest; import tools.FilePrinter; @@ -62,10 +63,10 @@ public class QuestScriptManager extends AbstractScriptManager { } if(c.canClickNPC()) { qms.put(c, qm); - Invocable iv = getInvocable("quest/" + questid + ".js", c); + NashornScriptEngine iv = getScriptEngine("quest/" + questid + ".js", c); if (iv == null) { if(GameConstants.isMedalQuest(questid)) { // start generic medal quest - iv = getInvocable("quest/medalQuest.js", c); + iv = getScriptEngine("quest/medalQuest.js", c); } else { FilePrinter.printError(FilePrinter.QUEST_UNCODED, "START Quest " + questid + " is uncoded."); } @@ -74,7 +75,7 @@ public class QuestScriptManager extends AbstractScriptManager { qm.dispose(); return; } - engine.put("qm", qm); + iv.put("qm", qm); scripts.put(c, iv); c.setClickedNPC(); iv.invokeFunction("start", (byte) 1, (byte) 0, 0); @@ -117,17 +118,17 @@ public class QuestScriptManager extends AbstractScriptManager { } if(c.canClickNPC()){ qms.put(c, qm); - Invocable iv = getInvocable("quest/" + questid + ".js", c); + NashornScriptEngine iv = getScriptEngine("quest/" + questid + ".js", c); if (iv == null) { if(GameConstants.isMedalQuest(questid)) { // start generic medal quest - iv = getInvocable("quest/medalQuest.js", c); + iv = getScriptEngine("quest/medalQuest.js", c); } else { FilePrinter.printError(FilePrinter.QUEST_UNCODED, "END Quest " + questid + " is uncoded."); qm.dispose(); return; } } - engine.put("qm", qm); + iv.put("qm", qm); scripts.put(c, iv); c.setClickedNPC(); iv.invokeFunction("end", (byte) 1, (byte) 0, 0); diff --git a/src/scripting/reactor/ReactorScriptManager.java b/src/scripting/reactor/ReactorScriptManager.java index 6e06f41ee9..e4d1cb4389 100644 --- a/src/scripting/reactor/ReactorScriptManager.java +++ b/src/scripting/reactor/ReactorScriptManager.java @@ -31,6 +31,8 @@ import java.util.List; import java.util.Map; import javax.script.Invocable; import javax.script.ScriptException; + +import jdk.nashorn.api.scripting.NashornScriptEngine; import scripting.AbstractScriptManager; import server.maps.MapleReactor; import server.maps.ReactorDropEntry; @@ -52,11 +54,11 @@ public class ReactorScriptManager extends AbstractScriptManager { public void onHit(MapleClient c, MapleReactor reactor) { try { - Invocable iv = getInvocable("reactor/" + reactor.getId() + ".js", c); + NashornScriptEngine iv = getScriptEngine("reactor/" + reactor.getId() + ".js", c); if (iv == null) return; ReactorActionManager rm = new ReactorActionManager(c, reactor, iv); - engine.put("rm", rm); + iv.put("rm", rm); iv.invokeFunction("hit"); } catch (final NoSuchMethodException e) {} //do nothing, hit is OPTIONAL @@ -67,11 +69,11 @@ public class ReactorScriptManager extends AbstractScriptManager { public void act(MapleClient c, MapleReactor reactor) { try { - Invocable iv = getInvocable("reactor/" + reactor.getId() + ".js", c); + NashornScriptEngine iv = getScriptEngine("reactor/" + reactor.getId() + ".js", c); if (iv == null) return; ReactorActionManager rm = new ReactorActionManager(c, reactor, iv); - engine.put("rm", rm); + iv.put("rm", rm); iv.invokeFunction("act"); } catch (final ScriptException | NoSuchMethodException | NullPointerException e) { FilePrinter.printError(FilePrinter.REACTOR + reactor.getId() + ".txt", e); @@ -116,11 +118,11 @@ public class ReactorScriptManager extends AbstractScriptManager { private void touching(MapleClient c, MapleReactor reactor, boolean touching) { try { - Invocable iv = getInvocable("reactor/" + reactor.getId() + ".js", c); + NashornScriptEngine iv = getScriptEngine("reactor/" + reactor.getId() + ".js", c); if (iv == null) return; ReactorActionManager rm = new ReactorActionManager(c, reactor, iv); - engine.put("rm", rm); + iv.put("rm", rm); if (touching) { iv.invokeFunction("touch"); } else { From 2c16a4d908fe78c62cbc52a46c38ebd5204fadf6 Mon Sep 17 00:00:00 2001 From: Periwinks Date: Wed, 14 Aug 2019 19:47:48 -0400 Subject: [PATCH 18/37] Give newly created characters proper AP count (#498) Given in the form of AP; players were originally missing 9AP upon creation --- src/client/creator/CharacterFactoryRecipe.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/client/creator/CharacterFactoryRecipe.java b/src/client/creator/CharacterFactoryRecipe.java index 28333e086f..80b391c39c 100644 --- a/src/client/creator/CharacterFactoryRecipe.java +++ b/src/client/creator/CharacterFactoryRecipe.java @@ -39,7 +39,7 @@ public class CharacterFactoryRecipe { private int level, map, top, bottom, shoes, weapon; private int str = 4, dex = 4, int_ = 4, luk = 4; private int maxHp = 50, maxMp = 5; - private int ap = 0, sp = 0; + private int ap = 9, sp = 0; private int meso = 0; private List> skills = new LinkedList<>(); From f958624f6a2a9fa196ca67dfeafc577e9b93b83a Mon Sep 17 00:00:00 2001 From: ronancpl Date: Wed, 14 Aug 2019 21:14:15 -0300 Subject: [PATCH 19/37] Reactor Loot + Obstacles damage mob + Static calls from scripts Revised starting AP, now working out with flags. To supply the 9AP shortage of 4/4/4/4, two options: one giving out 9 AP from the start, other giving 4/5 AP when changing jobs (1st, 2nd). This change would also work with the autoassign for beginners flag. Refactored several quest scripts, that would be glitching the player when doing quest start/complete and disposing under the same script status. Cleared some cases with the quest reward system where it would call out a "full inventory" even though new inventory slots could get discovered when doing the quest loot transaction. Fixed an issue with player stores being deployed overlapping in a few scenarios. Fixed reduced EXP gain from kills when triggering skill Mortal Blow. Added "open Duey" functionality when clicking "O" in the incoming package notification. Fixed packages without messages (a quirk from quick delivery) not accounting visually as a "quick" one. Fixed certain mounts (non-item skill mounts, such as Yeti or Spaceship) not showing up properly to other players when changing maps. Added handler for mob damage by environment objects (OrbisPQ jail storage area). Added a placeholder on mob's stolen items to prevent more steals to be placed as soon as the Steal mechanism is triggered. Patched boss logs not removing recent entries from the DB tables (the reset method is actually supposed to clear every entry). Revised a possible memory leak scenario happening due to an exception thrown midway monster kill method. Improved reactor drops, now placing loots visible for the acting player centered (similar as to how mob loots work). Refactored several issues in scripts, related to accessing static Java methods through an object, that would start appearing after transitioning to Java 8. --- docs/issues.txt | 3 + docs/mychanges_ptbr.txt | 36 +- scripts/event/3rdJob_bowman.js | 2 +- scripts/event/3rdJob_magician.js | 2 +- scripts/event/3rdJob_mount.js | 2 +- scripts/event/3rdJob_pirate.js | 2 +- scripts/event/3rdJob_thief.js | 2 +- scripts/event/3rdJob_warrior.js | 2 +- scripts/event/4jaerial.js | 2 +- scripts/event/4jship.js | 2 +- scripts/event/4jsuper.js | 2 +- scripts/event/Aran_2ndmount.js | 2 +- scripts/event/Aran_3rdmount.js | 2 +- scripts/event/BalrogQuest.js | 2 +- scripts/event/DelliBattle.js | 2 +- scripts/event/ElementalBattle.js | 2 +- scripts/event/MahaBattle.js | 2 +- scripts/npc/2010007.js | 6 +- scripts/npc/9201005.js | 6 +- scripts/npc/9201008.js | 6 +- scripts/npc/9201023.js | 4 +- scripts/npc/9201024.js | 4 +- scripts/npc/9201025.js | 4 +- scripts/npc/9201026.js | 4 +- scripts/npc/9201027.js | 4 +- scripts/npc/9977777.js | 3 +- scripts/portal/party3_jailin.js | 100 +++-- scripts/quest/10940.js | 9 +- scripts/quest/20002.js | 7 +- scripts/quest/20008.js | 20 +- scripts/quest/20016.js | 5 +- scripts/quest/20100.js | 4 +- scripts/quest/20101.js | 3 +- scripts/quest/20102.js | 3 +- scripts/quest/20103.js | 3 +- scripts/quest/20104.js | 3 +- scripts/quest/20105.js | 3 +- scripts/quest/20200.js | 2 + scripts/quest/20311.js | 7 +- scripts/quest/20312.js | 8 +- scripts/quest/20313.js | 8 +- scripts/quest/20314.js | 8 +- scripts/quest/20315.js | 8 +- scripts/quest/2034.js | 10 +- scripts/quest/20520.js | 5 +- scripts/quest/20522.js | 11 +- scripts/quest/20526.js | 10 +- scripts/quest/20527.js | 4 +- scripts/quest/20600.js | 2 +- scripts/quest/20610.js | 4 +- scripts/quest/21011.js | 5 +- scripts/quest/21012.js | 10 +- scripts/quest/21013.js | 2 +- scripts/quest/21100.js | 5 +- scripts/quest/21200.js | 1 + scripts/quest/21201.js | 2 +- scripts/quest/21202.js | 2 +- scripts/quest/2124.js | 35 +- scripts/quest/2126.js | 35 +- scripts/quest/2127.js | 24 +- scripts/quest/21300.js | 17 +- scripts/quest/21301.js | 7 +- scripts/quest/21302.js | 1 + scripts/quest/21400.js | 9 +- scripts/quest/21401.js | 4 +- scripts/quest/2148.js | 21 +- scripts/quest/2149.js | 22 +- scripts/quest/2150.js | 22 +- scripts/quest/2151.js | 22 +- scripts/quest/2152.js | 22 +- scripts/quest/21600.js | 4 +- scripts/quest/21613.js | 5 +- scripts/quest/21618.js | 5 +- scripts/quest/21700.js | 5 +- scripts/quest/21703.js | 2 + scripts/quest/21712.js | 3 +- scripts/quest/21728.js | 2 +- scripts/quest/21733.js | 2 +- scripts/quest/21734.js | 5 +- scripts/quest/21736.js | 2 +- scripts/quest/21738.js | 2 +- scripts/quest/21739.js | 4 +- scripts/quest/21740.js | 5 +- scripts/quest/21741.js | 4 +- scripts/quest/21749.js | 4 +- scripts/quest/21750.js | 2 +- scripts/quest/21753.js | 2 +- scripts/quest/21757.js | 5 +- scripts/quest/21766.js | 4 +- scripts/quest/21767.js | 17 +- scripts/quest/2186.js | 74 ++-- scripts/quest/2197.js | 46 ++- scripts/quest/22001.js | 7 +- scripts/quest/22002.js | 4 +- scripts/quest/22007.js | 5 +- scripts/quest/22008.js | 5 +- scripts/quest/2214.js | 15 +- scripts/quest/2215.js | 17 +- scripts/quest/2216.js | 3 +- scripts/quest/2217.js | 3 +- scripts/quest/2218.js | 3 +- scripts/quest/2219.js | 3 +- scripts/quest/2228.js | 5 +- scripts/quest/2230.js | 18 +- scripts/quest/2236.js | 29 +- scripts/quest/2245.js | 4 +- scripts/quest/22501.js | 6 +- scripts/quest/22502.js | 6 +- scripts/quest/22503.js | 5 +- scripts/quest/22504.js | 4 +- scripts/quest/22507.js | 5 +- scripts/quest/2251.js | 37 +- scripts/quest/2257.js | 2 +- scripts/quest/2258.js | 4 +- scripts/quest/2259.js | 3 +- scripts/quest/2260.js | 4 +- scripts/quest/2293.js | 18 +- scripts/quest/2312.js | 14 +- scripts/quest/2313.js | 7 +- scripts/quest/2314.js | 20 +- scripts/quest/2315.js | 18 +- scripts/quest/2316.js | 12 +- scripts/quest/2317.js | 14 +- scripts/quest/2318.js | 26 +- scripts/quest/2319.js | 12 +- scripts/quest/2320.js | 12 +- scripts/quest/2321.js | 12 +- scripts/quest/2322.js | 16 +- scripts/quest/2325.js | 7 +- scripts/quest/2338.js | 5 +- scripts/quest/2342.js | 48 ++- scripts/quest/2560.js | 6 +- scripts/quest/2573.js | 7 +- scripts/quest/28004.js | 2 +- scripts/quest/29900.js | 18 +- scripts/quest/29901.js | 18 +- scripts/quest/29902.js | 18 +- scripts/quest/29903.js | 18 +- scripts/quest/3108.js | 2 +- scripts/quest/3301.js | 3 +- scripts/quest/3303.js | 3 +- scripts/quest/3311.js | 2 +- scripts/quest/3314.js | 2 +- scripts/quest/3321.js | 2 +- scripts/quest/3345.js | 2 +- scripts/quest/3360.js | 6 +- scripts/quest/3382.js | 70 ++-- scripts/quest/3437.js | 13 +- scripts/quest/3452.js | 5 +- scripts/quest/3454.js | 55 ++- scripts/quest/3507.js | 30 +- scripts/quest/3523.js | 27 +- scripts/quest/3524.js | 27 +- scripts/quest/3525.js | 27 +- scripts/quest/3526.js | 27 +- scripts/quest/3527.js | 27 +- scripts/quest/3539.js | 27 +- scripts/quest/3714.js | 3 +- scripts/quest/3833.js | 10 +- scripts/quest/3926.js | 4 +- scripts/quest/3929.js | 2 +- scripts/quest/3933.js | 6 +- scripts/quest/3941.js | 35 +- scripts/quest/3953.js | 10 +- scripts/quest/4647.js | 8 +- scripts/quest/4659.js | 11 +- scripts/quest/6033.js | 6 +- scripts/quest/6036.js | 7 +- scripts/quest/8185.js | 5 +- scripts/quest/8189.js | 7 +- scripts/quest/8219.js | 10 +- scripts/quest/8221.js | 5 +- scripts/quest/8223.js | 7 +- scripts/quest/8224.js | 1 + scripts/quest/8225.js | 5 +- scripts/quest/8226.js | 5 +- scripts/quest/8227.js | 4 +- scripts/quest/8228.js | 4 +- scripts/quest/8230.js | 7 +- scripts/quest/8231.js | 1 + scripts/quest/8232.js | 1 + scripts/quest/8233.js | 1 + scripts/quest/8234.js | 1 + scripts/quest/8235.js | 1 + scripts/quest/8236.js | 1 + scripts/quest/8237.js | 1 + scripts/quest/8238.js | 1 + scripts/reactor/2008007.js | 29 ++ sql/db_database.sql | 2 +- src/client/MapleCharacter.java | 84 ++++- .../creator/CharacterFactoryRecipe.java | 12 +- src/client/processor/DueyProcessor.java | 22 +- src/constants/GameConstants.java | 37 ++ src/constants/ServerConstants.java | 1 + src/net/PacketProcessor.java | 1 + src/net/opcodes/RecvOpcode.java | 1 + src/net/server/Server.java | 6 +- .../handlers/AbstractDealDamageHandler.java | 11 +- .../handlers/CashShopSurpriseHandler.java | 8 +- .../server/channel/handlers/DueyHandler.java | 8 +- .../handlers/FieldDamageMobHandler.java | 59 +++ .../channel/handlers/HealOvertimeHandler.java | 11 +- .../handlers/HiredMerchantRequest.java | 33 +- .../channel/handlers/NPCAnimationHandler.java | 4 + .../handlers/PlayerInteractionHandler.java | 50 ++- .../channel/handlers/RaiseUIStateHandler.java | 4 +- src/net/server/worker/RespawnWorker.java | 12 +- src/scripting/AbstractPlayerInteraction.java | 5 +- src/scripting/AbstractScriptManager.java | 2 +- src/scripting/event/EventManager.java | 6 + src/scripting/map/MapScriptMethods.java | 5 +- src/scripting/npc/NPCScriptManager.java | 2 + src/scripting/quest/QuestScriptManager.java | 1 + .../reactor/ReactorActionManager.java | 90 +++-- src/server/CashShop.java | 10 +- src/server/DueyPackage.java | 14 +- src/server/MaplePortal.java | 1 + src/server/MapleStatEffect.java | 27 +- .../expeditions/MapleExpeditionBossLog.java | 5 +- src/server/life/MapleMonster.java | 2 +- .../life/MapleMonsterInformationProvider.java | 2 +- src/server/maps/MapleMap.java | 137 +++---- src/server/maps/MapleMapFactory.java | 14 +- src/server/maps/MapleMapManager.java | 3 - src/server/quest/MapleQuest.java | 3 +- src/server/quest/actions/ItemAction.java | 35 +- src/tools/MaplePacketCreator.java | 35 +- tools/ScriptStaticMethodTracker/method_list.c | 85 +++++ tools/ScriptStaticMethodTracker/method_list.h | 43 +++ .../method_tracker.c | 347 ++++++++++++++++++ tools/ScriptStaticMethodTracker/pcre3.dll | Bin 0 -> 140288 bytes tools/ScriptStaticMethodTracker/script_path.c | 72 ++++ tools/ScriptStaticMethodTracker/script_path.h | 34 ++ 233 files changed, 2368 insertions(+), 888 deletions(-) create mode 100644 scripts/reactor/2008007.js create mode 100644 src/net/server/channel/handlers/FieldDamageMobHandler.java create mode 100644 tools/ScriptStaticMethodTracker/method_list.c create mode 100644 tools/ScriptStaticMethodTracker/method_list.h create mode 100644 tools/ScriptStaticMethodTracker/method_tracker.c create mode 100644 tools/ScriptStaticMethodTracker/pcre3.dll create mode 100644 tools/ScriptStaticMethodTracker/script_path.c create mode 100644 tools/ScriptStaticMethodTracker/script_path.h diff --git a/docs/issues.txt b/docs/issues.txt index ccff9e18d8..b0d48368cb 100644 --- a/docs/issues.txt +++ b/docs/issues.txt @@ -10,6 +10,9 @@ Known issues: - If there are multiple bosses that shows HPBar on the map, if a player hits more than one the HPBar may start flickering on the screen. - Sometimes battleship may behave oddly with the enhanced buff system, making the character d/c in certain scenarios. - Dragon Roar doesn't show the stun effect to players. +- Cygnus job 'Final Attack' skills not functional. +- Steal skill doesn't deduct the loot from the drop pool from a mob. +- Using Shark Wave with Transformation on female thunderbreakers will cause consecutive attacks to proc immediately. - Snipe will show much higher damage value than actually applicable to the attacker. - Some monster status such as freeze and weapon/magic reflect doesn't behave properly in certain scenarios. Freeze seems to not work on mobs with low OID or are starters from server boot time. - On low-end connections, things such as command summoning a player that is currently logging in (already visible to other players) may cause the player to freeze, consequently freezing the account as well since the server-side disconnection doesn't happen. diff --git a/docs/mychanges_ptbr.txt b/docs/mychanges_ptbr.txt index c876cdebb7..5109643785 100644 --- a/docs/mychanges_ptbr.txt +++ b/docs/mychanges_ptbr.txt @@ -2049,4 +2049,38 @@ Corrigido alguns danos de summons sendo calculados extremamente baixos quando o Corrigido funcionalidade de loot explosivo de mobs não aplicando devidamente. Corrigido linguagens, bastante usado na MCPQ, não utilizando o valor requisitado pelo jogador ao logar/trocar de canais. Corrigido casos de NPE ao tentar realizar updates de posição lado-servidor em alguns summons de jogador. -Revisado reset de reatores em reatores que estão desaparecidos por um tempo, para retornar de imediato. \ No newline at end of file +Revisado reset de reatores em reatores que estão desaparecidos por um tempo, para retornar de imediato. + +31 Julho 2019, +Revisado AP inicial de jogadores, agora mantendo dois sistemas para suprir a falta de 9 AP's. Ambos com AP's começando em 4/4/4/4: 0AP inicialmente, com ganhos de 4AP na primeira mudança de classe e 5AP na segunda mudança. Se não estiver usando esse método, jogadores possuem de início 9 AP's à disposição. + +02 Agosto 2019, +Refatorado vários scripts de quests, não mais realizando disposes e envio de caixas de texto no mesmo status. + +05 Agosto 2019, +Revisado casos onde o sistema de recompensas de quests avisa "inventário cheio" mesmo embora novos espaços pudessem ser encontrados na retirada de itens. +Corrigido posicionamento não-verificado de lojas criadas por jogadores. +Corrigido ganho reduzido de EXP ao utilizar skill Mortal Blow. +Corrigido clique em "O" na UI de recepção de itens pelo Duey não realizando ação alguma. +Corrigido representação de "quick" na lista de pacotes recebidos pelo Duey não constando os pacotes enviados sem mensagem escrita. +Revisado certos casos onde itens enviados com "quick delivery" não conseguiam ser recebidos imediatamente. + +06 Agosto 2019, +Corrigido certas montarias não-ligadas a itens de inventário não atuando devidamente ao transicionar mapas (terceiros não conseguiam visualizar a montaria). +Revisado os vários scripts de quests anteriormente refatorado. Adição: último if status sinalizando disposes de caixas de texto nos penúltimos status. + +08 - 10 Agosto 2019, +Adicionado handler para aplicação de dano em mobs por objetos de ambiente. +Revisado uso de Steal ao aplicar dano, preenchendo lista (e buscando evitar novas aplicações) assim que utilizado. +Setado checagem para limites de lobbyid ao se iniciar uma instância de evento. +Revisado boss logs somente removendo os itens da tabela a partir de um dia antes, não todas as entradas, assim que a tarefa de reset é iniciada. +Refatorado elementos não-condizentes com o padrão de design Factory na classe geradora de mapas. +Revisado possível cenário de vazamento de memória ocorrido devido a exceção lançada em algum trecho entre removeKilledMonsterObject e dispatchMonsterKilled. +Aprimorado loots de reatores, agora colocando loots visíveis ao jogador no centro, similarmente a como loots de mobs ocorrem. +Ajustado frequência de loots de reatores para 200ms. + +12 - 14 Agosto 2019, +Refatorado vários casos de erros em acessos a funções estáticas a partir de scripts, que passou a ocorrer após trocar de versão Java. +Corrigido listas que mantém conteúdo dos mundos e canais esvaziando antes que os processos em execução do TimerManager terminem de executar, no momento do sinal de shutdown do servidor. +Revisado update de quests para o jogador durante script de quests, problema permite movimento enquanto o mesmo ainda está falando com o NPC. +Revisado novamente os scripts de quest! Problema detectado envolvia incidências de iniciar e completar de quests com disposes na mesma estrutura status. \ No newline at end of file diff --git a/scripts/event/3rdJob_bowman.js b/scripts/event/3rdJob_bowman.js index 447ae673d7..2fe501b8c5 100644 --- a/scripts/event/3rdJob_bowman.js +++ b/scripts/event/3rdJob_bowman.js @@ -31,7 +31,7 @@ var maxMapId = 108010101; var eventTime = 20; //20 minutes -var lobbyRange = [0, 0]; +var lobbyRange = [0, 7]; function setLobbyRange() { return lobbyRange; diff --git a/scripts/event/3rdJob_magician.js b/scripts/event/3rdJob_magician.js index aa244b5114..9742e19f14 100644 --- a/scripts/event/3rdJob_magician.js +++ b/scripts/event/3rdJob_magician.js @@ -31,7 +31,7 @@ var maxMapId = 108010201; var eventTime = 20; //20 minutes -var lobbyRange = [0, 0]; +var lobbyRange = [0, 7]; function setLobbyRange() { return lobbyRange; diff --git a/scripts/event/3rdJob_mount.js b/scripts/event/3rdJob_mount.js index cd366824ed..5a04044b66 100644 --- a/scripts/event/3rdJob_mount.js +++ b/scripts/event/3rdJob_mount.js @@ -33,7 +33,7 @@ var eventMaps = [923010000]; var eventTime = 5; //5 minutes -var lobbyRange = [0, 0]; +var lobbyRange = [0, 7]; function setLobbyRange() { return lobbyRange; diff --git a/scripts/event/3rdJob_pirate.js b/scripts/event/3rdJob_pirate.js index ef18f1dc31..82e268496a 100644 --- a/scripts/event/3rdJob_pirate.js +++ b/scripts/event/3rdJob_pirate.js @@ -31,7 +31,7 @@ var maxMapId = 108010501; var eventTime = 20; //20 minutes -var lobbyRange = [0, 0]; +var lobbyRange = [0, 7]; function setLobbyRange() { return lobbyRange; diff --git a/scripts/event/3rdJob_thief.js b/scripts/event/3rdJob_thief.js index 285c4d0484..a940130997 100644 --- a/scripts/event/3rdJob_thief.js +++ b/scripts/event/3rdJob_thief.js @@ -31,7 +31,7 @@ var maxMapId = 108010401; var eventTime = 20; //20 minutes -var lobbyRange = [0, 0]; +var lobbyRange = [0, 7]; function setLobbyRange() { return lobbyRange; diff --git a/scripts/event/3rdJob_warrior.js b/scripts/event/3rdJob_warrior.js index f3b7f0bf97..ce0e50da82 100644 --- a/scripts/event/3rdJob_warrior.js +++ b/scripts/event/3rdJob_warrior.js @@ -31,7 +31,7 @@ var maxMapId = 108010301; var eventTime = 20; //20 minutes -var lobbyRange = [0, 0]; +var lobbyRange = [0, 7]; function setLobbyRange() { return lobbyRange; diff --git a/scripts/event/4jaerial.js b/scripts/event/4jaerial.js index d4dc9708d7..95ec6c3e1f 100644 --- a/scripts/event/4jaerial.js +++ b/scripts/event/4jaerial.js @@ -30,7 +30,7 @@ var maxMapId = 912020000; var eventTime = 2; //2 minutes -var lobbyRange = [0, 0]; +var lobbyRange = [0, 7]; function setLobbyRange() { return lobbyRange; diff --git a/scripts/event/4jship.js b/scripts/event/4jship.js index ddb0da2502..17f62c4454 100644 --- a/scripts/event/4jship.js +++ b/scripts/event/4jship.js @@ -30,7 +30,7 @@ var maxMapId = 912010200; var eventTime = 4; //4 minutes -var lobbyRange = [0, 0]; +var lobbyRange = [0, 7]; function setLobbyRange() { return lobbyRange; diff --git a/scripts/event/4jsuper.js b/scripts/event/4jsuper.js index 565d7c6f27..cffac5f48f 100644 --- a/scripts/event/4jsuper.js +++ b/scripts/event/4jsuper.js @@ -30,7 +30,7 @@ var maxMapId = 912010200; var eventTime = 4; //4 minutes -var lobbyRange = [0, 0]; +var lobbyRange = [0, 7]; function setLobbyRange() { return lobbyRange; diff --git a/scripts/event/Aran_2ndmount.js b/scripts/event/Aran_2ndmount.js index 1be6114b18..ce31cc64e5 100644 --- a/scripts/event/Aran_2ndmount.js +++ b/scripts/event/Aran_2ndmount.js @@ -31,7 +31,7 @@ var maxMapId = 921110000; var eventTime = 3; //3 minutes -var lobbyRange = [0, 0]; +var lobbyRange = [0, 7]; function setLobbyRange() { return lobbyRange; diff --git a/scripts/event/Aran_3rdmount.js b/scripts/event/Aran_3rdmount.js index 04e135d0b8..c5c5058fae 100644 --- a/scripts/event/Aran_3rdmount.js +++ b/scripts/event/Aran_3rdmount.js @@ -31,7 +31,7 @@ var maxMapId = 914030000; var eventTime = 3; //3 minutes -var lobbyRange = [0, 0]; +var lobbyRange = [0, 7]; function setLobbyRange() { return lobbyRange; diff --git a/scripts/event/BalrogQuest.js b/scripts/event/BalrogQuest.js index fcef456bf4..c69e05b521 100644 --- a/scripts/event/BalrogQuest.js +++ b/scripts/event/BalrogQuest.js @@ -31,7 +31,7 @@ var maxMapId = 910520000; var eventTime = 10; //10 minutes -var lobbyRange = [0, 0]; +var lobbyRange = [0, 7]; function setLobbyRange() { return lobbyRange; diff --git a/scripts/event/DelliBattle.js b/scripts/event/DelliBattle.js index ef3869e124..415521505c 100644 --- a/scripts/event/DelliBattle.js +++ b/scripts/event/DelliBattle.js @@ -35,7 +35,7 @@ var maxMapId = 925010300; var eventTime = 6; // 6 minutes -var lobbyRange = [0, 0]; +var lobbyRange = [0, 7]; function init() { setEventRequirements(); diff --git a/scripts/event/ElementalBattle.js b/scripts/event/ElementalBattle.js index 00a2a18dee..6a32a98b7b 100644 --- a/scripts/event/ElementalBattle.js +++ b/scripts/event/ElementalBattle.js @@ -36,7 +36,7 @@ var maxMapId = 922020100; var eventTime = 20; // 20 minutes -var lobbyRange = [0, 0]; +var lobbyRange = [0, 7]; function init() { setEventRequirements(); diff --git a/scripts/event/MahaBattle.js b/scripts/event/MahaBattle.js index 08698a3994..3d533e6740 100644 --- a/scripts/event/MahaBattle.js +++ b/scripts/event/MahaBattle.js @@ -33,7 +33,7 @@ var maxMapId = 914020000; var eventTime = 10; // 10 minutes -var lobbyRange = [0, 0]; +var lobbyRange = [0, 7]; function init() {} diff --git a/scripts/npc/2010007.js b/scripts/npc/2010007.js index b70d2ca93a..5ea75f4e3a 100644 --- a/scripts/npc/2010007.js +++ b/scripts/npc/2010007.js @@ -57,8 +57,10 @@ function action(mode, type, selection) { if (cm.getPlayer().getGuildId() < 1 || cm.getPlayer().getGuildRank() != 1) { cm.sendOk("You can only increase your Guild's capacity if you are the leader."); cm.dispose(); - } else - cm.sendYesNo("Increasing your Guild capacity by #b5#k costs #b " + cm.getPlayer().getGuild().getIncreaseGuildCost(cm.getPlayer().getGuild().getCapacity()) +" mesos#k, are you sure you want to continue?"); + } else { + var MapleGuild = Java.type("net.server.guild.MapleGuild"); // thanks Conrad for noticing an issue due to call on a static method here + cm.sendYesNo("Increasing your Guild capacity by #b5#k costs #b " + MapleGuild.getIncreaseGuildCost(cm.getPlayer().getGuild().getCapacity()) +" mesos#k, are you sure you want to continue?"); + } } } else if (status == 2) { if (sel == 0 && cm.getPlayer().getGuildId() <= 0) { diff --git a/scripts/npc/9201005.js b/scripts/npc/9201005.js index 354076b112..7e4006775b 100644 --- a/scripts/npc/9201005.js +++ b/scripts/npc/9201005.js @@ -21,6 +21,8 @@ Marriage NPC */ +importPackage(Packages.net.server.channel); + var status; var wid; var isMarrying; @@ -176,7 +178,7 @@ function action(mode, type, selection) { if(resStatus > 0) { cm.gainItem((weddingType) ? weddingEntryTicketPremium : weddingEntryTicketCommon, -1); - var expirationTime = cserv.getRelativeWeddingTicketExpireTime(resStatus); + var expirationTime = Channel.getRelativeWeddingTicketExpireTime(resStatus); cm.gainItem(weddingSendTicket,15,false,true,expirationTime); partner.getAbstractPlayerInteraction().gainItem(weddingSendTicket,15,false,true,expirationTime); @@ -251,7 +253,7 @@ function action(mode, type, selection) { if(cm.canHold(weddingSendTicket, 3)) { cm.gainItem(5251100, -1); - var expirationTime = cserv.getRelativeWeddingTicketExpireTime(resStatus); + var expirationTime = Channel.getRelativeWeddingTicketExpireTime(resStatus); cm.gainItem(weddingSendTicket,3,false,true,expirationTime); } else { cm.sendOk("Please have a free ETC slot available to get more invitations."); diff --git a/scripts/npc/9201008.js b/scripts/npc/9201008.js index b13337fc78..8d1813e23b 100644 --- a/scripts/npc/9201008.js +++ b/scripts/npc/9201008.js @@ -21,6 +21,8 @@ Marriage NPC */ +importPackage(Packages.net.server.channel); + var status; var wid; var isMarrying; @@ -176,7 +178,7 @@ function action(mode, type, selection) { if(resStatus > 0) { cm.gainItem((weddingType) ? weddingEntryTicketPremium : weddingEntryTicketCommon, -1); - var expirationTime = cserv.getRelativeWeddingTicketExpireTime(resStatus); + var expirationTime = Channel.getRelativeWeddingTicketExpireTime(resStatus); cm.gainItem(weddingSendTicket,15,false,true,expirationTime); partner.getAbstractPlayerInteraction().gainItem(weddingSendTicket,15,false,true,expirationTime); @@ -251,7 +253,7 @@ function action(mode, type, selection) { if(cm.canHold(weddingSendTicket, 3)) { cm.gainItem(5251100, -1); - var expirationTime = cserv.getRelativeWeddingTicketExpireTime(resStatus); + var expirationTime = Channel.getRelativeWeddingTicketExpireTime(resStatus); cm.gainItem(weddingSendTicket,3,false,true,expirationTime); } else { cm.sendOk("Please have a free ETC slot available to get more invitations."); diff --git a/scripts/npc/9201023.js b/scripts/npc/9201023.js index d654fed771..8e6326a9a2 100644 --- a/scripts/npc/9201023.js +++ b/scripts/npc/9201023.js @@ -99,14 +99,14 @@ function action(mode, type, selection) { if(status == 0) { if(!cm.isQuestStarted(100400)) { - cm.sendOk("Hello #b#h0##k, I'm #p9201001# the fairy of Love."); + cm.sendOk("Hello #b#h0##k, I'm #p9201023# the fairy of Love."); // thanks Periwinks (LuckyStory) for noticing Nana's introducing themselves as Nana (H) cm.dispose(); return; } nanaLoc = getNanaLocation(cm.getPlayer()); if(nanaLoc == -1) { - cm.sendOk("Hello #b#h0##k, I'm #p9201001# the fairy of Love."); + cm.sendOk("Hello #b#h0##k, I'm #p9201023# the fairy of Love."); cm.dispose(); return; } diff --git a/scripts/npc/9201024.js b/scripts/npc/9201024.js index d654fed771..271cf7a75b 100644 --- a/scripts/npc/9201024.js +++ b/scripts/npc/9201024.js @@ -99,14 +99,14 @@ function action(mode, type, selection) { if(status == 0) { if(!cm.isQuestStarted(100400)) { - cm.sendOk("Hello #b#h0##k, I'm #p9201001# the fairy of Love."); + cm.sendOk("Hello #b#h0##k, I'm #p9201024# the fairy of Love."); cm.dispose(); return; } nanaLoc = getNanaLocation(cm.getPlayer()); if(nanaLoc == -1) { - cm.sendOk("Hello #b#h0##k, I'm #p9201001# the fairy of Love."); + cm.sendOk("Hello #b#h0##k, I'm #p9201024# the fairy of Love."); cm.dispose(); return; } diff --git a/scripts/npc/9201025.js b/scripts/npc/9201025.js index d654fed771..d284706f18 100644 --- a/scripts/npc/9201025.js +++ b/scripts/npc/9201025.js @@ -99,14 +99,14 @@ function action(mode, type, selection) { if(status == 0) { if(!cm.isQuestStarted(100400)) { - cm.sendOk("Hello #b#h0##k, I'm #p9201001# the fairy of Love."); + cm.sendOk("Hello #b#h0##k, I'm #p9201025# the fairy of Love."); cm.dispose(); return; } nanaLoc = getNanaLocation(cm.getPlayer()); if(nanaLoc == -1) { - cm.sendOk("Hello #b#h0##k, I'm #p9201001# the fairy of Love."); + cm.sendOk("Hello #b#h0##k, I'm #p9201025# the fairy of Love."); cm.dispose(); return; } diff --git a/scripts/npc/9201026.js b/scripts/npc/9201026.js index d654fed771..48d97f52a3 100644 --- a/scripts/npc/9201026.js +++ b/scripts/npc/9201026.js @@ -99,14 +99,14 @@ function action(mode, type, selection) { if(status == 0) { if(!cm.isQuestStarted(100400)) { - cm.sendOk("Hello #b#h0##k, I'm #p9201001# the fairy of Love."); + cm.sendOk("Hello #b#h0##k, I'm #p9201026# the fairy of Love."); cm.dispose(); return; } nanaLoc = getNanaLocation(cm.getPlayer()); if(nanaLoc == -1) { - cm.sendOk("Hello #b#h0##k, I'm #p9201001# the fairy of Love."); + cm.sendOk("Hello #b#h0##k, I'm #p9201026# the fairy of Love."); cm.dispose(); return; } diff --git a/scripts/npc/9201027.js b/scripts/npc/9201027.js index d654fed771..e02f52039e 100644 --- a/scripts/npc/9201027.js +++ b/scripts/npc/9201027.js @@ -99,14 +99,14 @@ function action(mode, type, selection) { if(status == 0) { if(!cm.isQuestStarted(100400)) { - cm.sendOk("Hello #b#h0##k, I'm #p9201001# the fairy of Love."); + cm.sendOk("Hello #b#h0##k, I'm #p9201027# the fairy of Love."); cm.dispose(); return; } nanaLoc = getNanaLocation(cm.getPlayer()); if(nanaLoc == -1) { - cm.sendOk("Hello #b#h0##k, I'm #p9201001# the fairy of Love."); + cm.sendOk("Hello #b#h0##k, I'm #p9201027# the fairy of Love."); cm.dispose(); return; } diff --git a/scripts/npc/9977777.js b/scripts/npc/9977777.js index 06a5f714a5..a02e7870f6 100644 --- a/scripts/npc/9977777.js +++ b/scripts/npc/9977777.js @@ -75,6 +75,7 @@ function writeFeatureTab_Quests() { addFeature("Rewarding system now looks up for item stacking."); addFeature("3rd job quiz with all 40-question pool available."); addFeature("Item raising functional."); + addFeature("Cleared issue with player movement during NPC talk."); } function writeFeatureTab_PlayerSocialNetwork() { @@ -295,7 +296,7 @@ function writeAllFeatures() { feature_cursor = []; var tabName = (tabs[i]).replace(re, ""); - eval("writeFeatureTab_" + tabName)(); + this["writeFeatureTab_" + tabName](); feature_tree.push(feature_cursor); } diff --git a/scripts/portal/party3_jailin.js b/scripts/portal/party3_jailin.js index f4b107c220..64847fd211 100644 --- a/scripts/portal/party3_jailin.js +++ b/scripts/portal/party3_jailin.js @@ -1,46 +1,72 @@ importPackage(Packages.tools); -function enter(pi) { - var map = pi.getMap(); +var leverSequenceExit = false; + +function enterLeverSequence(pi) { + var map = pi.getMap(); - var jailn = (pi.getMap().getId() / 10) % 10; - var maxToggles = (jailn == 1) ? 7 : 6; - - var mapProp = pi.getEventInstance().getProperty("jail" + jailn); - - if(mapProp == null) { - var seq = 0; - - for(var i = 1; i <= maxToggles; i++) { - if(Math.random() < 0.5) seq += (1 << i); - } - - pi.getEventInstance().setProperty("jail" + jailn, seq); - mapProp = seq; + var jailn = (pi.getMap().getId() / 10) % 10; + var maxToggles = (jailn == 1) ? 7 : 6; + + var mapProp = pi.getEventInstance().getProperty("jail" + jailn); + + if(mapProp == null) { + var seq = 0; + + for(var i = 1; i <= maxToggles; i++) { + if(Math.random() < 0.5) seq += (1 << i); } - - mapProp = Number(mapProp); - if(mapProp != 0) { - var countMiss = 0; - for(var i = 1; i <= maxToggles; i++) { - if(!(pi.getMap().getReactorByName("lever" + i).getState() == (mapProp >> i) % 2)) { - countMiss++; - } + + pi.getEventInstance().setProperty("jail" + jailn, seq); + mapProp = seq; + } + + mapProp = Number(mapProp); + if(mapProp != 0) { + var countMiss = 0; + for(var i = 1; i <= maxToggles; i++) { + if(!(pi.getMap().getReactorByName("lever" + i).getState() == (mapProp >> i) % 2)) { + countMiss++; } - - if(countMiss > 0) { - map.broadcastMessage(MaplePacketCreator.showEffect("quest/party/wrong_kor")); - map.broadcastMessage(MaplePacketCreator.playSound("Party1/Failed")); - - pi.playerMessage(5, "The right combination of levers is needed to pass. " + countMiss + " lever(s) are misplaced."); - return false; - } - - map.broadcastMessage(MaplePacketCreator.showEffect("quest/party/clear")); - map.broadcastMessage(MaplePacketCreator.playSound("Party1/Clear")); - pi.getEventInstance().setProperty("jail" + jailn, "0"); } - + + if(countMiss > 0) { + map.broadcastMessage(MaplePacketCreator.showEffect("quest/party/wrong_kor")); + map.broadcastMessage(MaplePacketCreator.playSound("Party1/Failed")); + + pi.playerMessage(5, "The right combination of levers is needed to pass. " + countMiss + " lever(s) are misplaced."); + return false; + } + + map.broadcastMessage(MaplePacketCreator.showEffect("quest/party/clear")); + map.broadcastMessage(MaplePacketCreator.playSound("Party1/Clear")); + pi.getEventInstance().setProperty("jail" + jailn, "0"); + } + + pi.playPortalSound(); pi.warp(pi.getMapId() + 2,0); + return true; +} + +function enterNoMobs(pi) { + var map = pi.getMap(); + var mobcount = map.countMonster(9300044); + + if (mobcount > 0) { + pi.playerMessage(5, "Please use the levers to defeat all the threats before you proceed."); + return false; + } else { pi.playPortalSound(); pi.warp(pi.getMapId() + 2,0); return true; + } +} + +function enter(pi) { + var ret; + if (leverSequenceExit) { + ret = enterLeverSequence(pi); + } else { + ret = enterNoMobs(pi); + } + + return ret; } \ No newline at end of file diff --git a/scripts/quest/10940.js b/scripts/quest/10940.js index 67c8cc0408..6590a761e0 100644 --- a/scripts/quest/10940.js +++ b/scripts/quest/10940.js @@ -10,14 +10,15 @@ function start(mode, type, selection) { status++; else qm.dispose(); - if (status == 0) + if (status == 0) { qm.sendAcceptDecline("Hello, #h0#. Welcome to Maple World. It's currently event season, and we're welcome new characters with a gift. Would you like your gift now?"); - else if (status == 1) { + } else if (status == 1) { + qm.sendOk("Open your inventory and double-click on it! These gifts will make you look stylish. Oh, one more thing! You'll get another gift at level 30. Good luck!"); qm.forceStartQuest(); qm.forceCompleteQuest(); qm.gainItem(2430191, 1, true); - qm.sendOk("Open your inventory and double-click on it! These gifts will make you look stylish. Oh, one more thing! You'll get another gift at level 30. Good luck!"); - qm.dispose(); + } else if (status == 2) { + qm.dispose(); } } } \ No newline at end of file diff --git a/scripts/quest/20002.js b/scripts/quest/20002.js index fd11746411..8284cc250d 100644 --- a/scripts/quest/20002.js +++ b/scripts/quest/20002.js @@ -44,13 +44,16 @@ function start(mode, type, selection) { else if (status == 2) qm.sendAcceptDecline("Ah, I don't know if you are aware of this, but you won't find any monsters here in Ereve. Any form of evil will not be able to set foot on this island. Don't worry, you'll still have your opportunity to train here. Shinsoo created a fantasy creature called Mimi, which will be used as your training partners. Shall we begin?"); else if (status == 3) { + qm.forceStartQuest(); + qm.forceCompleteQuest(); + qm.gainExp(60); qm.gainItem(2000020, 10); // Red Potion for Noblesse * 10 qm.gainItem(2000021, 10); // Blue Potion for Noblesse * 10 qm.gainItem(1002869, 1); // Elegant Noblesse Hat * 1 + qm.sendOk("Ha, I like your enthusiasm, but you must prepare yourself for the training first before we start things off. Make sure that you are equipped with weapons, and that your skills are calibrated and ready to be used. I also gave you some potions, so have it ready just in case. Let me know when you're ready. You're going to wish that you didn't sign up to become a Cygnus Knight."); - qm.forceStartQuest(); - qm.forceCompleteQuest(); + } else if (status == 4) { qm.dispose(); } } diff --git a/scripts/quest/20008.js b/scripts/quest/20008.js index dca016c829..e5d7d9d617 100644 --- a/scripts/quest/20008.js +++ b/scripts/quest/20008.js @@ -34,17 +34,21 @@ function start(mode, type, selection) { if (mode < 1) { qm.dispose(); } - if (mode > 0) + else if (mode > 0) status++; if (status == 0) qm.sendSimple("Are you ready to take on a mission? If you can't pass this test, then you won't be able to call yourself a real Knight. Are you sure you can do this? If you are afraid to do this, let me know. I won't tell Neinheart. \r\n #L0#I'll try this later.#l \r\n #L1#I'm not afraid. Let's do this.#l"); - else if (selection == 0) { - qm.sendNext("If you call yourself a Knight, then do not hesitate. Show everyone how much courage you have in you."); + else if (status == 1) { + if (selection == 0) { + qm.sendNext("If you call yourself a Knight, then do not hesitate. Show everyone how much courage you have in you."); + qm.dispose(); + } else if (selection == 1) { + choice1 = selection; + qm.sendSimple("I'm glad you didn't run away, but... are you sure you want to become a Knight-in-Training? What I am asking is whether you're okay with being a Cygnus Knight, and therefore being tied to the Empress at all times? She may be an Empress, but she's also still just a kid. Are you sure you can fight for her? I won't let Neinheart know so just tell me what you really feel. \r\n #L2#If the Empress wants peace in the Maple World, then I'm down for whatever.#l \r\n #L3#As long as I can become a knight I'll endure whatever #l"); + qm.forceStartQuest(); + qm.forceCompleteQuest(); + } + } else if (status == 2) { qm.dispose(); - } else if (selection == 1) { - choice1 = selection; - qm.sendSimple("I'm glad you didn't run away, but... are you sure you want to become a Knight-in-Training? What I am asking is whether you're okay with being a Cygnus Knight, and therefore being tied to the Empress at all times? She may be an Empress, but she's also still just a kid. Are you sure you can fight for her? I won't let Neinheart know so just tell me what you really feel. \r\n #L2#If the Empress wants peace in the Maple World, then I'm down for whatever.#l \r\n #L3#As long as I can become a knight I'll endure whatever #l"); - qm.forceStartQuest(); - qm.forceCompleteQuest(); } } \ No newline at end of file diff --git a/scripts/quest/20016.js b/scripts/quest/20016.js index 770529ce08..9d6e0f1903 100644 --- a/scripts/quest/20016.js +++ b/scripts/quest/20016.js @@ -50,9 +50,10 @@ function start(mode, type, selection) { } else if (status == 11) { qm.sendNextPrev("But no one starts as a strong Knight on day one. The Empress didn't want someone strong. She wanted someone with courage whom she could develop into a strong Knight through rigorous training. So, you should first become a Knight-in-Training. We'll talk about your missions when you get to that point."); } else if (status == 12) { - qm.sendPrev("Take the portal on the left to reach the Training Forest. There, you will find #p1102000#, the Training Instructor, who will teach you how to become stronger. I don't want to find you wandering around aimlessly until you reach Lv. 10, you hear?"); qm.forceCompleteQuest(); - qm.dispose(); + qm.sendPrev("Take the portal on the left to reach the Training Forest. There, you will find #p1102000#, the Training Instructor, who will teach you how to become stronger. I don't want to find you wandering around aimlessly until you reach Lv. 10, you hear?"); + } else if (status == 13) { + qm.dispose(); } } diff --git a/scripts/quest/20100.js b/scripts/quest/20100.js index 883ac2875b..697eba843d 100644 --- a/scripts/quest/20100.js +++ b/scripts/quest/20100.js @@ -39,9 +39,11 @@ function start(mode, type, selection) { if (status == 0) qm.sendAcceptDecline("Ahhh, you're back. I can see that you're at level 10 now. It looks like you're flashing a glimmer of hope towards becoming a Knight. The basic training has now ended, and it's time for you to make the decision."); else if (status == 1) { - qm.sendOk("Now look to the left. The leaders of the Knights will be waiting for you. There will be 5 paths for you to choose from. All you need to do is choose one of them. All 5 of them will lead you to the path of a Knight, so... I suggest you pay attention to what each path offers, and select the one you'd most like to take."); qm.forceStartQuest(); qm.forceCompleteQuest(); + + qm.sendOk("Now look to the left. The leaders of the Knights will be waiting for you. There will be 5 paths for you to choose from. All you need to do is choose one of them. All 5 of them will lead you to the path of a Knight, so... I suggest you pay attention to what each path offers, and select the one you'd most like to take."); + } else if (status == 2) { qm.dispose(); } } \ No newline at end of file diff --git a/scripts/quest/20101.js b/scripts/quest/20101.js index 9af9d25a2f..5c4fb9ea9c 100644 --- a/scripts/quest/20101.js +++ b/scripts/quest/20101.js @@ -49,6 +49,7 @@ function end(mode, type, selection) { qm.sendNextPrev("Unlike your time as a Nobless, once you become the Dawn Warrior, you will lost a portion of your EXP when you run out of HP, okay?"); } else if (status == 5) { qm.sendNextPrev("Now... I want you to go out there and show the world how the Knights of Cygnus operate."); - qm.dispose(); + } else if (status == 6) { + qm.dispose(); } } \ No newline at end of file diff --git a/scripts/quest/20102.js b/scripts/quest/20102.js index cbdf5aee82..852b4d7337 100644 --- a/scripts/quest/20102.js +++ b/scripts/quest/20102.js @@ -49,6 +49,7 @@ function end(mode, type, selection) { qm.sendNextPrev("Unlike your time as a Nobless, once you become the Blaze Wizard, you will lost a portion of your EXP when you run out of HP, okay?"); } else if (status == 5) { qm.sendNextPrev("Now... I want you to go out there and show the world how the Knights of Cygnus operate."); - qm.dispose(); + } else if (status == 6) { + qm.dispose(); } } \ No newline at end of file diff --git a/scripts/quest/20103.js b/scripts/quest/20103.js index 9d603bf429..2c119025c2 100644 --- a/scripts/quest/20103.js +++ b/scripts/quest/20103.js @@ -50,6 +50,7 @@ function end(mode, type, selection) { qm.sendNextPrev("Unlike your time as a Nobless, once you become the Wind Archer, you will lost a portion of your EXP when you run out of HP, okay?"); } else if (status == 5) { qm.sendNextPrev("Now... I want you to go out there and show the world how the Knights of Cygnus operate."); - qm.dispose(); + } else if (status == 6) { + qm.dispose(); } } \ No newline at end of file diff --git a/scripts/quest/20104.js b/scripts/quest/20104.js index 232a97ad5d..3957ff6101 100644 --- a/scripts/quest/20104.js +++ b/scripts/quest/20104.js @@ -50,6 +50,7 @@ function end(mode, type, selection) { qm.sendNextPrev("Unlike your time as a Nobless, once you become the Night Walker, you will lost a portion of your EXP when you run out of HP, okay?"); } else if (status == 5) { qm.sendNextPrev("Now... I want you to go out there and show the world how the Knights of Cygnus operate."); - qm.dispose(); + } else if (status == 6) { + qm.dispose(); } } \ No newline at end of file diff --git a/scripts/quest/20105.js b/scripts/quest/20105.js index 6580c083c4..5d957edb9d 100644 --- a/scripts/quest/20105.js +++ b/scripts/quest/20105.js @@ -49,6 +49,7 @@ function end(mode, type, selection) { qm.sendNextPrev("Unlike your time as a Nobless, once you become the Thunder Breaker, you will lost a portion of your EXP when you run out of HP, okay?"); } else if (status == 5) { qm.sendNextPrev("Now... I want you to go out there and show the world how the Knights of Cygnus operate."); - qm.dispose(); + } else if (status == 6) { + qm.dispose(); } } \ No newline at end of file diff --git a/scripts/quest/20200.js b/scripts/quest/20200.js index a8e6afb236..a1a0752699 100644 --- a/scripts/quest/20200.js +++ b/scripts/quest/20200.js @@ -44,7 +44,9 @@ function start(mode, type, selection) { } else if (status == 1) { qm.startQuest(); qm.completeQuest(); + qm.sendOk("If you wish to take the Knighthood Exam, please come to Ereve. Each Chief Knight will test your abilities, and if you meet their standards, then you will officially become a Knight."); + } else if (status == 2) { qm.dispose(); } } diff --git a/scripts/quest/20311.js b/scripts/quest/20311.js index 31be876455..4075738092 100644 --- a/scripts/quest/20311.js +++ b/scripts/quest/20311.js @@ -48,19 +48,18 @@ function start(mode, type, selection) { nPSP = (qm.getPlayer().getLevel() - 70) * 3; if (qm.getPlayer().getRemainingSp() > nPSP) { qm.sendNext("You still have way too much #bSP#k with you. You can't earn a new title like that, I strongly urge you to use more SP on your 1st and 2nd level skills."); - qm.dispose(); } else { if (!qm.canHold(1142068)) { qm.sendNext("If you wish to receive the medal befitting the title, you may want to make some room in your equipment inventory."); - qm.dispose(); } else { + qm.completeQuest(); qm.gainItem(1142068, 1); qm.getPlayer().changeJob(Packages.client.MapleJob.DAWNWARRIOR3); qm.sendOk("#h #, as of this moment, you are an Advanced Knight. From this moment on, you shall carry yourself with dignity and respect befitting your new title, an Advanced Knight of Cygnus Knights. May your glory continue to shine as bright as this moment."); - qm.completeQuest(); - qm.dispose(); } } + } else if (status == 3) { + qm.dispose(); } } } \ No newline at end of file diff --git a/scripts/quest/20312.js b/scripts/quest/20312.js index 26458ea860..b562dea87e 100644 --- a/scripts/quest/20312.js +++ b/scripts/quest/20312.js @@ -48,20 +48,18 @@ function start(mode, type, selection) { nPSP = (qm.getPlayer().getLevel() - 70) * 3; if (qm.getPlayer().getRemainingSp() > nPSP) { qm.sendNext("You still have way too much #bSP#k with you. You can't earn a new title like that, I strongly urge you to use more SP on your 1st and 2nd level skills."); - qm.dispose(); } else { if (!qm.canHold(1142068)) { qm.sendNext("If you wish to receive the medal befitting the title, you may want to make some room in your equipment inventory."); - qm.dispose(); } else { + qm.completeQuest(); qm.gainItem(1142068, 1); qm.getPlayer().changeJob(Packages.client.MapleJob.BLAZEWIZARD3); qm.sendOk("#h #, as of this moment, you are an Advanced Knight. From this moment on, you will train yourself with fervor as you will lead your group of Knights for the safety of this world. That fervor will provide you with plenty of courage."); - qm.completeQuest(); - qm.dispose(); } } - + } else if (status == 3) { + qm.dispose(); } } } \ No newline at end of file diff --git a/scripts/quest/20313.js b/scripts/quest/20313.js index 73cb223242..58e7a89064 100644 --- a/scripts/quest/20313.js +++ b/scripts/quest/20313.js @@ -48,20 +48,18 @@ function start(mode, type, selection) { nPSP = (qm.getPlayer().getLevel() - 70) * 3; if (qm.getPlayer().getRemainingSp() > nPSP) { qm.sendNext("You still have way too much #bSP#k with you. You can't earn a new title like that, I strongly urge you to use more SP on your 1st and 2nd level skills."); - qm.dispose(); } else { if (!qm.canHold(1142068)) { qm.sendNext("If you wish to receive the medal befitting the title, you may want to make some room in your equipment inventory."); - qm.dispose(); } else { + qm.completeQuest(); qm.gainItem(1142068, 1); qm.getPlayer().changeJob(Packages.client.MapleJob.WINDARCHER3); qm.sendOk("#h #, as of this moment, you are an Advanced Knight. From this moment on, you will be carrying a while lot of responsibility befitting your new title as an Advanced Knight of Cygnus Knights. You may view the world in a carefree mode, but please remember what your mission is."); - qm.completeQuest(); - qm.dispose(); } } - + } else if (status == 3) { + qm.dispose(); } } } \ No newline at end of file diff --git a/scripts/quest/20314.js b/scripts/quest/20314.js index 17bb317317..be6c955c90 100644 --- a/scripts/quest/20314.js +++ b/scripts/quest/20314.js @@ -48,20 +48,18 @@ function start(mode, type, selection) { nPSP = (qm.getPlayer().getLevel() - 70) * 3; if (qm.getPlayer().getRemainingSp() > nPSP) { qm.sendNext("You still have way too much #bSP#k with you. You can't earn a new title like that, I strongly urge you to use more SP on your 1st and 2nd level skills."); - qm.dispose(); } else { if (!qm.canHold(1142068)) { qm.sendNext("If you wish to receive the medal befitting the title, you may want to make some room in your equipment inventory."); - qm.dispose(); } else { qm.gainItem(1142068, 1); qm.getPlayer().changeJob(Packages.client.MapleJob.NIGHTWALKER3); - qm.sendOk("#h #, from here on out, you are an Advanced Knight of Cygnus Knights. The title comes with a newfound broad view on everything. You may encounter temptations here and there, but I want you to keep your faith and beliefs intact and do not succumb to the darkness."); qm.completeQuest(); - qm.dispose(); + qm.sendOk("#h #, from here on out, you are an Advanced Knight of Cygnus Knights. The title comes with a newfound broad view on everything. You may encounter temptations here and there, but I want you to keep your faith and beliefs intact and do not succumb to the darkness."); } } - + } else if (status == 3) { + qm.dispose(); } } } \ No newline at end of file diff --git a/scripts/quest/20315.js b/scripts/quest/20315.js index 05b43e4c10..073fc6da8b 100644 --- a/scripts/quest/20315.js +++ b/scripts/quest/20315.js @@ -48,20 +48,18 @@ function start(mode, type, selection) { nPSP = (qm.getPlayer().getLevel() - 70) * 3; if (qm.getPlayer().getRemainingSp() > nPSP) { qm.sendNext("You still have way too much #bSP#k with you. You can't earn a new title like that, I strongly urge you to use more SP on your 1st and 2nd level skills."); - qm.dispose(); } else { if (!qm.canHold(1142068)) { qm.sendNext("If you wish to receive the medal befitting the title, you may want to make some room in your equipment inventory."); - qm.dispose(); } else { qm.gainItem(1142068, 1); qm.getPlayer().changeJob(Packages.client.MapleJob.THUNDERBREAKER3); - qm.sendOk("#h #, from here on out, you will become an Advanced Knight of the Knights of Cygnus! As your standing rises, so does the difficulty of the tasks you will be receiving. But challenge is good, right? You have to enjoy life. Enjoy what's given to you!"); qm.completeQuest(); - qm.dispose(); + qm.sendOk("#h #, from here on out, you will become an Advanced Knight of the Knights of Cygnus! As your standing rises, so does the difficulty of the tasks you will be receiving. But challenge is good, right? You have to enjoy life. Enjoy what's given to you!"); } } - + } else if (status == 3) { + qm.dispose(); } } } \ No newline at end of file diff --git a/scripts/quest/2034.js b/scripts/quest/2034.js index d123cc9aa0..37105e5b12 100644 --- a/scripts/quest/2034.js +++ b/scripts/quest/2034.js @@ -1,7 +1,6 @@ importPackage(Packages.client); var item; -var stance; var status = -1; var item; @@ -23,8 +22,7 @@ function end(mode, type, selection) { return; } - stance = qm.getPlayer().getJobStyle(); - + var stance = qm.getPlayer().getJobStyle(); if(stance == Packages.client.MapleJob.WARRIOR) item = 1072003; else if(stance == Packages.client.MapleJob.MAGICIAN) item = 1072077; else if(stance == Packages.client.MapleJob.BOWMAN || stance == Packages.client.MapleJob.CROSSBOWMAN) item = 1072081; @@ -34,11 +32,13 @@ function end(mode, type, selection) { qm.gainItem(item, 1); qm.gainItem(4000007, -150); - qm.gainExp(2200); qm.completeQuest(); qm.sendOk("Alright, if you need work sometime down the road, feel free to come back and see me. This town sure can use a person like you for help~"); + } + + else if (status == 2) { qm.dispose(); - } + } } \ No newline at end of file diff --git a/scripts/quest/20520.js b/scripts/quest/20520.js index e507450baf..6f1c5e193d 100644 --- a/scripts/quest/20520.js +++ b/scripts/quest/20520.js @@ -44,6 +44,7 @@ function start(mode, type, selection) { qm.forceStartQuest(); qm.forceCompleteQuest(); qm.sendOk("There's a special mount that only the Cygnus Knights can enjoy. If you are interested, visit #bEreve#k. I will give you more information on it."); - qm.dispose(); - } + } else if (status == 3) { + qm.dispose(); + } } \ No newline at end of file diff --git a/scripts/quest/20522.js b/scripts/quest/20522.js index e4e52c9894..862c2bf98f 100644 --- a/scripts/quest/20522.js +++ b/scripts/quest/20522.js @@ -54,6 +54,7 @@ function start(mode, type, selection) { qm.forceStartQuest(); if(!qm.haveItem(4220137)) qm.gainItem(4220137); qm.sendOk("Mimiana's egg can be raised by #bsharing your daily experiences with it#k. Once Mimiana fully grows up, please come see me."); + } else if (status == 4) { qm.dispose(); } } @@ -70,17 +71,15 @@ function end(mode, type, selection) { } else if (status == 1) { //pretty sure there would need to have an egg EXP condition... Whatever. if(!qm.haveItem(4220137)) { qm.sendOk("I see, you lost your egg... You need to be more careful when raising a baby Mimiana!"); - qm.dispose(); return; } - qm.sendOk("Oh, were you able to awaken Mimiana Egg? That's amazing... Most knights can't even dream of awakening it in such a short amount of time."); - - qm.forceCompleteQuest(); + qm.forceCompleteQuest(); qm.gainItem(4220137, -1); qm.gainExp(37600); - - qm.dispose(); + qm.sendOk("Oh, were you able to awaken Mimiana Egg? That's amazing... Most knights can't even dream of awakening it in such a short amount of time."); + } else if (status == 2) { + qm.dispose(); } } diff --git a/scripts/quest/20526.js b/scripts/quest/20526.js index 2b06a930dc..440581b89a 100644 --- a/scripts/quest/20526.js +++ b/scripts/quest/20526.js @@ -55,6 +55,7 @@ function start(mode, type, selection) { if(!qm.haveItem(4220137)) qm.gainItem(4220137); qm.sendOk("Mimiana's egg can be raised by #bsharing your daily experiences with it#k. Once Mimiana fully grows up, please come see me. One more thing, I talked with #p2060005# beforehand and retrieved the #b#t4032117##k for you. The price to charge remains the same: #r10,000,000 mesos#k."); + } else if (status == 4) { qm.dispose(); } } @@ -80,14 +81,13 @@ function end(mode, type, selection) { return; } - qm.sendOk("Okay, you now may mount Mimiana again. Take good care of it this time."); - + qm.forceCompleteQuest(); qm.gainItem(1902005, 1); qm.gainItem(4220137, -1); qm.gainMeso(-10000000); - - qm.forceCompleteQuest(); - qm.dispose(); + qm.sendOk("Okay, you now may mount Mimiana again. Take good care of it this time."); + } else if (status == 2) { + qm.dispose(); } } diff --git a/scripts/quest/20527.js b/scripts/quest/20527.js index feaf651d3a..b6ebc54198 100644 --- a/scripts/quest/20527.js +++ b/scripts/quest/20527.js @@ -38,12 +38,12 @@ function start(mode, type, selection) { var mount = qm.getPlayer().getMount(); if(mount != null && mount.getLevel() >= 3) { - qm.sendNext("Alright, I'll get you started in how to train Mimio, the next step for Mimianas. When you're ready, talk to me again."); qm.forceCompleteQuest(); + qm.sendNext("Alright, I'll get you started in how to train Mimio, the next step for Mimianas. When you're ready, talk to me again."); } else { qm.sendNext("It looks like your Mimiana haven't reached #rlevel 3#k yet. Please train it a bit more before trying to advance it."); } - + } else if (status == 1) { qm.dispose(); } } diff --git a/scripts/quest/20600.js b/scripts/quest/20600.js index 76a86566ed..cee458fe5e 100644 --- a/scripts/quest/20600.js +++ b/scripts/quest/20600.js @@ -9,7 +9,7 @@ function start(mode, type, selection) { if (status == 0) { qm.sendAcceptDecline("#h0#. Have you been slacking off on training since reaching Level 100? We all know how powerful you are, but the training is not complete. Take a look at these Knight Commanders. They train day and night, preparing themselves for the possible encounter with the Black Mage."); - } else { + } else if (status == 1) { if (mode == 1) { qm.forceStartQuest(); } diff --git a/scripts/quest/20610.js b/scripts/quest/20610.js index 3da0a28c20..3f15cbab65 100644 --- a/scripts/quest/20610.js +++ b/scripts/quest/20610.js @@ -14,8 +14,10 @@ function start(mode, type, selection) { qm.sendOk("Well, what you're doing right now doesn't make you look like someone that's humble. You just look complacent by doing that, and that's never a good thing."); } else { qm.forceStartQuest(); + qm.dispose(); } - qm.dispose(); + } else if (status == 2) { + qm.dispose(); } } diff --git a/scripts/quest/21011.js b/scripts/quest/21011.js index 4275db3e1e..736aea9078 100644 --- a/scripts/quest/21011.js +++ b/scripts/quest/21011.js @@ -48,8 +48,9 @@ function start(mode, type, selection) { } else if (status == 4) { qm.forceStartQuest(); qm.sendOk("My brother #bPuir #kis just down the street, and he's been dying to meet you! I know you're busy, but could you please stop by and say hello to Puir? Please..."); + } else if (status == 5) { qm.dispose(); - } + } } function end(mode, type, selection) { @@ -83,7 +84,7 @@ function end(mode, type, selection) { qm.sendNext("#b(Your skills are nowhere close to being hero-like... But a sword? Have you ever even held a sword in your lifetime? You can't remember... How do you even equip it?)", 3); }else qm.dropMessage(1,"Your inventory is full"); - } else if (status == 6) { + } else if (status == 6) { qm.guideHint(16); qm.dispose(); } diff --git a/scripts/quest/21012.js b/scripts/quest/21012.js index 644dab447f..6b1e391063 100644 --- a/scripts/quest/21012.js +++ b/scripts/quest/21012.js @@ -71,14 +71,16 @@ function end(mode, type, selection) { if(qm.isQuestCompleted(21012)) qm.dropMessage(1,"Unknown Error"); else if(qm.canHold(2000022) && qm.canHold(2000023)){ + qm.forceCompleteQuest(); qm.gainExp(57); qm.gainItem(2000022, 10); qm.gainItem(2000023, 10); - qm.forceCompleteQuest(); qm.sendOk("#b(Even if you're really the hero everyone says you are... What good are you without any skills?)", 3); - qm.dispose(); - }else + } else { qm.dropMessage(1,"Your inventory is full"); - qm.dispose(); + qm.dispose(); + } + } else if (status == 2) { + qm.dispose(); } } \ No newline at end of file diff --git a/scripts/quest/21013.js b/scripts/quest/21013.js index 700a6d6afc..ae758bccc5 100644 --- a/scripts/quest/21013.js +++ b/scripts/quest/21013.js @@ -73,7 +73,7 @@ function end(mode, type, selection) { qm.gainItem(4032309, -1); qm.gainItem(4032310, -1); qm.gainItem(3010062, 1); - qm.sendNextPrev("Here, a fully-assembled chair, just for you! I've always wanted to give you a chair as a gift, because I know a hero can occasionally use some good rest. Tee hee.", 9); + qm.sendNext("Here, a fully-assembled chair, just for you! I've always wanted to give you a chair as a gift, because I know a hero can occasionally use some good rest. Tee hee.", 9); } else if (status == 2) { qm.sendNext("A hero is not invincible. A hero is human. I'm sure you will face challenges and even falter at times. But you are a hero because you have what it takes to overcome any obstacles you may encounter.", 9); } else if (status == 3) { diff --git a/scripts/quest/21100.js b/scripts/quest/21100.js index 483bc4f160..475a81af99 100644 --- a/scripts/quest/21100.js +++ b/scripts/quest/21100.js @@ -31,6 +31,7 @@ function start(mode, type, selection) { qm.sendOk("If the #p1201001# reacts to you, then we'll know that you're #bAran#k, the hero that wielded a #p1201001#.", 8); qm.showIntro("Effect/Direction1.img/aranTutorial/ClickPoleArm"); } - qm.dispose(); - } + } else if (status == 8) { + qm.dispose(); + } } \ No newline at end of file diff --git a/scripts/quest/21200.js b/scripts/quest/21200.js index c034377a62..c7e7bb101d 100644 --- a/scripts/quest/21200.js +++ b/scripts/quest/21200.js @@ -35,6 +35,7 @@ function start(mode, type, selection) { qm.sendAcceptDecline("How is the training going? Wow, you've reached such a high level! That's amazing. I knew you would do just fine on Victoria Island... Oh, look at me. I'm wasting your time. I know you're busy, but you'll have to return to the island for a bit."); else if(status == 1){ qm.sendOk("Your #b#p1201001##k in #b#m140000000##k is acting strange all of a sudden. According to the records, the Polearm acts this way when it is calling for its master. #bPerhaps it's calling for you#k. Please return to the island and check things out."); + } else if(status == 2){ qm.startQuest(); qm.dispose(); } diff --git a/scripts/quest/21201.js b/scripts/quest/21201.js index 4d8f0f8d06..db80f5d8e1 100644 --- a/scripts/quest/21201.js +++ b/scripts/quest/21201.js @@ -60,7 +60,6 @@ function end(mode, type, selection) { if(!qm.isQuestCompleted(21201)) { if(!qm.canHold(1142130)) { qm.sendOk("Wow, your #bequip#k inventory is full. I need you to make at least 1 empty slot to complete this quest."); // thanks MedicOP for finding an issue here - qm.dispose(); return; } @@ -78,6 +77,7 @@ function end(mode, type, selection) { } qm.sendNext("Your level isn't what it used to be back in your glory days, so I can't restore all of your old abilities. But the few I can restore should help you level up faster. Now hurry up and train so you can return to the old you."); + } else if (status == 9) { qm.dispose(); } } diff --git a/scripts/quest/21202.js b/scripts/quest/21202.js index bddef9d732..4d0591fb01 100644 --- a/scripts/quest/21202.js +++ b/scripts/quest/21202.js @@ -42,7 +42,7 @@ function start(mode, type, selection) { qm.sendAcceptDecline("I'm too old to make weapons now, but.. I do have a Polearm that I made way back when. It's still in excellent shape. But I can't give it to you because that Polearm is extremely sharp, so sharp it could hurt its master. Do you still want it?"); } else if(status == 5) { qm.sendOk("Well, if you say so.. I can't object to that. I'll tell you what. I'll give you a quick test, and if you pass it, the Giant Polearm is yours. Head over to the #bTraining Center#k and take on the #rScarred Bears#k that are there. Your job is to bring back #b30 Sign of Acceptances#k."); - } else { + } else if(status == 6) { qm.startQuest(); qm.dispose(); } diff --git a/scripts/quest/2124.js b/scripts/quest/2124.js index 079a61dadb..451b5f4131 100644 --- a/scripts/quest/2124.js +++ b/scripts/quest/2124.js @@ -24,15 +24,30 @@ */ function end(mode, type, selection) { - - if(!qm.haveItem(4031619, 1)) { - qm.sendOk("Please bring me the box with the supplies that lies with #b#p2012019##k..."); + if (mode == -1) { + qm.dispose(); + } else { + if(mode == 0 && type > 0) { + qm.dispose(); + return; + } + + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + if(!qm.haveItem(4031619, 1)) { + qm.sendOk("Please bring me the box with the supplies that lies with #b#p2012019##k..."); + } + else { + qm.gainItem(4031619, -1); + qm.sendOk("Oh, you brought #p2012019#'s box! Thank you."); + qm.forceCompleteQuest(); + } + } else if (status == 1) { + qm.dispose(); + } } - else { - qm.gainItem(4031619, -1); - qm.sendOk("Oh, you brought #p2012019#'s box! Thank you."); - qm.forceCompleteQuest(); - } - - qm.dispose(); } \ No newline at end of file diff --git a/scripts/quest/2126.js b/scripts/quest/2126.js index 079a61dadb..451b5f4131 100644 --- a/scripts/quest/2126.js +++ b/scripts/quest/2126.js @@ -24,15 +24,30 @@ */ function end(mode, type, selection) { - - if(!qm.haveItem(4031619, 1)) { - qm.sendOk("Please bring me the box with the supplies that lies with #b#p2012019##k..."); + if (mode == -1) { + qm.dispose(); + } else { + if(mode == 0 && type > 0) { + qm.dispose(); + return; + } + + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + if(!qm.haveItem(4031619, 1)) { + qm.sendOk("Please bring me the box with the supplies that lies with #b#p2012019##k..."); + } + else { + qm.gainItem(4031619, -1); + qm.sendOk("Oh, you brought #p2012019#'s box! Thank you."); + qm.forceCompleteQuest(); + } + } else if (status == 1) { + qm.dispose(); + } } - else { - qm.gainItem(4031619, -1); - qm.sendOk("Oh, you brought #p2012019#'s box! Thank you."); - qm.forceCompleteQuest(); - } - - qm.dispose(); } \ No newline at end of file diff --git a/scripts/quest/2127.js b/scripts/quest/2127.js index 482e0fbdaf..822ace8788 100644 --- a/scripts/quest/2127.js +++ b/scripts/quest/2127.js @@ -24,8 +24,24 @@ */ function end(mode, type, selection) { - qm.sendOk("I see you're ready for the task. Now, pay heed to the details of your mission..."); - qm.forceCompleteQuest(); - - qm.dispose(); + if (mode == -1) { + qm.dispose(); + } else { + if(mode == 0 && type > 0) { + qm.dispose(); + return; + } + + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + qm.sendOk("I see you're ready for the task. Now, pay heed to the details of your mission..."); + qm.forceCompleteQuest(); + } else if (status == 1) { + qm.dispose(); + } + } } \ No newline at end of file diff --git a/scripts/quest/21300.js b/scripts/quest/21300.js index 002ea062f9..e0c454d612 100644 --- a/scripts/quest/21300.js +++ b/scripts/quest/21300.js @@ -11,13 +11,14 @@ function start(mode, type, selection) { return; } - if (status == 0) { - qm.sendNext("How's the training going? Hmmm... Level 70... That's still not much, but you have really made some strides since the first time I met you fresh out of ice. Keep training, and I am sure one day you'll be able to regain your pre-battle form."); + if (status == 0) { + qm.sendNext("How's the training going? Hmmm... Level 70... That's still not much, but you have really made some strides since the first time I met you fresh out of ice. Keep training, and I am sure one day you'll be able to regain your pre-battle form."); } else if (status == 1) { - qm.sendAcceptDecline("But before doing that, I'll need you back in Rein for a bit. #bYour pole arm is reacting strange once again. It looks like it has something it wants to tell you. #kIt might be able to awaken your hidden powers, so please come immediately."); - } else if (status == 2) { - qm.sendOk("Anyway, I thought it was really something that a weapon has its own identity, but seriously... this weapon does not stop talking. It first kept on crying because I wasn't really paying attention to its needs, and... ahh, please keep this a secret from the pole arm. I don't think it's a good idea to upset the weapon any further."); - qm.forceStartQuest(); - qm.dispose(); - } + qm.sendAcceptDecline("But before doing that, I'll need you back in Rein for a bit. #bYour pole arm is reacting strange once again. It looks like it has something it wants to tell you. #kIt might be able to awaken your hidden powers, so please come immediately."); + } else if (status == 2) { + qm.forceStartQuest(); + qm.sendOk("Anyway, I thought it was really something that a weapon has its own identity, but seriously... this weapon does not stop talking. It first kept on crying because I wasn't really paying attention to its needs, and... ahh, please keep this a secret from the pole arm. I don't think it's a good idea to upset the weapon any further."); + } else if (status == 3) { + qm.dispose(); + } } \ No newline at end of file diff --git a/scripts/quest/21301.js b/scripts/quest/21301.js index f09d16ba32..e9077098d6 100644 --- a/scripts/quest/21301.js +++ b/scripts/quest/21301.js @@ -24,8 +24,9 @@ function end(mode, type, selection) { } else if (status == 5) { qm.sendNextPrev("...No hope, no dreams... Nooooo!!"); } else if (status == 6) { - qm.sendNextPrev("#b(Maha is beginning to really get hysterical. I better leave right this minute. Maybe Lirin can do something about it.)", 2); qm.completeQuest(); - qm.dispose(); - } + qm.sendNextPrev("#b(Maha is beginning to really get hysterical. I better leave right this minute. Maybe Lilin can do something about it.)", 2); + } else if (status == 7) { + qm.dispose(); + } } \ No newline at end of file diff --git a/scripts/quest/21302.js b/scripts/quest/21302.js index 35556f9587..69a40ee7b7 100644 --- a/scripts/quest/21302.js +++ b/scripts/quest/21302.js @@ -59,6 +59,7 @@ function end(mode, type, selection) { } qm.sendNext("Come on, keep training so you can get all your abilities back, and that way we can explore together once more!"); + } else if (status == 3) { qm.dispose(); } } \ No newline at end of file diff --git a/scripts/quest/21400.js b/scripts/quest/21400.js index 363d87b00e..2caeb2de21 100644 --- a/scripts/quest/21400.js +++ b/scripts/quest/21400.js @@ -14,8 +14,9 @@ function start(mode, type, selection) { if (status == 0) { qm.sendAcceptDecline("How is the training going? I know you're busy, but please come to #bRien#k immediately. The #bMaha#k has started to act weird again... But its even weirder now. It's different from before. It's... darker than usual."); } else if (status == 1) { - qm.sendOk("I have a bad feeling about this. Please come back here. I've never seen or herd Maha like this, but I can sense the suffering its going through. #bOnly you, the master of Maha, can do something about it!"); - qm.startQuest(); - qm.dispose(); - } + qm.startQuest(); + qm.sendOk("I have a bad feeling about this. Please come back here. I've never seen or herd Maha like this, but I can sense the suffering its going through. #bOnly you, the master of Maha, can do something about it!"); + } else if (status == 2) { + qm.dispose(); + } } \ No newline at end of file diff --git a/scripts/quest/21401.js b/scripts/quest/21401.js index dea993fd17..600aaded9e 100644 --- a/scripts/quest/21401.js +++ b/scripts/quest/21401.js @@ -68,7 +68,9 @@ function end(mode, type, selection) { qm.completeQuest(); } qm.sendNext("Your skills have been restored. Those skills have been dormant for so long that you'll have to re-train yourself, but you'll be as good as new once you complete your training."); - } + } else if(status == 3) { + qm.dispose(); + } } function spawnMob(x, y, id, map) { diff --git a/scripts/quest/2148.js b/scripts/quest/2148.js index e333dafc56..58c7a3512e 100644 --- a/scripts/quest/2148.js +++ b/scripts/quest/2148.js @@ -1,9 +1,26 @@ var status = -1; function start(mode, type, selection) { - qm.sendNext("Some bats seems to accompany this tree wherever it goes. Creepy..."); - qm.forceCompleteQuest(); + if (mode == -1) { qm.dispose(); + } else { + if(mode == 0 && type > 0) { + qm.dispose(); + return; + } + + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + qm.sendNext("Some bats seems to accompany this tree wherever it goes. Creepy..."); + qm.forceCompleteQuest(); + } else if (status == 1) { + qm.dispose(); + } + } } function end(mode, type, selection) { qm.dispose(); diff --git a/scripts/quest/2149.js b/scripts/quest/2149.js index 9088a2d9cd..3e10046fd8 100644 --- a/scripts/quest/2149.js +++ b/scripts/quest/2149.js @@ -1,10 +1,28 @@ var status = -1; function start(mode, type, selection) { - qm.sendNext("It is said that a old tree gets alive whenever something sinister disturbs this land... We need a hero that fends our village of that creature!"); - qm.forceCompleteQuest(); + if (mode == -1) { qm.dispose(); + } else { + if(mode == 0 && type > 0) { + qm.dispose(); + return; + } + + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + qm.sendNext("It is said that a old tree gets alive whenever something sinister disturbs this land... We need a hero that fends our village of that creature!"); + qm.forceCompleteQuest(); + } else if (status == 1) { + qm.dispose(); + } + } } + function end(mode, type, selection) { qm.dispose(); } \ No newline at end of file diff --git a/scripts/quest/2150.js b/scripts/quest/2150.js index a7d30cf455..38cb1538d0 100644 --- a/scripts/quest/2150.js +++ b/scripts/quest/2150.js @@ -1,10 +1,28 @@ var status = -1; function start(mode, type, selection) { - qm.sendNext("The tree has a scarf upon its branches, I tell you."); - qm.forceCompleteQuest(); + if (mode == -1) { qm.dispose(); + } else { + if(mode == 0 && type > 0) { + qm.dispose(); + return; + } + + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + qm.sendNext("The tree has a scarf upon its branches, I tell you."); + qm.forceCompleteQuest(); + } else if (status == 1) { + qm.dispose(); + } + } } + function end(mode, type, selection) { qm.dispose(); } \ No newline at end of file diff --git a/scripts/quest/2151.js b/scripts/quest/2151.js index 49d470f73e..56facb7ee7 100644 --- a/scripts/quest/2151.js +++ b/scripts/quest/2151.js @@ -1,10 +1,28 @@ var status = -1; function start(mode, type, selection) { - qm.sendNext("The tree has a strange carving that resembles a scary face."); - qm.forceCompleteQuest(); + if (mode == -1) { qm.dispose(); + } else { + if(mode == 0 && type > 0) { + qm.dispose(); + return; + } + + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + qm.sendNext("The tree has a strange carving that resembles a scary face."); + qm.forceCompleteQuest(); + } else if (status == 1) { + qm.dispose(); + } + } } + function end(mode, type, selection) { qm.dispose(); } \ No newline at end of file diff --git a/scripts/quest/2152.js b/scripts/quest/2152.js index 845e647770..a8453cbc3c 100644 --- a/scripts/quest/2152.js +++ b/scripts/quest/2152.js @@ -1,10 +1,28 @@ var status = -1; function start(mode, type, selection) { - qm.sendNext("That tree... I've heard of it before, I even studied its behavior! If I recall correctly, the #bStumpy#k comes alive when the soil deems infertile by some sort of magic, and those stumps who evolves under these conditions starts to drain these suspicious magical sources instead of water and minerals for living, which makes them very threathening to people and villages nearby."); - qm.forceCompleteQuest(); + if (mode == -1) { qm.dispose(); + } else { + if(mode == 0 && type > 0) { + qm.dispose(); + return; + } + + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + qm.sendNext("That tree... I've heard of it before, I even studied its behavior! If I recall correctly, the #bStumpy#k comes alive when the soil deems infertile by some sort of magic, and those stumps who evolves under these conditions starts to drain these suspicious magical sources instead of water and minerals for living, which makes them very threathening to people and villages nearby."); + qm.forceCompleteQuest(); + } else if (status == 1) { + qm.dispose(); + } + } } + function end(mode, type, selection) { qm.dispose(); } \ No newline at end of file diff --git a/scripts/quest/21600.js b/scripts/quest/21600.js index 7d5f2e1c3d..f30354e46f 100644 --- a/scripts/quest/21600.js +++ b/scripts/quest/21600.js @@ -39,9 +39,9 @@ function start(mode, type, selection) { } else if (status == 1) { qm.sendAcceptDecline("Picked your interest, huh? Very well, first you must make your way to #bAqua#k, there is a person there who makes #rfood for wolf cubs#k. Bring one portion to me, and I shall deem you able to tame and take care of one. What do you say, will you try for it?"); } else if (status == 2) { - qm.sendNext("Alright. The one you must meet is #bNanuke#k, she is on top of a #rsnowy whale#k, somewhere in the ocean. Good luck!"); qm.forceStartQuest(); - + qm.sendNext("Alright. The one you must meet is #bNanuke#k, she is on top of a #rsnowy whale#k, somewhere in the ocean. Good luck!"); + } else if (status == 3) { qm.dispose(); } } diff --git a/scripts/quest/21613.js b/scripts/quest/21613.js index cc99db89f4..488aa7cef8 100644 --- a/scripts/quest/21613.js +++ b/scripts/quest/21613.js @@ -44,7 +44,6 @@ function start(mode, type, selection) { var em = qm.getEventManager("Aran_3rdmount"); if (em == null) { qm.sendOk("Sorry, but the 3rd mount quest (Wolves) is closed."); - qm.dispose(); return; } else { @@ -54,9 +53,9 @@ function start(mode, type, selection) { } else { qm.forceStartQuest(); } - - qm.dispose(); } + } else if (status == 4) { + qm.dispose(); } } } diff --git a/scripts/quest/21618.js b/scripts/quest/21618.js index 1f606ef1cd..fae1da010e 100644 --- a/scripts/quest/21618.js +++ b/scripts/quest/21618.js @@ -71,11 +71,12 @@ function end(mode, type, selection) { } qm.sendNext("Step aside, behold the mighty prowess of Maha!!"); - } else { + } else if (status == 1) { + qm.forceCompleteQuest(); + qm.gainItem(1902017, -1); qm.gainItem(1902018, 1); - qm.forceCompleteQuest(); qm.dispose(); } } diff --git a/scripts/quest/21700.js b/scripts/quest/21700.js index 4e4b8c233b..7157a1567e 100644 --- a/scripts/quest/21700.js +++ b/scripts/quest/21700.js @@ -33,8 +33,9 @@ function start(mode, type, selection) { qm.forceStartQuest(); } } else if (status == 6) { - qm.sendPrev("You'll find a Training Center if you exit to the #bleft#k. There, you'll meet #b#p1202006##k. I'm a bit worried because I think he may be struggling with bouts of Alzheimer's, but he spent a long time researching skills to help you. I'm sure you'll learn a thing or two from him."); - qm.dispose(); + qm.sendPrev("You'll find a Training Center if you exit to the #bleft#k. There, you'll meet #b#p1202006##k. I'm a bit worried because I think he may be struggling with bouts of Alzheimer's, but he spent a long time researching skills to help you. I'm sure you'll learn a thing or two from him."); + } else if (status == 7) { + qm.dispose(); } } diff --git a/scripts/quest/21703.js b/scripts/quest/21703.js index d6116bd8c2..380e6e59f7 100644 --- a/scripts/quest/21703.js +++ b/scripts/quest/21703.js @@ -35,6 +35,7 @@ function start(mode, type, selection) { } else if (status == 7) { qm.forceStartQuest(); qm.sendOk("Now go and take on those monstrous #o9300343#s!"); + } else if (status == 8) { qm.dispose(); } } @@ -70,6 +71,7 @@ function end(mode, type, selection) { qm.sendNext("(You remembered the #bCombo Ability#k skill! You were skeptical of the training at first, since the old man suffers from Alzheimer's and all, but boy, was it effective!)", 2); } else if (status == 4) { qm.sendPrev("Now report back to #p1201000#. I know she'll be ecstatic when she sees the progress you've made!"); + } else if (status == 5) { qm.dispose(); } } \ No newline at end of file diff --git a/scripts/quest/21712.js b/scripts/quest/21712.js index 28f43a1f02..8d4eb2b5a0 100644 --- a/scripts/quest/21712.js +++ b/scripts/quest/21712.js @@ -25,7 +25,8 @@ function start(mode, type, selection) { qm.sendNext("I wonder what triggered this in the first place. There is no way this puppet was naturally created, which means someone planned this. I should keep an eye on the #o1210102#s.", 9); } else if (status == 3) { qm.sendPrev("#b(You were able to find out what caused the changes in the #o1210102#s. You should report to #p1002104# and deliver the information you've gathered.)#k", 2); - qm.dispose(); + } else if (status == 4) { + qm.dispose(); } } diff --git a/scripts/quest/21728.js b/scripts/quest/21728.js index 4795cf915e..59ef6d5e4d 100644 --- a/scripts/quest/21728.js +++ b/scripts/quest/21728.js @@ -42,7 +42,7 @@ function end(mode, type, selection) { qm.gainExp(200); qm.forceCompleteQuest(); } - + } else if (status == 1) { qm.dispose(); } } diff --git a/scripts/quest/21733.js b/scripts/quest/21733.js index 5f00ad6dab..bba95c9621 100644 --- a/scripts/quest/21733.js +++ b/scripts/quest/21733.js @@ -61,7 +61,7 @@ function end(mode, type, selection) { qm.sendNext("Aran, thank you very much! Somehow the Puppeteer managed to bypass the security of Lith Harbor. He was trying to seek revenge because of the other day. Luckily, you came by. Nicely done!"); } else if(status == 1) { qm.sendNext("I will teach you the #rPolearm Mastery#k skill, to reward your actions here. You will be able to improve your accuracy and the overall mastery of your polearm arts."); - } else { + } else if(status == 2) { qm.gainExp(8000); qm.teachSkill(21100000, 0, 20, -1); // polearm mastery diff --git a/scripts/quest/21734.js b/scripts/quest/21734.js index a5fa4b7f96..2377d6db84 100644 --- a/scripts/quest/21734.js +++ b/scripts/quest/21734.js @@ -63,11 +63,12 @@ function end(mode, type, selection) { qm.sendNext("They were after the #bcrystal seal of Victoria#k. These seals are what repels the Black Mage to further taking the continents into his grasp at once. Each continent has one, Victoria's now is safe and sound."); } else if(status == 2) { qm.sendNext("For your bravery inputted on these series of missions, I will now reward you properly. Behold, the #rCombo Drain#k Skill: that let's you heal back a portion of damage dealt to the monsters."); - } else { + } else if(status == 3) { + qm.forceCompleteQuest(); + qm.gainExp(12500); qm.teachSkill(21100005, 0, 20, -1); // combo drain - qm.forceCompleteQuest(); qm.dispose(); } } diff --git a/scripts/quest/21736.js b/scripts/quest/21736.js index b9bda8727c..12be56e8a0 100644 --- a/scripts/quest/21736.js +++ b/scripts/quest/21736.js @@ -42,7 +42,7 @@ function start(mode, type, selection) { qm.sendNextPrev("It seems like something strange is happening in Orbis in Ossyria. It's a bit different from when we were dealing with the puppeteer, but my instincts tell me it has to do with the Black Wings. Please head over to Orbis."); } else if(status == 3) { qm.sendAcceptDecline("#bLisa the Fairy#k in Orbis should know a thing or two. Go see Lisa first, she knows someone that knows the whereabouts of the sealing stone. That person #rwill require a password from you#k, when requested use the #bThere's something strange going on in Orbis....#k keyword to talk to her. Understood?"); - } else { + } else if(status == 4) { qm.forceStartQuest(); qm.dispose(); } diff --git a/scripts/quest/21738.js b/scripts/quest/21738.js index 04eb91b521..fdb5bc4606 100644 --- a/scripts/quest/21738.js +++ b/scripts/quest/21738.js @@ -50,7 +50,7 @@ function start(mode, type, selection) { qm.sendAcceptDecline("I can't tell you about Sealed Garden. If you want to find out, I must first see whether you are worthy of the information. Do you mind if I look into your fate?", 9); } else if (status == 7) { qm.sendOk("Well, now let's look into your fate. Give me a second."); - } else { + } else if (status == 8) { qm.forceStartQuest(); qm.dispose(); } diff --git a/scripts/quest/21739.js b/scripts/quest/21739.js index 94f544f74f..a86b8aa286 100644 --- a/scripts/quest/21739.js +++ b/scripts/quest/21739.js @@ -36,9 +36,9 @@ function end(mode, type, selection) { if(status == 0) { qm.sendNext("So, have you defeated the giant? Oh, a Black Wing agent undercover? And he GOT THE SEAL STONE OF ORBIS?! Oh, no. That's horrible! We need to develop countermeasures as soon as possible! Tell the informant on Lith about the situation."); - } else { - qm.gainExp(29500); + } else if (status == 1) { qm.forceCompleteQuest(); + qm.gainExp(29500); qm.dispose(); } } diff --git a/scripts/quest/21740.js b/scripts/quest/21740.js index f5f4fd3b8a..e1800ca83e 100644 --- a/scripts/quest/21740.js +++ b/scripts/quest/21740.js @@ -61,10 +61,9 @@ function end(mode, type, selection) { qm.sendNext("Oh, hi #h0#! You won't believe what I just uncovered. It's one of your lost skills... What, the seal of Orbis got stolen by the Black Wings? Oh my..."); } else if(status == 1) { qm.sendNext("For now, let me teach you the #bCombo Smash#k, with it you will be able to deal massive amount of damage to many monsters at once. We will need to use it if we want to stand a chance against the Black Wings now, so don't forget it!"); - } else { - qm.teachSkill(21100004, 0, 20, -1); // combo smash - + } else if(status == 2) { qm.forceCompleteQuest(); + qm.teachSkill(21100004, 0, 20, -1); // combo smash qm.dispose(); } } diff --git a/scripts/quest/21741.js b/scripts/quest/21741.js index e591800988..25bebfd533 100644 --- a/scripts/quest/21741.js +++ b/scripts/quest/21741.js @@ -38,9 +38,9 @@ function start(mode, type, selection) { qm.sendNext("Have you been advancing your levels? I found an interesting piece of information about the Black Wings. This time, you'll have to travel quite a bit. Do you know a town called #bMu Lung#k? You'll have to head there."); } else if (status == 1) { qm.sendAcceptDecline("Apparently, #bMr. Do#k in Mu Lung somehow met with the Black Wings. I don't know the details. Please go and find out why the Black Wings contacted Mr. Do and what exactly happened between them."); - } else { + } else if (status == 2) { qm.sendNext("Mr. Do is known to be curt, so you are going to have to remain patient while talking to him. Talk to him with the #bI heard you met the Shadow Knight of the Black Wings#k keyword."); - + } else if (status == 3) { qm.forceStartQuest(); qm.dispose(); } diff --git a/scripts/quest/21749.js b/scripts/quest/21749.js index e628d27071..8d38167650 100644 --- a/scripts/quest/21749.js +++ b/scripts/quest/21749.js @@ -38,9 +38,9 @@ function start(mode, type, selection) { qm.sendNext("So we have lost #btwo seal stones#k so far, from the neighboring areas of #rOrbis#k and #rMu Lung#k... Things are starting to get out of control, it seems."); } else if (status == 1) { qm.sendNext("Aran, your next objective will be to use the #btime gate to Ellin#k again. This time you will be retrieving the long lost #rSeal Stone of Ellin Forest#k. According to informations our network have gathered, #b#p2131002##k of that time have a clue about that gem, #rfind her#k. Please be successful on this task, our world is relying on you more than ever!"); - } else { - qm.gainExp(500); + } else if (status == 2) { qm.forceCompleteQuest(); + qm.gainExp(500); qm.dispose(); } } diff --git a/scripts/quest/21750.js b/scripts/quest/21750.js index ea2dd7cd7f..b10b401ea3 100644 --- a/scripts/quest/21750.js +++ b/scripts/quest/21750.js @@ -36,7 +36,7 @@ function end(mode, type, selection) { if (status == 0) { qm.sendNext("Aran, you're finally back!!! How you've been doing? Where did you go for so long? We have so much to catch up..."); - } else { + } else if (status == 1) { qm.forceCompleteQuest(); qm.dispose(); } diff --git a/scripts/quest/21753.js b/scripts/quest/21753.js index e59a01ca8a..91e35ccce2 100644 --- a/scripts/quest/21753.js +++ b/scripts/quest/21753.js @@ -38,8 +38,8 @@ function start(mode, type, selection) { qm.sendNext("Aran, I've discovered some disturbing news... You said you've come from the eastern forest section, right? We traced and studied the magic being used to support the portal over there. It turns out that's of a #rtemporal#k-type. The garments you're using... They were never seen around before. That must mean, #ryou must have come from the future#k."); } else if (status == 1) { qm.sendNext("Now about the problem: the Seal Stone that seems to have been missing in your timeline... It is a powerful artifact, that prevents the army of the #rBlack Mage#k from laying siege on our world. If that stone goes away, nothing more can prevent him. As this is a matter of great importance, find the #rself of mine#k from the future. I'm actually a #rfairy#k with a great life expectancy, I must be alive even on your timeline. Got it, #rfetch the me from the future#k!"); + } else if (status == 2) { qm.forceStartQuest(); - qm.dispose(); } } diff --git a/scripts/quest/21757.js b/scripts/quest/21757.js index 71dcf57805..2f344bef33 100644 --- a/scripts/quest/21757.js +++ b/scripts/quest/21757.js @@ -36,11 +36,10 @@ function end(mode, type, selection) { if (status == 0) { qm.sendNext("Oh, a letter for the #rempress#k? From the #bheroes#k?!"); - } else { + } else if (status == 1) { + qm.forceCompleteQuest(); qm.gainExp(1000); qm.gainItem(4032330, -1); - qm.forceCompleteQuest(); - qm.dispose(); } } diff --git a/scripts/quest/21766.js b/scripts/quest/21766.js index 8c55c5323d..dbcbb141bc 100644 --- a/scripts/quest/21766.js +++ b/scripts/quest/21766.js @@ -10,14 +10,14 @@ function start(mode, type, selection) { qm.sendNext("I have a feeling there is a secret behind that wooden box. Could you stealthily look into the wooden box next to #p20000#?"); } else if (status == 3) { qm.sendNext("You know where #p20000# is, right? He's to the right. Just keep going until you see where Vikin is, then head down past the hanging shark and octopus, and you''ll see John. The box should be right next to him."); - } else { + } else if (status == 4) { qm.forceStartQuest(); qm.dispose(); } } function end(mode, type, selection) { - qm.gainExp(200); qm.forceCompleteQuest(); + qm.gainExp(200); qm.dispose(); } \ No newline at end of file diff --git a/scripts/quest/21767.js b/scripts/quest/21767.js index 5d8d774512..de63158d03 100644 --- a/scripts/quest/21767.js +++ b/scripts/quest/21767.js @@ -1,4 +1,5 @@ var status = -1; +var canStart; function start(mode, type, selection) { status++; @@ -8,12 +9,20 @@ function start(mode, type, selection) { qm.dispose(); return; } + + canStart = qm.canHold(4032423, 1); + if(!canStart) { + qm.sendNext("Please open a slot in your ETC inventory first."); + return; + } qm.sendNext("#bHm, there's a medicinal substance in the box. What could this be? You better take this to John and ask him what it is.#k"); - } else { - qm.gainItem(4032423,1); - - qm.forceStartQuest(); + } else if (status == 1) { + if(canStart) { + qm.gainItem(4032423,1); + qm.forceStartQuest(); + } + qm.dispose(); } } \ No newline at end of file diff --git a/scripts/quest/2186.js b/scripts/quest/2186.js index 5361dd9c9e..56ca1e0a38 100644 --- a/scripts/quest/2186.js +++ b/scripts/quest/2186.js @@ -4,37 +4,53 @@ */ function end(mode, type, selection){ - if(!qm.isQuestCompleted(2186)) { - if(qm.haveItem(4031853)){ - if(qm.canHold(2030019)) { - qm.gainItem(4031853, -1); - qm.gainExp(1700); - qm.gainItem(2030019, 10); + if (mode == -1) { + qm.dispose(); + } else { + if(mode == 0 && type > 0) { + qm.dispose(); + return; + } + + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + if(!qm.isQuestCompleted(2186)) { + if(qm.haveItem(4031853)){ + if(qm.canHold(2030019)) { + qm.gainItem(4031853, -1); + qm.gainExp(1700); + qm.gainItem(2030019, 10); - qm.sendOk("Geez, you found my glasses! Thank you, thank you so much. Now I'm able to see everything again!"); - qm.forceCompleteQuest(); - } - else { - qm.sendOk("I need you to have an USE slot available to reward you properly!"); - } - }else if(qm.haveItem(4031854) || qm.haveItem(4031855)){ //When I figure out how to make a completance with just a pickup xD - if(qm.canHold(2030019)) { - if(qm.haveItem(4031854)) - qm.gainItem(4031854, -1); - else - qm.gainItem(4031855, -1); - - qm.gainExp(1000); - qm.gainItem(2030019, 5); - - qm.sendOk("Hm, those aren't my glasses... But alas, I'll take it anyway. Thanks."); - qm.forceCompleteQuest(); - } - else { - qm.sendOk("I need you to have an USE slot available to reward you properly!"); + qm.sendOk("Geez, you found my glasses! Thank you, thank you so much. Now I'm able to see everything again!"); + qm.forceCompleteQuest(); + } + else { + qm.sendOk("I need you to have an USE slot available to reward you properly!"); + } + }else if(qm.haveItem(4031854) || qm.haveItem(4031855)){ //When I figure out how to make a completance with just a pickup xD + if(qm.canHold(2030019)) { + if(qm.haveItem(4031854)) + qm.gainItem(4031854, -1); + else + qm.gainItem(4031855, -1); + + qm.gainExp(1000); + qm.gainItem(2030019, 5); + + qm.sendOk("Hm, those aren't my glasses... But alas, I'll take it anyway. Thanks."); + qm.forceCompleteQuest(); + } + else { + qm.sendOk("I need you to have an USE slot available to reward you properly!"); + } + } } + } else if (status == 1) { + qm.dispose(); } } - - qm.dispose(); } \ No newline at end of file diff --git a/scripts/quest/2197.js b/scripts/quest/2197.js index 1f924c8e93..d2fa18169c 100644 --- a/scripts/quest/2197.js +++ b/scripts/quest/2197.js @@ -1,12 +1,46 @@ var status = -1; function start(mode, type, selection) { - qm.sendNext("Oh, you already have monster book. Good luck on your journey~!"); - qm.forceCompleteQuest(); - qm.dispose(); + if (mode == -1) { + qm.dispose(); + } else { + if(mode == 0 && type > 0) { + qm.dispose(); + return; + } + + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + qm.sendNext("Oh, you already have monster book. Good luck on your journey~!"); + } else if (status == 1) { + qm.forceCompleteQuest(); + qm.dispose(); + } + } } function end(mode, type, selection) { - qm.sendNext("Oh, you already have monster book. Good luck on your journey~!"); - qm.forceCompleteQuest(); - qm.dispose(); + if (mode == -1) { + qm.dispose(); + } else { + if(mode == 0 && type > 0) { + qm.dispose(); + return; + } + + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + qm.sendNext("Oh, you already have monster book. Good luck on your journey~!"); + } else if (status == 1) { + qm.forceCompleteQuest(); + qm.dispose(); + } + } } \ No newline at end of file diff --git a/scripts/quest/22001.js b/scripts/quest/22001.js index d869634657..98ce206ec0 100644 --- a/scripts/quest/22001.js +++ b/scripts/quest/22001.js @@ -25,7 +25,8 @@ function start(mode, type, selection) { qm.sendNext("Hurry up and head #bleft#k to feed #b#p1013102##k. He's been barking to be fed all morning."); } } else if (status == 4) { - qm.sendPrev("Feed #p1013102# and come back to see me."); - qm.dispose(); - } + qm.sendNextPrev("Feed #p1013102# and come back to see me."); + } else if (status == 5) { + qm.dispose(); + } } \ No newline at end of file diff --git a/scripts/quest/22002.js b/scripts/quest/22002.js index 0ab83b73d6..d759a4ec9b 100644 --- a/scripts/quest/22002.js +++ b/scripts/quest/22002.js @@ -40,10 +40,10 @@ function end(mode, type, selection) { if (status == 0) { qm.sendNext("Did you eat your breakfast, Evan? Then, will you do me a favor? \r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0# \r\n#i1003028# 1 #t1003028# \r\n#i2022621# 5 #t2022621#s \r\n#i2022622# 5 #t2022622# \r\n#fUI/UIWindow.img/QuestIcon/8/0# 60 exp"); } else if (status == 1) { - qm.gainItem(1003028, 1, true); + qm.forceCompleteQuest(); + qm.gainItem(1003028, 1, true); qm.gainItem(2022621, 5, true); qm.gainItem(2022622, 5, true); - qm.forceCompleteQuest(); qm.gainExp(60); qm.sendImage("UI/tutorial/evan/4/0"); qm.dispose(); diff --git a/scripts/quest/22007.js b/scripts/quest/22007.js index 9ecdb28ade..19519e5236 100644 --- a/scripts/quest/22007.js +++ b/scripts/quest/22007.js @@ -22,6 +22,7 @@ function end(mode, type, selection) { qm.gainExp(360); qm.sendImage("UI/tutorial/evan/9/0"); } - qm.dispose(); - } + } else if (status == 3) { + qm.dispose(); + } } \ No newline at end of file diff --git a/scripts/quest/22008.js b/scripts/quest/22008.js index b59b031a8a..cf5431dadd 100644 --- a/scripts/quest/22008.js +++ b/scripts/quest/22008.js @@ -69,6 +69,7 @@ function end(mode, type, selection) { qm.sendNextPrev("#bThis is a weapon that Magicians use. It's a Wand#k. You probably won't really need it, but it'll make you look important if you carry it around. Hahahahaha."); } else if (status == 13) { qm.sendPrev("Anyway, the Foxes have increased, right? How weird is that? Why are they growing day by day? We should really look into it and get to the bottom of this."); - qm.dispose(); - } + } else if (status == 14) { + qm.dispose(); + } } \ No newline at end of file diff --git a/scripts/quest/2214.js b/scripts/quest/2214.js index e76ce9d2ef..c4b5952089 100644 --- a/scripts/quest/2214.js +++ b/scripts/quest/2214.js @@ -26,6 +26,7 @@ */ var status = -1; +var canComplete; function end(mode, type, selection) { if (mode == -1) { @@ -45,20 +46,24 @@ function end(mode, type, selection) { var hourDay = qm.getHourOfDay(); if(!(hourDay >= 17 && hourDay < 20)) { qm.sendNext("(Hmm, I'm searching the trash can but can't find the #t4031894# JM was talking about, maybe it's not time yet...)"); - qm.dispose(); + canComplete = false; return; } if(!qm.canHold(4031894, 1)) { qm.sendNext("(Eh, I can't hold the #t4031894# right now, I need an ETC slot available.)"); - qm.dispose(); + canComplete = false; return; } + canComplete = true; qm.sendNext("(Ah, there is a crumbled note here... Hm, it contains details about some scheme that is about to happen, that must be what #r#p1052002##k was talking about.)"); - qm.gainItem(4031894, 1); - qm.gainExp(20000); - qm.forceCompleteQuest(); + } else if (status == 1) { + if (canComplete) { + qm.forceCompleteQuest(); + qm.gainItem(4031894, 1); + qm.gainExp(20000); + } qm.dispose(); } diff --git a/scripts/quest/2215.js b/scripts/quest/2215.js index 4f0070edbe..e486d74797 100644 --- a/scripts/quest/2215.js +++ b/scripts/quest/2215.js @@ -26,6 +26,7 @@ */ var status = -1; +var canComplete; function end(mode, type, selection) { if (mode == -1) { @@ -45,26 +46,30 @@ function end(mode, type, selection) { var hourDay = qm.getHourOfDay(); if(!(hourDay >= 17 && hourDay < 20)) { qm.sendNext("(Hmm, I'm searching the trash can but can't find the #t4031894# JM was talking about, maybe it's not time yet...)"); - qm.dispose(); + canComplete = false; return; } if(qm.getMeso() < 2000) { qm.sendNext("(Oh, I don't have the combined fee amount yet.)"); - qm.dispose(); + canComplete = false; return; } if(!qm.canHold(4031894, 1)) { qm.sendNext("(Eh, I can't hold the #t4031894# right now, I need an ETC slot available.)"); - qm.dispose(); + canComplete = false; return; } + canComplete = true; qm.sendNext("(Alright, now I will deposit the fee there and get the paper... That's it, yea, that's done.)"); - qm.gainItem(4031894, 1); - qm.gainMeso(-2000); - qm.forceCompleteQuest(); + } else if (status == 1) { + if (canComplete) { + qm.gainMeso(-2000); + qm.forceCompleteQuest(); + qm.gainItem(4031894, 1); + } qm.dispose(); } diff --git a/scripts/quest/2216.js b/scripts/quest/2216.js index 0816921512..68f56e27fd 100644 --- a/scripts/quest/2216.js +++ b/scripts/quest/2216.js @@ -36,8 +36,9 @@ function start(mode, type, selection) { if (status == 0) { qm.sendNext("I've just gathered an interesting information, #rDyle looks just like regular Ligators#k, but bigger."); - qm.gainExp(7000); + } else if (status == 1) { qm.forceCompleteQuest(); + qm.gainExp(7000); if(isAllSubquestsDone() && qm.haveItem(4031894)) { qm.gainItem(4031894, -1); diff --git a/scripts/quest/2217.js b/scripts/quest/2217.js index 72b4e81f33..c2dbd7b7db 100644 --- a/scripts/quest/2217.js +++ b/scripts/quest/2217.js @@ -36,8 +36,9 @@ function start(mode, type, selection) { if (status == 0) { qm.sendNext("Hey, did you notice already, it looks like some awful stench is emanating from the sewers... Ewww"); - qm.gainExp(7000); + } else if (status == 1) { qm.forceCompleteQuest(); + qm.gainExp(7000); if(isAllSubquestsDone() && qm.haveItem(4031894)) { qm.gainItem(4031894, -1); diff --git a/scripts/quest/2218.js b/scripts/quest/2218.js index 80d8ee7748..7e1c47dcd0 100644 --- a/scripts/quest/2218.js +++ b/scripts/quest/2218.js @@ -36,8 +36,9 @@ function start(mode, type, selection) { if (status == 0) { qm.sendNext("Hey did you see how strange #rLakelis#k has been acting these days? We should see what's going on aabout her, her actions have been so weird lately..."); - qm.gainExp(7000); + } else if (status == 1) { qm.forceCompleteQuest(); + qm.gainExp(7000); if(isAllSubquestsDone() && qm.haveItem(4031894)) { qm.gainItem(4031894, -1); diff --git a/scripts/quest/2219.js b/scripts/quest/2219.js index ee04b77db9..2a8730e351 100644 --- a/scripts/quest/2219.js +++ b/scripts/quest/2219.js @@ -36,8 +36,9 @@ function start(mode, type, selection) { if (status == 0) { qm.sendNext("Did you know, they say someone from the sewers has been trying to #rdevelop a magic powder that let's one to grow#k, isn't that nice?"); - qm.gainExp(7000); + } else if (status == 1) { qm.forceCompleteQuest(); + qm.gainExp(7000); if(isAllSubquestsDone() && qm.haveItem(4031894)) { qm.gainItem(4031894, -1); diff --git a/scripts/quest/2228.js b/scripts/quest/2228.js index fe7a66086c..d7e9826d26 100644 --- a/scripts/quest/2228.js +++ b/scripts/quest/2228.js @@ -36,10 +36,9 @@ function start(mode, type, selection) { if (status == 0) { qm.sendNext("Thank you for defeating #rFaust#k. That will finally settle my spirit to rest."); - } else { - qm.gainFame(8); - + } else if (status == 1) { qm.forceCompleteQuest(); + qm.gainFame(8); qm.dispose(); } } diff --git a/scripts/quest/2230.js b/scripts/quest/2230.js index 7aa7e5d5f9..2da466673c 100644 --- a/scripts/quest/2230.js +++ b/scripts/quest/2230.js @@ -28,6 +28,7 @@ */ var status = -1; +var canComplete; function start(mode, type, selection) { if (mode == -1) { @@ -45,6 +46,8 @@ function start(mode, type, selection) { qm.sendOk("Put your hand in your pocket. I think your friend has already found you.\r\nThe purple bellflower that soaks in the sun in between the skyscraping trees...Follow the path to the unknown that leads you to the bellflower. I will wait for you here."); qm.forceStartQuest(); qm.gainItem(4032086, 1); // Mysterious Egg * 1 + } else if (status == 3) { + qm.dispose(); } } } @@ -76,11 +79,20 @@ function end(mode, type, selection) { } else if (status == 5) { qm.sendYesNo("Now do you understand? Every action comes with consequences, and pets are no exception. The egg of the snail shall hatch soon."); } else if (status == 6) { - qm.gainItem(5000054, 1, false, true, 5 * 60 * 60 * 1000); // rune snail (5hrs), missing expiration time detected thanks to cljnilsson + canComplete = qm.canHold(5000054, 1); + if (!canComplete) { + qm.sendNext("Please free a slot in your CASH inventory before you try to receive the pet..."); + return; + } - qm.gainItem(4032086, -1); // Mysterious Egg * -1 - qm.forceCompleteQuest(); qm.sendNext("This snail will only be alive for #b5 hours#k. Shower it with love. Your love will be reciprocated in the end."); + } else if (status == 7) { + if (canComplete) { + qm.gainItem(4032086, -1); // Mysterious Egg * -1 + qm.forceCompleteQuest(); + qm.gainItem(5000054, 1, false, true, 5 * 60 * 60 * 1000); // rune snail (5hrs), missing expiration time detected thanks to cljnilsson + } + qm.dispose(); } } diff --git a/scripts/quest/2236.js b/scripts/quest/2236.js index e460077dd0..41e90b07a0 100644 --- a/scripts/quest/2236.js +++ b/scripts/quest/2236.js @@ -8,6 +8,7 @@ Version 1.0 - Script Done.(20/3/2017) */ var status = -1; +var canStart; function start(mode, type, selection) { status++; @@ -16,20 +17,28 @@ function start(mode, type, selection) { status -= 2; else{ qm.sendOk("If we don't place these Charms on the Shaman Rocks, evil might awaken..."); - qm.dispose(); + canStart = false; + status = 0; return; } } - if (status == 0) + if (status == 0) { qm.sendAcceptDecline("I can feel the forces of evil. They're deep inside the dungeon and they're very, very powerful. If we want to drive the evil away from this place, we must place Charms on the Shaman Rocks inside the dungeon. Will you do that for me?"); - if (status == 1){ - if(qm.haveItem(4032263)) qm.gainItem(4032263, -6); + canStart = true; + } else if (status == 1) { + if (canStart) { + qm.sendOk("Take these Charms and place them on the Shaman Rocks in the dungeon. I'm giving you a total of 6 Charms."); + } else { + qm.dispose(); + } + } else { + qm.forceStartQuest(); + + if(qm.haveItem(4032263)) qm.gainItem(4032263, -6); qm.gainItem(4032263, 6); - - qm.sendOk("Take these Charms and place them on the Shaman Rocks in the dungeon. I'm giving you a total of 6 Charms."); - qm.forceStartQuest(); + qm.dispose(); - } + } } function end(mode, type, selection) { @@ -48,7 +57,7 @@ function end(mode, type, selection) { qm.sendOk("Oh, not good. I still sense bad omens coming from the interior. Here, take these charms and seal them at the Shaman Rocks. We are counting on you."); qm.updateQuest(2236, 0); } - + } else if (status == 1) { qm.dispose(); - } + } } \ No newline at end of file diff --git a/scripts/quest/2245.js b/scripts/quest/2245.js index f5d503c153..2007688819 100644 --- a/scripts/quest/2245.js +++ b/scripts/quest/2245.js @@ -38,7 +38,6 @@ function start(mode, type, selection) { em = qm.getEventManager("BalrogQuest"); if (em == null) { qm.sendOk("Sorry, but the BalrogQuest is closed."); - qm.dispose(); return; } @@ -47,8 +46,9 @@ function start(mode, type, selection) { qm.sendOk("There is currently someone in this map, come back later."); } else { qm.forceStartQuest(); + qm.dispose(); } - + } else if (status == 1) { qm.dispose(); } } diff --git a/scripts/quest/22501.js b/scripts/quest/22501.js index 129d3d1e9c..e329b8d49c 100644 --- a/scripts/quest/22501.js +++ b/scripts/quest/22501.js @@ -20,11 +20,11 @@ function start(mode, type, selection) { } else if (status == 4) { if (mode == 0) { qm.sendNext("*gasp* How can you refuse to feed your Dragon? This is child abuse! "); - qm.dispose(); } else { qm.forceStartQuest(); qm.sendOk("#b#b(#p1013000# the baby Dragon appears to be extremely hungry. You must feed him. Maybe your Dad can give you advice on what dragons eat.)"); - qm.dispose(); } - } + } else if (status == 5) { + qm.dispose(); + } } \ No newline at end of file diff --git a/scripts/quest/22502.js b/scripts/quest/22502.js index af95553b7a..6abcf2a1c6 100644 --- a/scripts/quest/22502.js +++ b/scripts/quest/22502.js @@ -18,6 +18,6 @@ function start(mode, type, selection) { qm.forceStartQuest(); qm.sendImage("UI/tutorial/evan/12/0"); } - qm.dispose(); - } -} \ No newline at end of file + qm.dispose(); + } +} diff --git a/scripts/quest/22503.js b/scripts/quest/22503.js index 851808fa56..b1f931d2ba 100644 --- a/scripts/quest/22503.js +++ b/scripts/quest/22503.js @@ -22,6 +22,7 @@ function start(mode, type, selection) { qm.forceStartQuest(); qm.sendNext("#b#b(Try giving #p1013000# some #t4032453#. You have to hunt a few #o1210100#s at the farm. Ten should be plenty...)"); } - qm.dispose(); - } + } else if (status == 4) { + qm.dispose(); + } } \ No newline at end of file diff --git a/scripts/quest/22504.js b/scripts/quest/22504.js index 118850099d..a77be2beb5 100644 --- a/scripts/quest/22504.js +++ b/scripts/quest/22504.js @@ -22,5 +22,7 @@ function start(mode, type, selection) { qm.forceStartQuest(); qm.sendNext("#b#b(You already asked Dad once, but you don't have any better ideas. Time to ask him again!)"); } - } + } else if (status == 4) { + qm.dispose(); + } } \ No newline at end of file diff --git a/scripts/quest/22507.js b/scripts/quest/22507.js index 8e3319f496..bbd890fb0e 100644 --- a/scripts/quest/22507.js +++ b/scripts/quest/22507.js @@ -53,6 +53,7 @@ function start(mode, type, selection) { qm.sendNextPrev("#b(You're a bit confused, but you are now traveling with Mir the Dragon. Perhaps you'll go on an adventure together, like he said.)", 2); } else if (status == 17) { qm.sendPrev("#b#b(You still have an errand to run. Your dad needs to talk to you, so go and see him now.)"); - qm.dispose(); - } + } else if (status == 18) { + qm.dispose(); + } } \ No newline at end of file diff --git a/scripts/quest/2251.js b/scripts/quest/2251.js index 31b5cbf4f0..0eea0dc779 100644 --- a/scripts/quest/2251.js +++ b/scripts/quest/2251.js @@ -6,16 +6,31 @@ */ function end(mode, type, selection) { - - if(!qm.haveItem(4032399, 20)) { - qm.sendOk("Please bring me 20 #b#t4032399##k... #i4032399#"); + if (mode == -1) { + qm.dispose(); + } else { + if(mode == 0 && type > 0) { + qm.dispose(); + return; + } + + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + if(!qm.haveItem(4032399, 20)) { + qm.sendOk("Please bring me 20 #b#t4032399##k... #i4032399#"); + } + else { + qm.gainItem(4032399, -20); + qm.sendOk("Oh, you brought 20 #b#t4032399##k! Thank you."); + qm.gainExp(8000); + qm.forceCompleteQuest(); + } + } else if (status == 1) { + qm.dispose(); + } } - else { - qm.gainItem(4032399, -20); - qm.sendOk("Oh, you brought 20 #b#t4032399##k! Thank you."); - qm.gainExp(8000); - qm.forceCompleteQuest(); - } - - qm.dispose(); } \ No newline at end of file diff --git a/scripts/quest/2257.js b/scripts/quest/2257.js index 94a483926f..f21d36115f 100644 --- a/scripts/quest/2257.js +++ b/scripts/quest/2257.js @@ -36,7 +36,7 @@ function end(mode, type, selection) { if (status == 0) { qm.sendNext("Hey there, do you want a ride to #r#m261000000##k? Oh a request from #b#p2101013##k?"); - } else { + } else if (status == 1) { qm.forceCompleteQuest(); qm.dispose(); } diff --git a/scripts/quest/2258.js b/scripts/quest/2258.js index 78ae395217..8f2d5f0903 100644 --- a/scripts/quest/2258.js +++ b/scripts/quest/2258.js @@ -38,7 +38,7 @@ function start(mode, type, selection) { qm.sendAcceptDecline("Meerkats spreads rumors like wildfire... By blackmailing me and my cab service, they are taking costumers away from me day after day... Hey, tell no one about this, if you clean some #rMeerkats#k from my way, I'll tell you an info about the #rMushroom Castle#k. What do you say?"); } else if (status == 1) { qm.sendNext("Great, they you have #r5 minutes#k to kill #b40 Meerkats#k within this time. Good luck!"); - } else { + } else if (status == 2) { qm.forceStartQuest(); qm.dispose(); } @@ -61,7 +61,7 @@ function end(mode, type, selection) { if (status == 0) { qm.sendNext("You did it! ... Hey, #rMeerkats#k around here may listen to our conversation. I'm not going to talk about THAT right now."); - } else { + } else if (status == 1) { qm.forceCompleteQuest(); qm.dispose(); } diff --git a/scripts/quest/2259.js b/scripts/quest/2259.js index ac59e7278f..783dfc5cf5 100644 --- a/scripts/quest/2259.js +++ b/scripts/quest/2259.js @@ -60,13 +60,12 @@ function end(mode, type, selection) { if (status == 0) { if(qm.getMapId() == 260020000) { qm.sendNext("Eh you're still here? To reach #b#m260020700##k, follow #reast#k from here until you reach #rMagatia#k, I will be there. Now go."); - qm.dispose(); return; } qm.sendNext("Oh there you are. There're no Meerkat's nearby, so there probably is no eavesdropping around here. Very well, you must be fit to go to the #rMushroom Castle#k. Talk to me once you've got #blevel 30#k."); - } else { qm.forceCompleteQuest(); + } else if (status == 1) { qm.dispose(); } } diff --git a/scripts/quest/2260.js b/scripts/quest/2260.js index 0603161acd..4c196cdf26 100644 --- a/scripts/quest/2260.js +++ b/scripts/quest/2260.js @@ -38,7 +38,7 @@ function start(mode, type, selection) { if (status == 0) { qm.sendNext("Once you've got #b2nd job advancement#k, I'll tell you about the #bMushroom Castle#k."); - } else { + } else if (status == 1) { qm.forceStartQuest(); qm.dispose(); } @@ -67,8 +67,8 @@ function end(mode, type, selection) { } qm.sendNext("Okay you seem ready to go to the #bMushroom Castle#k. In #rHenesys#k, climb at the tree fort at #bwest#k then enter a portal over there. On the other area, #rgo west#k. From there, a portal will be readily available to access the #bMushroom Castle#k area."); - } else { qm.forceCompleteQuest(); + } else if (status == 1) { qm.dispose(); } } diff --git a/scripts/quest/2293.js b/scripts/quest/2293.js index c19bb7064c..dd9cefc5d0 100644 --- a/scripts/quest/2293.js +++ b/scripts/quest/2293.js @@ -37,9 +37,12 @@ function start(mode, type, selection) { if(status == 0) { qm.sendNext("Do you remember the last song that the Spirit of Rock played? I can think of a few songs that he may be imitating, so listen carefully and tell me which song it is. #bYou only get one chance,#k so please choose wisely."); + qm.forceStartQuest(); + } + else if(status == 1) + { + qm.dispose(); } - qm.forceStartQuest(); - qm.dispose(); } function end(mode, type, selection) @@ -92,19 +95,24 @@ function end(mode, type, selection) if(selection == 1) { qm.sendOk("Obviously you don't enjoy music."); - qm.dispose(); } else if(selection == 2) { qm.sendOk("I suppose you could get #b#eone#n#k more chance."); - qm.dispose(); } else if(selection == 3) { qm.sendOk("So that was the song he was playing... Well, it wasn't my song after all, but I'm glad I can know that now with certainty. Thank you so much."); - qm.gainExp(32500); qm.forceCompleteQuest(); + qm.gainExp(32500); + } + else + { qm.dispose(); } } + else if(status == 3) + { + qm.dispose(); + } } \ No newline at end of file diff --git a/scripts/quest/2312.js b/scripts/quest/2312.js index 3b667a8d61..3b72709bed 100644 --- a/scripts/quest/2312.js +++ b/scripts/quest/2312.js @@ -25,11 +25,12 @@ function start(mode, type, selection) { } if (status == 0) qm.sendAcceptDecline("We need your help, noble explorer. Our kingdom is currently facing a big threat, and we are in desperate need of a courageous explorer willing to fight for us, and that's how you ended up here. Please understand, though, that since we need place our faith in you, we'll have to test your skills first before we can stand firmly behind you. Will it be okay for you to do this for us?"); - if (status == 1){ + else if (status == 1){ qm.forceStartQuest(); qm.sendOk("Keep moving forward, and you'll see #bRenegade Spores#k, the Spores that turned their backs on the Kingdom of Mushroom. We'd appreciate it if you can teach them a lesson or two, and bring back #b50 Mutated Spores#k in return."); - qm.dispose(); - } + } else if (status == 2){ + qm.dispose(); + } } function end(mode, type, selection) { @@ -44,12 +45,13 @@ function end(mode, type, selection) { } if (status == 0) qm.sendOk("Did you teach those Renegade Spores a lesson?"); - if (status == 1){ + else if (status == 1){ qm.forceCompleteQuest(); qm.gainExp(11500); qm.gainItem(4000499, -50); qm.sendOk("That was amazing. I apologize for doubting your abilities. Please save our Kingdom of Mushroom from this crisis!"); - qm.dispose(); - } + } else if (status == 2){ + qm.dispose(); + } } \ No newline at end of file diff --git a/scripts/quest/2313.js b/scripts/quest/2313.js index 40b9d04010..e5e69bd569 100644 --- a/scripts/quest/2313.js +++ b/scripts/quest/2313.js @@ -25,11 +25,12 @@ function start(mode, type, selection) { } if (status == 0) qm.sendAcceptDecline("I have told our #bMinister of Home Affairs#k of your abilities. Please go pay a visit to him immediately."); - if (status == 1){ + else if (status == 1){ qm.forceStartQuest(); qm.sendOk("Save our kingdom! We believe in you!"); - qm.dispose(); - } + } else if (status == 2){ + qm.dispose(); + } } function end(mode, type, selection) { diff --git a/scripts/quest/2314.js b/scripts/quest/2314.js index cfa542d54f..58b157d0ee 100644 --- a/scripts/quest/2314.js +++ b/scripts/quest/2314.js @@ -23,16 +23,17 @@ function start(mode, type, selection) { } if (status == 0) qm.sendAcceptDecline("In order to rescue the princess, you must first navigate the Mushroom Forest. King Pepe set up a powerful barrier forbidding anyone from entering the castle. Please investigate this matter for us."); - if (status == 1) + else if (status == 1) qm.sendNext("You'll run into the barrier at the Mushroom Forest by heading east of where you are standing right now. Please be careful. I hear that the area is infested with crazy, fear-inducing monsters."); - if(status == 2){ + else if(status == 2){ //qm.forceStartQuest(); //qm.forceStartQuest(2314,"1"); qm.gainExp(8300); qm.sendOk("I see, so it was indeed not a regular barrier by any means. Great work there. If not for you help, we wouldn't have had a clue as to what that was all about."); qm.forceCompleteQuest(); - qm.dispose(); - } + } else if(status == 3){ + qm.dispose(); + } } function end(mode, type, selection) { @@ -47,11 +48,12 @@ function end(mode, type, selection) { } if (status == 0) qm.sendOk("I see that you have thoroughly investigated the barrier at the Mushroom Forest. What was it like?"); - if (status == 1){ + else if (status == 1){ + qm.forceCompleteQuest(); qm.gainExp(8300); qm.sendOk("I see, so it was indeed not a regular barrier by any means. Great work there. If not for you help, we wouldn't have had a clue as to what that was all about."); - qm.forceCompleteQuest(); - qm.dispose(); - } - } + } else if (status == 2){ + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/2315.js b/scripts/quest/2315.js index e345ab6e2a..b0571a8622 100644 --- a/scripts/quest/2315.js +++ b/scripts/quest/2315.js @@ -25,11 +25,12 @@ function start(mode, type, selection) { } if (status == 0) qm.sendAcceptDecline("A powerful barrier of magic, huh? Then what should we do...? If we can't find a way to break that barrier, then we can't save the princess. If it's impossible to physically break through, as you mentioned, then how about requesting help from our #bMinister of Magic#k?"); - if (status == 1){ + else if (status == 1){ qm.forceStartQuest(); qm.sendOk("Please go see him immediately. The #bMinister of Magic#k may seem a bit on the edge, but he's very knowledgeable, and I'm sure he'll know what to do."); - qm.dispose(); - } + } else if (status == 2){ + qm.dispose(); + } } function end(mode, type, selection) { @@ -44,11 +45,12 @@ function end(mode, type, selection) { } if (status == 0) qm.sendOk("What? You investigated the barrier at the Mushroom Forest?"); - if (status == 1){ - qm.gainExp(4000); - qm.sendOk("Hmmm...this is interesting. It's a barrier set up by someone with a powerful force of magic, which means there's no way we can manually break through it."); + else if (status == 1){ qm.forceCompleteQuest(); - qm.dispose(); - } + qm.gainExp(4000); + qm.sendOk("Hmmm...this is interesting. It's a barrier set up by someone with a powerful force of magic, which means there's no way we can manually break through it."); + } else if (status == 2) { + qm.dispose(); + } } \ No newline at end of file diff --git a/scripts/quest/2316.js b/scripts/quest/2316.js index 3b15ff46e8..9c5d62897f 100644 --- a/scripts/quest/2316.js +++ b/scripts/quest/2316.js @@ -25,9 +25,10 @@ function start(mode, type, selection) { } if (status == 0) qm.sendAcceptDecline("I think i've heard of a potion that breaks these kinds of barriers. I think it's called #bKiller Mushroom Spores#k? Hmmm... outside, you'll find the Mushroom Scholar #bScarrs#k waiting outside. #bScarrs#k is an expert on mushrooms, so go talk to him."); - if (status == 1){ + else if (status == 1){ qm.forceStartQuest(); qm.sendOk("I am confident #kScarrs#k will do everything to help you."); + else if (status == 2){ qm.dispose(); } } @@ -44,11 +45,12 @@ function end(mode, type, selection) { } if (status == 0) qm.sendOk("Ah, so you're the explorer people were talking about. I'm #bScarrs, the Royal Mushroom Scholar#k representing the Kingdom of Mushroom. So you need some #kKiller Mushroom Spores#k?"); - if (status == 1){ + } else if (status == 1){ + qm.forceCompleteQuest(); qm.gainExp(4200); qm.sendOk("#kKiller Mushroom Spores#k... I think i've heard of them before..."); - qm.forceCompleteQuest(); - qm.dispose(); - } + } else if (status == 2) { + qm.dispose(); + } } \ No newline at end of file diff --git a/scripts/quest/2317.js b/scripts/quest/2317.js index 359cd2b951..1e3db1a23e 100644 --- a/scripts/quest/2317.js +++ b/scripts/quest/2317.js @@ -25,9 +25,10 @@ function start(mode, type, selection) { } if (status == 0) qm.sendAcceptDecline("Ah! If I am not mistaken, I saw the #bKiller Mushroom Spores#k way back when I was a kid in a book. Now I remember... it's made out of extracts of powerful poisons from Poison Mushrooms, which means you'll need some Poison Mushroom Caps. If you can get me those, I think I'll be able to make it."); - if (status == 1){ + else if (status == 1){ qm.forceStartQuest(); qm.sendOk("Please defeat #bPoison Mushrooms#k and bring back #b100 Poison Mushroom Caps#k in return."); + } else if (status == 2){ qm.dispose(); } } @@ -44,12 +45,13 @@ function end(mode, type, selection) { } if (status == 0) qm.sendOk("Have you gathered up the 100 Poison Mushroom Caps like I asked you to get?"); - if (status == 1){ - qm.gainExp(13500); + else if (status == 1){ + qm.sendOk("I am amazed that you were able to gather up these 100 Poison Mushroom Caps, which is considered a difficult feat. I think I'll be able to make #bKiller Mushroom Spores#k our of these."); + } else if (status == 2) { + qm.forceCompleteQuest(); + qm.gainExp(13500); qm.gainItem(4000500, -100); - qm.sendOk("I am amazed that you were able to gather up these 100 Poison Mushroom Caps, which is considered a difficult feat. I think I'll be able to make #bKiller Mushroom Spores#k our of these."); - qm.forceCompleteQuest(); qm.dispose(); - } + } } \ No newline at end of file diff --git a/scripts/quest/2318.js b/scripts/quest/2318.js index 3babb9a864..ff1281e504 100644 --- a/scripts/quest/2318.js +++ b/scripts/quest/2318.js @@ -25,9 +25,10 @@ function start(mode, type, selection) { } if (status == 0) qm.sendAcceptDecline("Hmmm... I looked into the making of the Spores while you were gathering up the Poison Mushroom Caps, and realised that we'll need more materials for it. I want you to gather up one more set of items. Can you do it?"); - if (status == 1){ + else if (status == 1){ qm.forceStartQuest(); qm.sendOk("Okay, I want you to defeat the Regenade Spores and bring back #b50 Mutated Spores#k in return."); + } else if (status == 2){ qm.dispose(); } } @@ -44,15 +45,22 @@ function end(mode, type, selection) { } if (status == 0) qm.sendOk("Did you gather up all the necessary ingredients for it?") - if (status == 1){ - qm.gainExp(11500); + else if (status == 1){ + if (!qm.haveItem(4000499, 50)) { + qm.sendOk("Please gather all the ingredients first."); + status = 2; + return; + } + + qm.sendNext("These should be enough for me to make the #bKiller Mushroom Spores.#k Please hold on for a bit."); + } else if(status == 2){ + qm.sendOk("Okay, here are the Killer Mushroom Spores. Hopefully this will be enough for you to save our princess and help regain our kingdom. Good luck!"); + } else if(status == 3) { + qm.forceCompleteQuest(); + qm.gainExp(11500); qm.gainItem(4000499, -50); - qm.sendNext("Okay, these should be enough for me to make the #bKiller Mushroom Spores.#k Please hold on for a bit."); - qm.forceCompleteQuest(); qm.gainItem(2430014, 1); - } if(status == 2){ - qm.sendPrev("Okay, here are the Killer Mushroom Spores. Hopefully this will be enough for you to save our princess and help regain our kingdom. Good luck!"); - qm.dispose(); - } + qm.dispose(); + } } \ No newline at end of file diff --git a/scripts/quest/2319.js b/scripts/quest/2319.js index 8f5e650664..b51d69db2e 100644 --- a/scripts/quest/2319.js +++ b/scripts/quest/2319.js @@ -25,10 +25,11 @@ function start(mode, type, selection) { } if (status == 0) qm.sendAcceptDecline("Oh, I almost forgot! What was I thinking? I need you to hand this #bSample of Killer Mushroom Spores#k to #bMinister of Magic#k and report the results."); - if (status == 1){ + else if (status == 1){ qm.forceStartQuest(); qm.gainItem(4032389, 1); qm.sendOk("The #bMinister of Magic#k told me once the #bKiller Mushroom Spores#k is complete, that he'll want a sample of it as well. I'll give you the sample; now go please hand it in to our #bMinister of Magic.#k"); + } else if (status == 2){ qm.dispose(); } } @@ -45,12 +46,13 @@ function end(mode, type, selection) { } if (status == 0) qm.sendOk("Are the #bKiller Mushroom Spores#k finally completed?"); - if (status == 1){ + else if (status == 1){ + qm.forceCompleteQuest(); qm.gainExp(4200); qm.gainItem(4032389, -1); qm.sendOk("Okay, so this is the #bKiller Mushroom Spores.#k Thank you, thank you, and please tell #bScarrs#k the same."); - qm.forceCompleteQuest(); - qm.dispose(); - } + } else if (status == 2) { + qm.dispose(); + } } \ No newline at end of file diff --git a/scripts/quest/2320.js b/scripts/quest/2320.js index cf5e5d389f..2b6cc9bcde 100644 --- a/scripts/quest/2320.js +++ b/scripts/quest/2320.js @@ -25,10 +25,11 @@ function start(mode, type, selection) { } if (status == 0) qm.sendAcceptDecline("I have just one more request for you. Would you like to take a listen?"); - if (status == 1){ + else if (status == 1){ qm.forceStartQuest(); qm.gainItem(4032389, 1); qm.sendOk("To be honest, these #bKiller Mushroom Spores#k are not completely out of my own work. Do you remember #bBruce#k from #bHenesys#k? I have been friends with him since childhood, and #bKiller Mushroom Spores#k was completed after he shared the results of his studies with me. This was all thanks to him, so I'd like for you to give this to him for me."); + } else if (status == 2){ qm.dispose(); } } @@ -45,12 +46,13 @@ function end(mode, type, selection) { } if (status == 0) qm.sendOk("Oh! You're here on behalf of #bScarrs#k? \r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0# \r\n#fUI/UIWindow.img/QuestIcon/8/0# 8800 exp"); - if (status == 1){ + else if (status == 1){ + qm.forceCompleteQuest(); qm.gainExp(8800); qm.gainItem(4032389, -1); qm.sendOk("Ahh, so this is the #bKiller Mushroom Spores#k that I was working on in the past. I had a tough time gathering up the ingredients, so I left it in theory only, but he was able to complete it, with a sample to show for as well. Please tell him I appreciate his good work."); - qm.forceCompleteQuest(); - qm.dispose(); - } + } else if (status == 2) { + qm.dispose(); + } } \ No newline at end of file diff --git a/scripts/quest/2321.js b/scripts/quest/2321.js index 8b54b52f23..126e531a9a 100644 --- a/scripts/quest/2321.js +++ b/scripts/quest/2321.js @@ -25,9 +25,10 @@ function start(mode, type, selection) { } if (status == 0) qm.sendAcceptDecline("Now you'll be able to penetrate the spiny vine barrier of Mushroom Forest, but before that, #bMinister of Home Affairs#k wants to have a word with you. Please go see him immediately."); - if (status == 1){ + else if (status == 1){ qm.forceStartQuest(); qm.sendOk("Good luck."); + } else if (status == 2){ qm.dispose(); } } @@ -44,11 +45,12 @@ function end(mode, type, selection) { } if (status == 0) qm.sendOk("I have been keeping up on your fabulour work. I am aware that you have successfully created the #bKiller Mushroom Spores#k, which penetrates through the unpenetrable barrier of the forest. Congratulations!"); - if (status == 1){ + else if (status == 1){ + qm.forceCompleteQuest(); qm.gainExp(2500); qm.sendOk("The problem now is to figure out how to enter the castle."); - qm.forceCompleteQuest(); - qm.dispose(); - } + } else if (status == 2) { + qm.dispose(); + } } \ No newline at end of file diff --git a/scripts/quest/2322.js b/scripts/quest/2322.js index fd114c25d1..00b7a8cc22 100644 --- a/scripts/quest/2322.js +++ b/scripts/quest/2322.js @@ -25,14 +25,15 @@ function start(mode, type, selection) { } if (status == 0) qm.sendYesNo("Like I told you, just breaking the barrier cannot be a cause for celebration. That's because our castle for the Kingdom of Mushroom completely denies entry of anyone outside our kingdom, so it'll be hard for you to do that. Hmmm... to figure out a way to enter, can you...investigate the outer walls of the castle first?"); - if (status == 1) + else if (status == 1) qm.sendNext("Walk past the Mushroom Forest and when you reach the #bSplit Road of Choice#k, just walk towards the castle. Good luck."); - if (status == 2){ + else if (status == 2){ //qm.forceStartQuest(); //qm.forceStartQuest(2322, "1"); qm.gainExp(11000); qm.sendOk("Good job navigating through the area."); qm.forceCompleteQuest(); + } else if (status == 3){ qm.dispose(); } } @@ -49,11 +50,12 @@ function end(mode, type, selection) { } if (status == 0) qm.sendOk("Hmmm I see... so they have completely shut off the entrance and everything."); - if (status == 1){ - qm.gainExp(11000); - qm.sendOk("Good job navigating through the area."); + else if (status == 1){ qm.forceCompleteQuest(); - qm.dispose(); - } + qm.gainExp(11000); + qm.sendOk("Good job navigating through the area."); + } else if (status == 2) { + qm.dispose(); + } } \ No newline at end of file diff --git a/scripts/quest/2325.js b/scripts/quest/2325.js index 4154deb9d5..288ab76477 100644 --- a/scripts/quest/2325.js +++ b/scripts/quest/2325.js @@ -22,9 +22,10 @@ function end(mode, type, selection){ qm.sendNextPrev("Don't be afriad, #b#p1300005##k sent me here.", 2); } else if(status == 2){ - qm.sendOk("What? My brother sent you here? Ahhh... I am safe now. Thank you so much..."); qm.forceCompleteQuest(); qm.gainExp(6000); - qm.dispose(); - } + qm.sendOk("What? My brother sent you here? Ahhh... I am safe now. Thank you so much..."); + } else if (status == 3) { + qm.dispose(); + } } \ No newline at end of file diff --git a/scripts/quest/2338.js b/scripts/quest/2338.js index b2d909564d..8722341bef 100644 --- a/scripts/quest/2338.js +++ b/scripts/quest/2338.js @@ -37,7 +37,7 @@ function start(mode, type, selection) { if (status == 0) { if(qm.haveItem(2430014, 1)) { qm.sendNext("It looks like you already have one #b#t2430014##k on your inventory."); - qm.dispose(); + status = 1; return; } @@ -48,8 +48,9 @@ function start(mode, type, selection) { } else { qm.gainItem(2430014, 1); qm.forceCompleteQuest(); + qm.dispose(); } - + } else if (status == 2) { qm.dispose(); } } diff --git a/scripts/quest/2342.js b/scripts/quest/2342.js index 6c8aed8d0d..6d5d2ff6e4 100644 --- a/scripts/quest/2342.js +++ b/scripts/quest/2342.js @@ -6,22 +6,38 @@ var status = -1; function start(mode, type, selection){ - if(!qm.hasItem(4001318) && qm.isQuestStarted(2331) && !qm.isQuestCompleted(2331)){ - if(qm.canHold(4001318)){ - qm.forceStartQuest(); - qm.gainItem(4001318, 1); - qm.forceCompleteQuest(); - qm.sendOk("Looks like you forgot to pick up the #b#t4001318##k when you fought with the #bPrime Minister#k. This is very important to our kingdom, so please deliver this to my father as soon as possible."); - qm.dispose(); - } - else{ - qm.sendOk("Please free up one spot in your ETC inventory"); - qm.dispose(); - } - } - else{ - qm.dispose(); - } + if (mode == -1) { + qm.dispose(); + } else { + if(mode == 0 && type > 0) { + qm.dispose(); + return; + } + + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + if(!qm.hasItem(4001318) && qm.isQuestStarted(2331) && !qm.isQuestCompleted(2331)){ + if(qm.canHold(4001318)){ + qm.forceStartQuest(); + qm.gainItem(4001318, 1); + qm.forceCompleteQuest(); + qm.sendOk("Looks like you forgot to pick up the #b#t4001318##k when you fought with the #bPrime Minister#k. This is very important to our kingdom, so please deliver this to my father as soon as possible."); + } + else{ + qm.sendOk("Please free up one spot in your ETC inventory"); + } + } + else{ + qm.dispose(); + } + } else if (status == 1) { + qm.dispose(); + } + } } function end(mode, type, selection){ diff --git a/scripts/quest/2560.js b/scripts/quest/2560.js index d784079e1b..985edef5c4 100644 --- a/scripts/quest/2560.js +++ b/scripts/quest/2560.js @@ -20,8 +20,10 @@ function start(mode, type, selection) { qm.sendNext("Ook! Ook! (The monkey looks very dissatisfied.)"); } else { qm.forceStartQuest(); + qm.dispose(); } - qm.dispose(); - } + } else if (status == 4) { + qm.dispose(); + } } \ No newline at end of file diff --git a/scripts/quest/2573.js b/scripts/quest/2573.js index 25f51e1264..8d05cda8e4 100644 --- a/scripts/quest/2573.js +++ b/scripts/quest/2573.js @@ -17,10 +17,11 @@ function start(mode, type, selection) { if (mode == 0) {//decline qm.sendNext("Hey, take it easy! Sometimes you just gotta wait."); } else { - qm.sendNext("Looks like we're all set! I think this is going to be a great voyage. Let's get underway."); qm.warp(3000000, 0); qm.forceCompleteQuest(); + qm.sendNext("Looks like we're all set! I think this is going to be a great voyage. Let's get underway."); } - qm.dispose(); - } + } else if (status == 3) { + qm.dispose(); + } } \ No newline at end of file diff --git a/scripts/quest/28004.js b/scripts/quest/28004.js index f5db1d4a01..3cb9ea2675 100644 --- a/scripts/quest/28004.js +++ b/scripts/quest/28004.js @@ -44,7 +44,7 @@ function start(mode, type, selection) { qm.sendNext("Okay... so here's our plan to defeat Scrooge and his dastardly plans. The Force of the Spirit I gave you is an item packed with mana. It's an item you'll definitely use at the map I am about to send you. In order to do that, you'll have to bring your party members with you as well. You should bring your party members here or form one right now!"); } else if (status == 1) { qm.sendAcceptDecline("Would you like to move forward?"); - } else { + } else if (status == 2) { var level = qm.getPlayer().getLevel(); qm.warp(level <= 30 ? 889100000 : (level <= 40 ? 889100010 : 889100020)); diff --git a/scripts/quest/29900.js b/scripts/quest/29900.js index 5a06f3b0c6..dc129556dd 100644 --- a/scripts/quest/29900.js +++ b/scripts/quest/29900.js @@ -41,14 +41,16 @@ function end(mode, type, selection) { if (status == 0) qm.sendNext("Congratulations on earning your honorable #b#k title. I wish you the best of luck in your future endeavors! Keep up the good work.\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n #v1142107:# #t1142107# 1"); else if (status == 1) { - if (qm.canHold(1142107)) { - qm.gainItem(1142107); - qm.forceCompleteQuest(); - } else - qm.sendNext("Please make room in your inventory");//NOT GMS LIKE - - qm.dispose(); - } + if (qm.canHold(1142107)) { + qm.gainItem(1142107); + qm.forceCompleteQuest(); + qm.dispose(); + } else { + qm.sendNext("Please make room in your inventory");//NOT GMS LIKE + } + } else if (status == 2) { + qm.dispose(); + } } } \ No newline at end of file diff --git a/scripts/quest/29901.js b/scripts/quest/29901.js index 91f9acb3d4..b38d41c0ae 100644 --- a/scripts/quest/29901.js +++ b/scripts/quest/29901.js @@ -41,14 +41,16 @@ function end(mode, type, selection) { if (status == 0) qm.sendNext("Congratulations on earning your honorable #b#k title. I wish you the best of luck in your future endeavors! Keep up the good work.\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n #v1142108:# #t1142108# 1"); else if (status == 1) { - if (qm.canHold(1142108)) { - qm.gainItem(1142108); - qm.forceCompleteQuest(); - } else - qm.sendNext("Please make room in your inventory");//NOT GMS LIKE - - qm.dispose(); - } + if (qm.canHold(1142108)) { + qm.gainItem(1142108); + qm.forceCompleteQuest(); + qm.dispose(); + } else { + qm.sendNext("Please make room in your inventory");//NOT GMS LIKE + } + } else if (status == 2) { + qm.dispose(); + } } } \ No newline at end of file diff --git a/scripts/quest/29902.js b/scripts/quest/29902.js index 144dea0f8c..c665731a14 100644 --- a/scripts/quest/29902.js +++ b/scripts/quest/29902.js @@ -41,14 +41,16 @@ function end(mode, type, selection) { if (status == 0) qm.sendNext("Congratulations on earning your honorable #b#k title. I wish you the best of luck in your future endeavors! Keep up the good work.\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n #v1142109:# #t1142109# 1"); else if (status == 1) { - if (qm.canHold(1142109)) { - qm.gainItem(1142109); - qm.forceCompleteQuest(); - } else - qm.sendNext("Please make room in your inventory");//NOT GMS LIKE - - qm.dispose(); - } + if (qm.canHold(1142109)) { + qm.gainItem(1142109); + qm.forceCompleteQuest(); + qm.dispose(); + } else { + qm.sendNext("Please make room in your inventory");//NOT GMS LIKE + } + } else if (status == 2) { + qm.dispose(); + } } } \ No newline at end of file diff --git a/scripts/quest/29903.js b/scripts/quest/29903.js index 9b29ae4a02..999075c0f9 100644 --- a/scripts/quest/29903.js +++ b/scripts/quest/29903.js @@ -41,14 +41,16 @@ function end(mode, type, selection) { if (status == 0) qm.sendNext("Congratulations on earning your honorable #b#k title. I wish you the best of luck in your future endeavors! Keep up the good work.\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n #v1142110:# #t1142110# 1"); else if (status == 1) { - if (qm.canHold(1142110)) { - qm.gainItem(1142110); - qm.forceCompleteQuest(); - } else - qm.sendNext("Please make room in your inventory");//NOT GMS LIKE - - qm.dispose(); - } + if (qm.canHold(1142110)) { + qm.gainItem(1142110); + qm.forceCompleteQuest(); + qm.dispose(); + } else { + qm.sendNext("Please make room in your inventory");//NOT GMS LIKE + } + } else if (status == 2) { + qm.dispose(); + } } } \ No newline at end of file diff --git a/scripts/quest/3108.js b/scripts/quest/3108.js index 71e60da7c9..5321d3839b 100644 --- a/scripts/quest/3108.js +++ b/scripts/quest/3108.js @@ -37,7 +37,7 @@ function start(mode, type, selection) { if (status == 0) { qm.sendNext("(As you peek into the shattered statue, you might have found a clue about what happened. Better talk to #rScadur#k about this.)"); qm.forceCompleteQuest(); - + } else if (status == 1) { qm.dispose(); } } diff --git a/scripts/quest/3301.js b/scripts/quest/3301.js index 38db5d56cc..bcf0edca88 100644 --- a/scripts/quest/3301.js +++ b/scripts/quest/3301.js @@ -48,8 +48,7 @@ function end(mode, type, selection) { qm.gainItem(oreArray[selection], -2); // Take 2 ores qm.sendNext("Then wait for awhile. I'll go and get the stuff to help you pass the test of Chief Zanumist."); qm.forceCompleteQuest(); - qm.dispose(); - } else { + } else if (status == 1) { qm.dispose(); } } diff --git a/scripts/quest/3303.js b/scripts/quest/3303.js index 806589be97..a9d44c42fe 100644 --- a/scripts/quest/3303.js +++ b/scripts/quest/3303.js @@ -48,8 +48,7 @@ function end(mode, type, selection) { qm.gainItem(oreArray[selection], -2); // Take 2 ores qm.sendNext("Then wait for awhile. I'll go and get the stuff to help you pass the test of Chief Alcadno."); qm.forceCompleteQuest(); - qm.dispose(); - } else { + } else if (status == 1) { qm.dispose(); } } diff --git a/scripts/quest/3311.js b/scripts/quest/3311.js index ee0f6e054e..572eb80bc4 100644 --- a/scripts/quest/3311.js +++ b/scripts/quest/3311.js @@ -42,7 +42,7 @@ function end(mode, type, selection) { } else { qm.sendNext("Found nothing yet? Please check out Dr. De Lang's house properly, something there may give out a clue about what is going on."); } - + } else if (status == 1) { qm.dispose(); } } diff --git a/scripts/quest/3314.js b/scripts/quest/3314.js index 576717e7dc..31edf6da5d 100644 --- a/scripts/quest/3314.js +++ b/scripts/quest/3314.js @@ -58,7 +58,7 @@ function end(mode, type, selection) { } else { qm.sendNext("You seem pretty normal, don't you? I can't detect any possible effect from my experiment on you. Go take the pill I asked you to take and show me the effects, will you?"); } - } else { + } else if (status == 1) { qm.dispose(); } } diff --git a/scripts/quest/3321.js b/scripts/quest/3321.js index 577995ea74..686c60fe30 100644 --- a/scripts/quest/3321.js +++ b/scripts/quest/3321.js @@ -48,8 +48,8 @@ function start(mode, type, selection) { qm.sendNext("Oh, and I have a personal favor to ask, if it's not too much. I am worried about my wife, #b#p2111004##k. Since the incident with the Huroids I could send a word to her, that must have made a toll on her... Please, if you could, could you get the #bSilver Pendant#k I left #bback at home#k, and give it to her in my stead? I regret not giving the item right away to her, it was her birthday... Maybe giving it now to her can get her a good sleeping night, at least."); } else if (status == 5) { qm.sendNext("#rMake sure to remember this pattern!#k I've hid the pendant in my house, in a container #bbehind the water pipes#k. The pipes must be turned #bin order#k: top, bottom, middle. And then, enter the secret password: '#rmy love Phyllia#k'."); - qm.forceStartQuest(); + } else if (status == 6) { qm.dispose(); } } diff --git a/scripts/quest/3345.js b/scripts/quest/3345.js index 83cb1b74ac..def3916b24 100644 --- a/scripts/quest/3345.js +++ b/scripts/quest/3345.js @@ -43,7 +43,7 @@ function end(mode, type, selection) { } else { qm.sendNext("Did you not seal the #rmagic circle beneath Magatia#k yet? It is a matter of great importance, please haste yourself."); } - + } else if (status == 1) { qm.dispose(); } } diff --git a/scripts/quest/3360.js b/scripts/quest/3360.js index d9f572b8b2..1b1246c66b 100644 --- a/scripts/quest/3360.js +++ b/scripts/quest/3360.js @@ -51,6 +51,7 @@ function start(mode, type, selection) { qm.sendOk("The key code is #b" + pass + "#k. Got that? Put the key into the door of the secret passage, and you will be able to walk around the passage freely."); qm.forceStartQuest(); qm.setStringQuestProgress(3360, 0, pass); + } else if (status == 3) { qm.dispose(); } } @@ -69,10 +70,11 @@ function end(mode, type, selection) { qm.sendNext("What's up? You haven't opened the Secret Passage yet?"); } else { qm.forceCompleteQuest(); + qm.dispose(); } - + } else if (status == 1) { qm.dispose(); - } + } } } diff --git a/scripts/quest/3382.js b/scripts/quest/3382.js index 046e056dfb..ce732bbd29 100644 --- a/scripts/quest/3382.js +++ b/scripts/quest/3382.js @@ -28,36 +28,50 @@ */ function end(mode, type, selection) { - if(qm.haveItem(4001159, 25) && qm.haveItem(4001160, 25) && !qm.haveItemWithId(1122010, true)) { - if(qm.canHold(1122010)) { - qm.gainItem(4001159, -25); - qm.gainItem(4001160, -25); - qm.gainItem(1122010, 1); - - qm.sendOk("Thank you for retrieving the marbles. Accept this pendant as a token of my appreciation."); - } else { - qm.sendNext("Free a slot on your EQUIP tab before claiming a prize."); - qm.dispose(); - return; - } - } else if(qm.haveItem(4001159, 10) && qm.haveItem(4001160, 10)) { - if(qm.canHold(2041212)) { - qm.gainItem(4001159, -10); - qm.gainItem(4001160, -10); - qm.gainItem(2041212, 1); - - qm.sendOk("Thank you for retrieving the marbles. This rock, that I am giving to you, can be used to improve the stats on the #b#t1122010##k. Take it as a token of my appreciation and use it wisely."); - } else { - qm.sendNext("Free a slot on your USE tab before claiming a prize."); - qm.dispose(); - return; - } - } else { - qm.sendNext("I need at least #b10 of both #t4001159# and #t4001160##k to reward you appropriately. If you happen to come with #b25 of these#k instead, I can reward you with a valuable gear. Fare well."); + if (mode == -1) { + qm.dispose(); + } else { + if(mode == 0 && type > 0) { qm.dispose(); return; } + + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + if(qm.haveItem(4001159, 25) && qm.haveItem(4001160, 25) && !qm.haveItemWithId(1122010, true)) { + if(qm.canHold(1122010)) { + qm.gainItem(4001159, -25); + qm.gainItem(4001160, -25); + qm.gainItem(1122010, 1); - qm.forceCompleteQuest(); - qm.dispose(); + qm.sendOk("Thank you for retrieving the marbles. Accept this pendant as a token of my appreciation."); + } else { + qm.sendNext("Free a slot on your EQUIP tab before claiming a prize."); + return; + } + } else if(qm.haveItem(4001159, 10) && qm.haveItem(4001160, 10)) { + if(qm.canHold(2041212)) { + qm.gainItem(4001159, -10); + qm.gainItem(4001160, -10); + qm.gainItem(2041212, 1); + + qm.sendOk("Thank you for retrieving the marbles. This rock, that I am giving to you, can be used to improve the stats on the #b#t1122010##k. Take it as a token of my appreciation and use it wisely."); + } else { + qm.sendNext("Free a slot on your USE tab before claiming a prize."); + return; + } + } else { + qm.sendNext("I need at least #b10 of both #t4001159# and #t4001160##k to reward you appropriately. If you happen to come with #b25 of these#k instead, I can reward you with a valuable gear. Fare well."); + return; + } + + qm.forceCompleteQuest(); + } else if (status == 1) { + qm.dispose(); + } + } } diff --git a/scripts/quest/3437.js b/scripts/quest/3437.js index 2a3f4b1d5f..6c159e63f2 100644 --- a/scripts/quest/3437.js +++ b/scripts/quest/3437.js @@ -14,9 +14,7 @@ function end(mode, type, selection) { if(status == 0) { qm.sendNext("What the? Are you telling me you've already taken out 150 #o4230120#s? And these ... yes, these really are 120 #t4000122#s. I was wondering how you were going to complete this mission all by yourself, but you took care of it just fine. Alright, here ... this is a very important item for me, but please take it."); - } - - else if(status == 1) { + } else if(status == 1) { if(qm.getPlayer().getInventory(Packages.client.inventory.MapleInventoryType.EQUIP).getNumFreeSlot() < 1) { qm.sendOk("Please free a EQUIP inventory slot to receive the reward."); qm.dispose(); @@ -34,16 +32,13 @@ function end(mode, type, selection) { else item = 1082149; qm.sendNext(talkStr); - } - - if(status == 2) { + } else if(status == 2) { + qm.completeQuest(); qm.gainItem(item, 1); qm.gainItem(4000122, -120); - qm.gainExp(6100); - qm.completeQuest(); - qm.sendOk("Thank you so much for fulfilling your missions as one of the Mesorangers. I've told the Sector about your successful story, and the Sector seems to be very pleased with you, too. Hopefully you'll keep working with us. Bye~"); + } else if (status == 3) { qm.dispose(); } } \ No newline at end of file diff --git a/scripts/quest/3452.js b/scripts/quest/3452.js index 82c02a1ab2..a87f73f566 100644 --- a/scripts/quest/3452.js +++ b/scripts/quest/3452.js @@ -17,12 +17,13 @@ function end(mode, type, selection) { qm.gainItem(2000011, 50); qm.gainExp(8000); qm.forceCompleteQuest(); + qm.dispose(); } else { qm.sendNext("Hm? It looks like your inventory is full."); } - + } else if (status == 2) { qm.dispose(); - } + } } } \ No newline at end of file diff --git a/scripts/quest/3454.js b/scripts/quest/3454.js index f37a76db3c..cf33327420 100644 --- a/scripts/quest/3454.js +++ b/scripts/quest/3454.js @@ -28,26 +28,43 @@ */ function end(mode, type, selection) { - if(qm.getPlayer().getInventory(Packages.client.inventory.MapleInventoryType.ETC).getNumFreeSlot() < 1) { - qm.sendOk("Make room on your ETC inventory first."); - qm.dispose(); - return; - } + if (mode == -1) { + qm.dispose(); + } else { + if(mode == 0 && type > 0) { + qm.dispose(); + return; + } + + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + if(qm.getPlayer().getInventory(Packages.client.inventory.MapleInventoryType.ETC).getNumFreeSlot() < 1) { + qm.sendOk("Make room on your ETC inventory first."); + qm.dispose(); + return; + } - qm.gainItem(4000125, -1); - qm.gainItem(4031926, -10); - qm.gainItem(4000119, -30); - qm.gainItem(4000118, -30); + qm.gainItem(4000125, -1); + qm.gainItem(4031926, -10); + qm.gainItem(4000119, -30); + qm.gainItem(4000118, -30); - rnd = Math.random(); - if(rnd < 1.0) { - qm.gainItem(4031928, 1); - } - else { - qm.gainItem(4031927, 1); - } + rnd = Math.random(); + if(rnd < 1.0) { + qm.gainItem(4031928, 1); + } + else { + qm.gainItem(4031927, 1); + } - qm.sendOk("Now, go meet Alien Gray and use this undercover to read through their plans. If this fails, we will need to gather some materials once again."); - qm.forceCompleteQuest(); - qm.dispose(); + qm.sendOk("Now, go meet Alien Gray and use this undercover to read through their plans. If this fails, we will need to gather some materials once again."); + qm.forceCompleteQuest(); + } else if (status == 1) { + qm.dispose(); + } + } } diff --git a/scripts/quest/3507.js b/scripts/quest/3507.js index 41dab043eb..80f44994fa 100644 --- a/scripts/quest/3507.js +++ b/scripts/quest/3507.js @@ -1,10 +1,26 @@ function end(mode, type, selection) { - if(qm.isQuestCompleted(3523) || qm.isQuestCompleted(3524) || qm.isQuestCompleted(3525) || qm.isQuestCompleted(3526) || qm.isQuestCompleted(3527) || qm.isQuestCompleted(3529) || qm.isQuestCompleted(3539)) { - qm.completeQuest(); - qm.sendOk("You are now filled with all of your memories again.. You are now allowed to go to #m270020000#."); - } else { - qm.sendOk("You have not yet checked with your first teacher about your memories?"); - } - + if (mode == -1) { qm.dispose(); + } else { + if(mode == 0 && type > 0) { + qm.dispose(); + return; + } + + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + if(qm.isQuestCompleted(3523) || qm.isQuestCompleted(3524) || qm.isQuestCompleted(3525) || qm.isQuestCompleted(3526) || qm.isQuestCompleted(3527) || qm.isQuestCompleted(3529) || qm.isQuestCompleted(3539)) { + qm.completeQuest(); + qm.sendOk("You are now filled with all of your memories again.. You are now allowed to go to #m270020000#."); + } else { + qm.sendOk("You have not yet checked with your first teacher about your memories?"); + } + } else if (status == 1) { + qm.dispose(); + } + } } \ No newline at end of file diff --git a/scripts/quest/3523.js b/scripts/quest/3523.js index 5ee5f05777..1bca9087c8 100644 --- a/scripts/quest/3523.js +++ b/scripts/quest/3523.js @@ -24,9 +24,26 @@ */ function start(mode, type, selection) { - qm.startQuest(); - //qm.getPlayer().updateQuestInfo(3507, "1"); - qm.completeQuest(); - qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass."); - qm.dispose(); + if (mode == -1) { + qm.dispose(); + } else { + if(mode == 0 && type > 0) { + qm.dispose(); + return; + } + + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + qm.startQuest(); + //qm.getPlayer().updateQuestInfo(3507, "1"); + qm.completeQuest(); + qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass."); + } else if (status == 1) { + qm.dispose(); + } + } } \ No newline at end of file diff --git a/scripts/quest/3524.js b/scripts/quest/3524.js index 744ca4f701..6fde502f1b 100644 --- a/scripts/quest/3524.js +++ b/scripts/quest/3524.js @@ -24,9 +24,26 @@ */ function start(mode, type, selection) { - qm.startQuest(); - //qm.getPlayer().updateQuestInfo(3507, "1"); - qm.completeQuest(); - qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass."); - qm.dispose(); + if (mode == -1) { + qm.dispose(); + } else { + if(mode == 0 && type > 0) { + qm.dispose(); + return; + } + + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + qm.startQuest(); + //qm.getPlayer().updateQuestInfo(3507, "1"); + qm.completeQuest(); + qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass."); + } else if (status == 1) { + qm.dispose(); + } + } } \ No newline at end of file diff --git a/scripts/quest/3525.js b/scripts/quest/3525.js index 76d31b4b92..319a71ae0a 100644 --- a/scripts/quest/3525.js +++ b/scripts/quest/3525.js @@ -24,9 +24,26 @@ */ function start(mode, type, selection) { - qm.startQuest(); - //qm.getPlayer().updateQuestInfo(3507, "1"); - qm.completeQuest(); - qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass."); - qm.dispose(); + if (mode == -1) { + qm.dispose(); + } else { + if(mode == 0 && type > 0) { + qm.dispose(); + return; + } + + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + qm.startQuest(); + //qm.getPlayer().updateQuestInfo(3507, "1"); + qm.completeQuest(); + qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass."); + } else if (status == 1) { + qm.dispose(); + } + } } \ No newline at end of file diff --git a/scripts/quest/3526.js b/scripts/quest/3526.js index 295dc91cd5..7601322390 100644 --- a/scripts/quest/3526.js +++ b/scripts/quest/3526.js @@ -24,9 +24,26 @@ */ function start(mode, type, selection) { - qm.startQuest(); - //qm.getPlayer().updateQuestInfo(3507, "1"); - qm.completeQuest(); - qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass."); - qm.dispose(); + if (mode == -1) { + qm.dispose(); + } else { + if(mode == 0 && type > 0) { + qm.dispose(); + return; + } + + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + qm.startQuest(); + //qm.getPlayer().updateQuestInfo(3507, "1"); + qm.completeQuest(); + qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass."); + } else if (status == 1) { + qm.dispose(); + } + } } \ No newline at end of file diff --git a/scripts/quest/3527.js b/scripts/quest/3527.js index 5ba2606c08..8b6c855857 100644 --- a/scripts/quest/3527.js +++ b/scripts/quest/3527.js @@ -24,9 +24,26 @@ */ function start(mode, type, selection) { - qm.startQuest(); - //qm.getPlayer().updateQuestInfo(3507, "1"); - qm.completeQuest(); - qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass."); - qm.dispose(); + if (mode == -1) { + qm.dispose(); + } else { + if(mode == 0 && type > 0) { + qm.dispose(); + return; + } + + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + qm.startQuest(); + //qm.getPlayer().updateQuestInfo(3507, "1"); + qm.completeQuest(); + qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass."); + } else if (status == 1) { + qm.dispose(); + } + } } \ No newline at end of file diff --git a/scripts/quest/3539.js b/scripts/quest/3539.js index 5ba2606c08..8b6c855857 100644 --- a/scripts/quest/3539.js +++ b/scripts/quest/3539.js @@ -24,9 +24,26 @@ */ function start(mode, type, selection) { - qm.startQuest(); - //qm.getPlayer().updateQuestInfo(3507, "1"); - qm.completeQuest(); - qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass."); - qm.dispose(); + if (mode == -1) { + qm.dispose(); + } else { + if(mode == 0 && type > 0) { + qm.dispose(); + return; + } + + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + qm.startQuest(); + //qm.getPlayer().updateQuestInfo(3507, "1"); + qm.completeQuest(); + qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass."); + } else if (status == 1) { + qm.dispose(); + } + } } \ No newline at end of file diff --git a/scripts/quest/3714.js b/scripts/quest/3714.js index 7868cb80bc..e142e844f8 100644 --- a/scripts/quest/3714.js +++ b/scripts/quest/3714.js @@ -55,11 +55,10 @@ function start(mode, type, selection) { return; } + qm.forceCompleteQuest(); qm.gainItem(4001094, -1); qm.gainItem(2041200, 1); // quest not rewarding properly found thanks to MedicOP & Thora qm.gainExp(42000); - - qm.forceCompleteQuest(); qm.dispose(); } } diff --git a/scripts/quest/3833.js b/scripts/quest/3833.js index 7e1a3a482b..b01f5946fa 100644 --- a/scripts/quest/3833.js +++ b/scripts/quest/3833.js @@ -51,12 +51,14 @@ function end(mode, type, selection) { qm.gainExp(10); qm.forceCompleteQuest(); } + + qm.dispose(); } else { qm.sendOk("Could you make #b2 slots available#k on your USE inventory before receiving your reward?"); - } - - qm.dispose(); - } + } + } else if (status == 2) { + qm.dispose(); + } } } \ No newline at end of file diff --git a/scripts/quest/3926.js b/scripts/quest/3926.js index 4a6bf56015..dce1ce974a 100644 --- a/scripts/quest/3926.js +++ b/scripts/quest/3926.js @@ -51,8 +51,8 @@ function end(mode, type, selection) { qm.forceCompleteQuest(); } else { qm.sendNext("Have you brought all the jewels from the Red Scorpions? They have to be delivered to the Residential areas of the Sand Bandits."); - } - + } + } else if (status == 1) { qm.dispose(); } } diff --git a/scripts/quest/3929.js b/scripts/quest/3929.js index 205cd60561..26b254eba3 100644 --- a/scripts/quest/3929.js +++ b/scripts/quest/3929.js @@ -63,7 +63,7 @@ function end(mode, type, selection) { qm.sendNext("Hey, what are you trying to pull on? To pass my test you must to deliver all the foods to the Residential areas."); } } - + } else if (status == 1) { qm.dispose(); } } diff --git a/scripts/quest/3933.js b/scripts/quest/3933.js index 86dc102299..401d2bf45f 100644 --- a/scripts/quest/3933.js +++ b/scripts/quest/3933.js @@ -43,15 +43,15 @@ function start(mode, type, selection) { qm.sendAcceptDecline("To truly see your strength, I'll have to face you myself. Don't worry, I'll summon my other self to face off against you. Are you ready?"); } else if (status == 2) { qm.sendNext("Good, I like your confidence."); - } else { + } else if (status == 3) { if(qm.getWarpMap(926000000).getCharacters().size() > 0) { qm.sendOk("There is someone currently in this map, come back later."); + qm.dispose(); } else { qm.warp(926000000); qm.forceStartQuest(); + qm.dispose(); } - - qm.dispose(); } } } diff --git a/scripts/quest/3941.js b/scripts/quest/3941.js index 93be8f435f..ecee5987ea 100644 --- a/scripts/quest/3941.js +++ b/scripts/quest/3941.js @@ -42,18 +42,23 @@ function start(mode, type, selection) { else status--; - if(!isTigunMorphed(qm.getPlayer())) { - qm.sendNext("What's this? I can't simply give the Queen's silk to anyone, claiming they will hand it at once to the queen. Get out of my sights."); - qm.dispose(); - return; - } - if (status == 0) { + if(!isTigunMorphed(qm.getPlayer())) { + qm.sendNext("What's this? I can't simply give the Queen's silk to anyone, claiming they will hand it at once to the queen. Get out of my sights."); + status = 1; + return; + } + qm.sendNext("Tigun, what are you doing here?"); } else if (status == 1) { + if(!isTigunMorphed(qm.getPlayer())) { + qm.sendNext("What's this? I can't simply give the Queen's silk to anyone, claiming they will hand it at once to the queen. Get out of my sights."); + return; + } + qm.sendNext("The Queen wants her silk right now? Alright, I have them here. Hold on a moment."); - - qm.forceStartQuest(); + qm.forceStartQuest(); + } else if (status == 2) { qm.dispose(); } } @@ -73,13 +78,13 @@ function end(mode, type, selection) { else status--; - if(!isTigunMorphed(qm.getPlayer())) { - qm.sendNext("What's this? I can't simply give the Queen's silk to anyone, claiming they will hand it at once to the queen. Get out of my sights."); - qm.dispose(); - return; - } - if (status == 0) { + if(!isTigunMorphed(qm.getPlayer())) { + qm.sendNext("What's this? I can't simply give the Queen's silk to anyone, claiming they will hand it at once to the queen. Get out of my sights."); + qm.dispose(); + return; + } + if(qm.canHold(4031571, 1)) { qm.gainItem(4031571); @@ -88,7 +93,7 @@ function end(mode, type, selection) { } else { qm.sendNext("Hey, you're lacking space to hold this, man. I will stay with it while you arrange your backpack..."); } - + } else if (status == 1) { qm.dispose(); } } diff --git a/scripts/quest/3953.js b/scripts/quest/3953.js index d338f06545..0229c9b019 100644 --- a/scripts/quest/3953.js +++ b/scripts/quest/3953.js @@ -43,12 +43,12 @@ function end(mode, type, selection) { } else if (status == 3) { qm.sendSimple("They have departed on an expedition to get rid of some major threats in the desert that were ravaging Ariant, for quite some time now... It's strange, they should have already returned... Thinking about it now, the last attack on the merchants was around the direction the Guardians departed... No, that can't be... Can it?\r\n\r\n#L0##bPerhaps Deo has already turned into a monster.#k"); } else if (status == 4) { - qm.gainItem(4011008, -1); - - qm.sendNext("We're in great trouble, if it is like this. And it really seems like it. If the Royal Cactus Deo has gone insane, Ariant is done for. You, can you do something to defeat Deo? We really need your help now."); - qm.gainExp(20000); - qm.forceCompleteQuest(); + qm.gainItem(4011008, -1); + qm.gainExp(20000); + + qm.sendNext("We're in great trouble, if it is like this. And it really seems like it. If the Royal Cactus Deo has gone insane, Ariant is done for. You, can you do something to defeat Deo? We really need your help now."); + } else if (status == 5) { qm.dispose(); } } diff --git a/scripts/quest/4647.js b/scripts/quest/4647.js index c26f42341b..0e18b92d34 100644 --- a/scripts/quest/4647.js +++ b/scripts/quest/4647.js @@ -40,16 +40,14 @@ function end(mode, type, selection) { status--; if (status == 0) { if(qm.haveItem(5460000)) { - qm.sendOk("You got the Pet Snack! Thanks! You can use these to feed multiple pets at once!"); + qm.completeQuest(); qm.teachSkill(8, 1, 1, -1); qm.gainItem(5460000, -1, false); - qm.completeQuest(); - qm.dispose(); + qm.sendOk("You got the Pet Snack! Thanks! You can use these to feed multiple pets at once!"); } else { qm.sendOk("Get me the Pet Snack! It can be found in a very big shop...."); - qm.dispose(); } - } else { + } else if (status == 1) { qm.dispose(); } } diff --git a/scripts/quest/4659.js b/scripts/quest/4659.js index b2d3bb6c23..2e50f3ca01 100644 --- a/scripts/quest/4659.js +++ b/scripts/quest/4659.js @@ -52,9 +52,10 @@ function end(mode, type, selection) { qm.sendNext("Great job on finding your evolution materials. I will now give you a robot."); } else if (status == 1) { - if (qm.isQuestCompleted(4659)) + if (qm.isQuestCompleted(4659)) { qm.dropMessage(1, "how did this get here?"); - else if (qm.canHold(5000048)){ + qm.dispose(); + } else if (qm.canHold(5000048)){ var pet = 0; var after; var i; @@ -108,8 +109,10 @@ function end(mode, type, selection) { // var petId = MaplePet.createPet(rand + 5000049, level, closeness, fullness); // if (petId == -1) return; // MapleInventoryManipulator.addById(qm.getClient(), rand+5000049, 1, "", petId); - } else + qm.dispose(); + } else { qm.dropMessage(1,"Your inventory is full"); - qm.dispose(); + qm.dispose(); + } } } \ No newline at end of file diff --git a/scripts/quest/6033.js b/scripts/quest/6033.js index a44563086f..3362c48d8f 100644 --- a/scripts/quest/6033.js +++ b/scripts/quest/6033.js @@ -48,12 +48,12 @@ function end(mode, type, selection) { qm.dispose(); return; } - } else { + } else if (status == 2) { + qm.forceCompleteQuest(); + var skillid = Math.floor(qm.getPlayer().getJob().getId() / 1000) * 10000000 + 1007; qm.teachSkill(skillid, 2, 3, -1); - qm.gainExp(230000); - qm.forceCompleteQuest(); qm.dispose(); } } diff --git a/scripts/quest/6036.js b/scripts/quest/6036.js index b04c3e9c85..af09ed2295 100644 --- a/scripts/quest/6036.js +++ b/scripts/quest/6036.js @@ -48,14 +48,13 @@ function end(mode, type, selection) { qm.dispose(); return; } - } else { + } else if (status == 2) { + qm.forceCompleteQuest(); + qm.gainItem(4031980, -1); - var skillid = Math.floor(qm.getPlayer().getJob().getId() / 1000) * 10000000 + 1007; qm.teachSkill(skillid, 3, 3, -1); - qm.gainExp(300000); - qm.forceCompleteQuest(); qm.dispose(); } diff --git a/scripts/quest/8185.js b/scripts/quest/8185.js index b4623a147c..dccab63ba8 100644 --- a/scripts/quest/8185.js +++ b/scripts/quest/8185.js @@ -100,7 +100,8 @@ function end(mode, type, selection) { //SpawnPetHandler.evolve(qm.getPlayer().getClient(), 5000029, after); qm.sendOk("#bSWEET! IT WORKED!#k Your dragon has grown beautifully! #rYou may find your new pet under your 'CASH' inventory.\r #kIt used to be a #b #i5000029##t5000029##k, and now it's \r a #b#i" + after + "##t" + after + "##k!\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n#v"+after+"# #t"+after+"#"); - qm.dispose(); - } + } else if (status == 5) { + qm.dispose(); + } } } \ No newline at end of file diff --git a/scripts/quest/8189.js b/scripts/quest/8189.js index f14d596084..64b6b82f5b 100644 --- a/scripts/quest/8189.js +++ b/scripts/quest/8189.js @@ -63,6 +63,7 @@ function end(mode, type, selection) { if (id < 5000029 || id > 5000033) { qm.sendOk("Something wrong, try again."); qm.dispose(); + return; } var rand = 1 + Math.floor(Math.random() * 10); var after = 0; @@ -77,6 +78,7 @@ function end(mode, type, selection) { } else { qm.sendOk("Something wrong. Try again."); qm.dispose(); + return; } /*if (name.equals(MapleItemInformationProvider.getInstance().getName(id))) { @@ -88,7 +90,8 @@ function end(mode, type, selection) { qm.evolvePet(pet, after); qm.sendOk("Woo! It worked again! #rYou may find your new pet under your 'CASH' inventory.\r #kIt used to be a #b#i" + id + "##t" + id + "##k, and now it's \r a#b #i" + after + "##t" + after + "##k! \r\n Come back with 10,000 mesos and another Rock of Evolution if you don't like it!\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n#v"+after+"# #t"+after+"#"); - qm.dispose(); - } + } else if (status == 3) { + qm.dispose(); + } } } \ No newline at end of file diff --git a/scripts/quest/8219.js b/scripts/quest/8219.js index d99e0bfd81..ff770041d5 100644 --- a/scripts/quest/8219.js +++ b/scripts/quest/8219.js @@ -22,9 +22,10 @@ function start(mode, type, selection) { } if (status == 0) qm.sendAcceptDecline("The time is now, kid. We have all the preparations complete to further research for why all these oddities have been happening lately. I also must introduce you to my brother, Jack. "); - if (status == 1){ + else if (status == 1){ qm.sendOk("He is currently wandering around the Crimsonwood Mountain, past the sinister Phantom Forest, in the track to the Crimsonwood Keep. Your next destination is there, may your journey be a safe one."); qm.forceStartQuest(); + } else if (status == 2) { qm.dispose(); } } @@ -48,14 +49,15 @@ function end(mode, type, selection) { } else if (status == 2){ if(qm.canHold(3992040, 1)) { + qm.forceCompleteQuest(); qm.gainItem(3992040, 1); qm.gainExp(175000); - qm.forceCompleteQuest(); + qm.dispose(); } else { qm.sendOk("Hey, you don't have a slot in your SETUP inventory for what I have to give to you. Solve that minor issue of yours then talk to me."); } - + } else if (status == 3) { qm.dispose(); - } + } } diff --git a/scripts/quest/8221.js b/scripts/quest/8221.js index 07e77ed2e4..21a1976bc4 100644 --- a/scripts/quest/8221.js +++ b/scripts/quest/8221.js @@ -26,6 +26,7 @@ function start(mode, type, selection) { else if (status == 1){ qm.sendOk("Okay, I need you to have these items on hand first: #b10 #t4010006##k, #b4 #t4032005##k and #b1 #t4004000##k. Go!"); qm.forceStartQuest(); - qm.dispose(); - } + } else if (status == 2) { + qm.dispose(); + } } diff --git a/scripts/quest/8223.js b/scripts/quest/8223.js index 84481e2964..da61f86149 100644 --- a/scripts/quest/8223.js +++ b/scripts/quest/8223.js @@ -22,9 +22,10 @@ function start(mode, type, selection) { } if (status == 0) qm.sendAcceptDecline("Oh, Jack sent you here? Good timing, I'm planning alongside Jack and others to storm the Keep and retake it from the Twisted Masters what is ours by right. You seem ready to fight alongside us, right?"); - if (status == 1){ + else if (status == 1){ qm.sendOk("Great! Your mission now is to rack down some numbers of their army and weaken their defenses by all effects. Defeat 75 of each: Windraider, Firebrand and Nightshadow, then return to me to report."); qm.forceStartQuest(); - qm.dispose(); - } + } else if (status == 2) { + qm.dispose(); + } } diff --git a/scripts/quest/8224.js b/scripts/quest/8224.js index 04a3c52d39..95844d8e56 100644 --- a/scripts/quest/8224.js +++ b/scripts/quest/8224.js @@ -25,6 +25,7 @@ function start(mode, type, selection) { else if (status == 1){ qm.sendOk("Ok. I need you to hunt down #bthose fake trees#k in the forest, and collect 50 of their drops as proof that you made your part on this."); qm.forceStartQuest(); + } else if (status == 2) { qm.dispose(); } } diff --git a/scripts/quest/8225.js b/scripts/quest/8225.js index 8bb382d08d..90fadcfb70 100644 --- a/scripts/quest/8225.js +++ b/scripts/quest/8225.js @@ -25,6 +25,7 @@ function start(mode, type, selection) { else if (status == 1){ qm.sendOk("Very well. To prove your valor among our ranks, you must first pass on a little challenge: you have to be able to move extraordinaly well around here, known of all secrets these woods holds. Trace a #bmap of the Phantom Forest#k, then come talk to me. I shall then evaluate if you're worth to be with us."); qm.forceStartQuest(); - qm.dispose(); - } + } else if (status == 2) { + qm.dispose(); + } } diff --git a/scripts/quest/8226.js b/scripts/quest/8226.js index 7f84f351b9..3c4fb90ae1 100644 --- a/scripts/quest/8226.js +++ b/scripts/quest/8226.js @@ -25,6 +25,7 @@ function start(mode, type, selection) { else if (status == 1){ qm.sendOk("Your next mission is: defeat the Elderwraiths that roam this forest. These are a tough bunch though, so stay alert. I need you to bring me 100 #t4032010# as proof of your duty."); qm.forceStartQuest(); - qm.dispose(); - } + } else if (status == 2) { + qm.dispose(); + } } diff --git a/scripts/quest/8227.js b/scripts/quest/8227.js index 4781e2d169..ab61a188d1 100644 --- a/scripts/quest/8227.js +++ b/scripts/quest/8227.js @@ -30,7 +30,7 @@ function start(mode, type, selection) { } else { qm.sendOk("Hey. There's no slot on your ETC."); } - + } else if (status == 2) { qm.dispose(); } } @@ -53,7 +53,7 @@ function end(mode, type, selection) { } else { qm.sendOk("You don't brought the coded letter Jack said? Come on, kid, we need that to decipher our enemies' next step!"); } - + } else if (status == 1){ qm.dispose(); } } diff --git a/scripts/quest/8228.js b/scripts/quest/8228.js index a17465293f..ef54ea70ae 100644 --- a/scripts/quest/8228.js +++ b/scripts/quest/8228.js @@ -30,7 +30,7 @@ function start(mode, type, selection) { } else { qm.sendOk("Hey. There's no slot on your ETC."); } - + } else if (status == 2){ qm.dispose(); } } @@ -53,7 +53,7 @@ function end(mode, type, selection) { } else { qm.sendOk("I'm afraid you don't have the letter you claimed to have with you."); } - + } else if (status == 1) { qm.dispose(); } } diff --git a/scripts/quest/8230.js b/scripts/quest/8230.js index 0f3507e9a2..f1983e82d4 100644 --- a/scripts/quest/8230.js +++ b/scripts/quest/8230.js @@ -25,6 +25,7 @@ function start(mode, type, selection) { else if (status == 1) { qm.sendOk("That's the thing: the Twisted Masters, great figures that currently holds seize of the Crimsonwood Keep, have planned a large-scale attack to the New Leaf City, that may be happening on the next few days. I can't just stay here observing while they prepare for this attack. However, I can't just leave this position, I must keep an eye on their moves at all costs. There's where you enter: go find Lukan, knight of the past Crimsonwood Keep, that is currently wandering around the woods, and receive from him further orders, he knows what to do."); qm.forceStartQuest(); + } else if (status == 2) { qm.dispose(); } } @@ -41,7 +42,7 @@ function end(mode, type, selection) { } else { qm.sendOk("The folks back there on the city are counting on you on this one. Please hurry up."); } - - qm.dispose(); - } + } else if (status == 1) { + qm.dispose(); + } } \ No newline at end of file diff --git a/scripts/quest/8231.js b/scripts/quest/8231.js index 29da40c564..8d339bb87e 100644 --- a/scripts/quest/8231.js +++ b/scripts/quest/8231.js @@ -28,6 +28,7 @@ function start(mode, type, selection) { var reqs = "#r30 #t4032031##k"; qm.sendOk("Very well. Get me #r" + reqs + "#k, asap. The NLC is counting on you."); qm.forceStartQuest(); + } else if (status == 2) { qm.dispose(); } } \ No newline at end of file diff --git a/scripts/quest/8232.js b/scripts/quest/8232.js index 29da40c564..8d339bb87e 100644 --- a/scripts/quest/8232.js +++ b/scripts/quest/8232.js @@ -28,6 +28,7 @@ function start(mode, type, selection) { var reqs = "#r30 #t4032031##k"; qm.sendOk("Very well. Get me #r" + reqs + "#k, asap. The NLC is counting on you."); qm.forceStartQuest(); + } else if (status == 2) { qm.dispose(); } } \ No newline at end of file diff --git a/scripts/quest/8233.js b/scripts/quest/8233.js index e6d894a7ab..40ff75b5ea 100644 --- a/scripts/quest/8233.js +++ b/scripts/quest/8233.js @@ -28,6 +28,7 @@ function start(mode, type, selection) { var reqs = "#r30 #t4032011##k"; qm.sendOk("Very well. Get me #r" + reqs + "#k, asap. The NLC is counting on you."); qm.forceStartQuest(); + } else if (status == 2) { qm.dispose(); } } \ No newline at end of file diff --git a/scripts/quest/8234.js b/scripts/quest/8234.js index e6d894a7ab..40ff75b5ea 100644 --- a/scripts/quest/8234.js +++ b/scripts/quest/8234.js @@ -28,6 +28,7 @@ function start(mode, type, selection) { var reqs = "#r30 #t4032011##k"; qm.sendOk("Very well. Get me #r" + reqs + "#k, asap. The NLC is counting on you."); qm.forceStartQuest(); + } else if (status == 2) { qm.dispose(); } } \ No newline at end of file diff --git a/scripts/quest/8235.js b/scripts/quest/8235.js index 3ec42e6726..1ea6062dd9 100644 --- a/scripts/quest/8235.js +++ b/scripts/quest/8235.js @@ -28,6 +28,7 @@ function start(mode, type, selection) { var reqs = "#r1 #t4031903##k"; qm.sendOk("Very well. Get me #r" + reqs + "#k, asap. The NLC is counting on you."); qm.forceStartQuest(); + } else if (status == 2) { qm.dispose(); } } \ No newline at end of file diff --git a/scripts/quest/8236.js b/scripts/quest/8236.js index 3ec42e6726..1ea6062dd9 100644 --- a/scripts/quest/8236.js +++ b/scripts/quest/8236.js @@ -28,6 +28,7 @@ function start(mode, type, selection) { var reqs = "#r1 #t4031903##k"; qm.sendOk("Very well. Get me #r" + reqs + "#k, asap. The NLC is counting on you."); qm.forceStartQuest(); + } else if (status == 2) { qm.dispose(); } } \ No newline at end of file diff --git a/scripts/quest/8237.js b/scripts/quest/8237.js index c756159db3..d47ec715ec 100644 --- a/scripts/quest/8237.js +++ b/scripts/quest/8237.js @@ -28,6 +28,7 @@ function start(mode, type, selection) { var reqs = "#r1 #t4032013##k"; qm.sendOk("Very well. Get me #r" + reqs + "#k, asap. The NLC is counting on you."); qm.forceStartQuest(); + } else if (status == 2) { qm.dispose(); } } \ No newline at end of file diff --git a/scripts/quest/8238.js b/scripts/quest/8238.js index c756159db3..d47ec715ec 100644 --- a/scripts/quest/8238.js +++ b/scripts/quest/8238.js @@ -28,6 +28,7 @@ function start(mode, type, selection) { var reqs = "#r1 #t4032013##k"; qm.sendOk("Very well. Get me #r" + reqs + "#k, asap. The NLC is counting on you."); qm.forceStartQuest(); + } else if (status == 2) { qm.dispose(); } } \ No newline at end of file diff --git a/scripts/reactor/2008007.js b/scripts/reactor/2008007.js new file mode 100644 index 0000000000..da63c803c2 --- /dev/null +++ b/scripts/reactor/2008007.js @@ -0,0 +1,29 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2018 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Ronan + * + * 2008007.js: OrbisPQ jail obstacle trigger +*/ + +function hit() { + var map = rm.getMap(); + map.moveEnvironment("trap" + rm.getReactor().getName()[5], 1); +} \ No newline at end of file diff --git a/sql/db_database.sql b/sql/db_database.sql index d8a8dc3824..da70aa9637 100644 --- a/sql/db_database.sql +++ b/sql/db_database.sql @@ -12828,7 +12828,7 @@ CREATE TABLE IF NOT EXISTS `dueypackages` ( `SenderName` varchar(13) NOT NULL, `Mesos` int(10) unsigned DEFAULT '0', `TimeStamp` timestamp NOT NULL DEFAULT '2015-01-01 05:00:00', - `Message` varchar(200) NOT NULL DEFAULT "", + `Message` varchar(200) NULL, `Checked` tinyint(1) unsigned DEFAULT '1', `Type` tinyint(1) unsigned DEFAULT '0', PRIMARY KEY (`PackageId`) diff --git a/src/client/MapleCharacter.java b/src/client/MapleCharacter.java index 7e588748cd..bfa645f25a 100644 --- a/src/client/MapleCharacter.java +++ b/src/client/MapleCharacter.java @@ -168,6 +168,7 @@ import server.maps.MapleMapItem; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import org.apache.mina.util.ConcurrentHashSet; +import scripting.quest.QuestActionManager; import server.maps.FieldLimit; public class MapleCharacter extends AbstractMapleCharacterObject { @@ -305,6 +306,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { private List viptrockmaps = new ArrayList<>(); private Map events = new LinkedHashMap<>(); private PartyQuest partyQuest = null; + private List> npcUpdateQuests = new LinkedList<>(); private MapleDragon dragon = null; private MapleRing marriageRing; private int marriageItemid = -1; @@ -1173,7 +1175,13 @@ public class MapleCharacter extends AbstractMapleCharacterObject { if (this.isCygnus()) { gainAp(7, true); } else { - gainAp(5, true); + if (ServerConstants.USE_STARTING_AP_4 || newJob.getId() % 10 >= 1) { + gainAp(5, true); + } + } + } else { // thanks Periwinks for noticing an AP shortage from lower levels + if (ServerConstants.USE_STARTING_AP_4 && newJob.getId() % 1000 >= 1) { + gainAp(4, true); } } @@ -3877,10 +3885,8 @@ public class MapleCharacter extends AbstractMapleCharacterObject { List> toCancel = deregisterBuffStats(buffstats); if (effect.isMonsterRiding()) { - if (effect.getSourceId() != Corsair.BATTLE_SHIP) { - this.getClient().getWorldServer().unregisterMountHunger(this); - this.getMount().setActive(false); - } + this.getClient().getWorldServer().unregisterMountHunger(this); + this.getMount().setActive(false); } if (!overwrite) { @@ -6168,7 +6174,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { spGain += (expectedSp - curSp); } - return getSpGain(spGain, curSp, job); + return getSpGain(spGain, curSp, newJob); } private int getUsedSp(MapleJob job) { @@ -7391,7 +7397,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { continue; } if (q.progress(id)) { - client.announce(MaplePacketCreator.updateQuest(q, false)); + announceUpdateQuest(DelayedQuestUpdate.UPDATE, q, false); } } } @@ -7400,8 +7406,9 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } } - public void mount(int id, int skillid) { + public MapleMount mount(int id, int skillid) { maplemount = new MapleMount(this, id, skillid); + return maplemount; } private void playerDead() { @@ -9632,9 +9639,9 @@ public class MapleCharacter extends AbstractMapleCharacterObject { quests.put(q.getId(), qs); } - announce(MaplePacketCreator.updateQuest(qs, false)); + announceUpdateQuest(DelayedQuestUpdate.UPDATE, qs, false); if (qs.getQuest().getInfoNumber() > 0) { - announce(MaplePacketCreator.updateQuest(qs, true)); + announceUpdateQuest(DelayedQuestUpdate.UPDATE, qs, true); } announce(MaplePacketCreator.updateQuestInfo((short) qs.getQuest().getId(), qs.getNpc())); } @@ -9657,14 +9664,61 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } } + public enum DelayedQuestUpdate { // quest updates allow player actions during NPC talk... + UPDATE, FORFEIT, COMPLETE + } + + private void announceUpdateQuestInternal(Pair questUpdate) { + Object[] objs = questUpdate.getRight(); + + switch (questUpdate.getLeft()) { + case UPDATE: + announce(MaplePacketCreator.updateQuest((MapleQuestStatus) objs[0], (Boolean) objs[1])); + break; + + case FORFEIT: + announce(MaplePacketCreator.forfeitQuest((Short) objs[0])); + break; + + case COMPLETE: + announce(MaplePacketCreator.completeQuest((Short) objs[0], (Long) objs[1])); + break; + } + } + + public void announceUpdateQuest(DelayedQuestUpdate questUpdateType, Object... params) { + Pair p = new Pair<>(questUpdateType, params); + MapleClient c = this.getClient(); + if (c.getQM() != null || c.getCM() != null) { + synchronized (npcUpdateQuests) { + npcUpdateQuests.add(p); + } + } else { + announceUpdateQuestInternal(p); + } + } + + public void flushDelayedUpdateQuests() { + List> qmQuestUpdateList; + + synchronized (npcUpdateQuests) { + qmQuestUpdateList = new ArrayList<>(npcUpdateQuests); + npcUpdateQuests.clear(); + } + + for (Pair q : qmQuestUpdateList) { + announceUpdateQuestInternal(q); + } + } + public void updateQuest(MapleQuestStatus quest) { synchronized (quests) { quests.put(quest.getQuestID(), quest); } if (quest.getStatus().equals(MapleQuestStatus.Status.STARTED)) { - announce(MaplePacketCreator.updateQuest(quest, false)); + announceUpdateQuest(DelayedQuestUpdate.UPDATE, quest, false); if (quest.getQuest().getInfoNumber() > 0) { - announce(MaplePacketCreator.updateQuest(quest, true)); + announceUpdateQuest(DelayedQuestUpdate.UPDATE, quest, true); } announce(MaplePacketCreator.updateQuestInfo((short) quest.getQuest().getId(), quest.getNpc())); } else if (quest.getStatus().equals(MapleQuestStatus.Status.COMPLETED)) { @@ -9675,11 +9729,11 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } quest.setCompleted(quest.getCompleted() + 1); // count quest completed Jayd's idea - announce(MaplePacketCreator.completeQuest(questid, quest.getCompletionTime())); + announceUpdateQuest(DelayedQuestUpdate.COMPLETE, questid, quest.getCompletionTime()); } else if (quest.getStatus().equals(MapleQuestStatus.Status.NOT_STARTED)) { - announce(MaplePacketCreator.updateQuest(quest, false)); + announceUpdateQuest(DelayedQuestUpdate.UPDATE, quest, false); if (quest.getQuest().getInfoNumber() > 0) { - announce(MaplePacketCreator.updateQuest(quest, true)); + announceUpdateQuest(DelayedQuestUpdate.UPDATE, quest, true); } } } diff --git a/src/client/creator/CharacterFactoryRecipe.java b/src/client/creator/CharacterFactoryRecipe.java index 80b391c39c..74d73f001b 100644 --- a/src/client/creator/CharacterFactoryRecipe.java +++ b/src/client/creator/CharacterFactoryRecipe.java @@ -23,6 +23,7 @@ import client.MapleJob; import client.Skill; import client.inventory.Item; import client.inventory.MapleInventoryType; +import constants.ServerConstants; import java.util.concurrent.atomic.AtomicInteger; import java.util.LinkedHashMap; import java.util.LinkedList; @@ -39,7 +40,7 @@ public class CharacterFactoryRecipe { private int level, map, top, bottom, shoes, weapon; private int str = 4, dex = 4, int_ = 4, luk = 4; private int maxHp = 50, maxMp = 5; - private int ap = 9, sp = 0; + private int ap = 0, sp = 0; private int meso = 0; private List> skills = new LinkedList<>(); @@ -54,6 +55,15 @@ public class CharacterFactoryRecipe { this.bottom = bottom; this.shoes = shoes; this.weapon = weapon; + + if (!ServerConstants.USE_STARTING_AP_4) { + if (ServerConstants.USE_AUTOASSIGN_STARTERS_AP) { + str = 12; + dex = 5; + } else { + ap = 9; + } + } } public void setStr(int v) { diff --git a/src/client/processor/DueyProcessor.java b/src/client/processor/DueyProcessor.java index 793b0c179e..d629e565c2 100644 --- a/src/client/processor/DueyProcessor.java +++ b/src/client/processor/DueyProcessor.java @@ -60,6 +60,7 @@ import tools.Pair; public class DueyProcessor { public enum Actions { + TOSERVER_RECV_ITEM(0x00), TOSERVER_SEND_ITEM(0x02), TOSERVER_CLAIM_PACKAGE(0x04), TOSERVER_REMOVE_PACKAGE(0x05), @@ -113,15 +114,6 @@ public class DueyProcessor { return null; } - private static Timestamp getCurrentDate(boolean quick) { - Calendar cal = Calendar.getInstance(); - if (!quick) { - cal.add(Calendar.DATE, 1); - } - - return new Timestamp(cal.getTime().getTime()); - } - private static void showDueyNotification(MapleClient c, MapleCharacter player) { Connection con = null; PreparedStatement ps = null; @@ -204,7 +196,7 @@ public class DueyProcessor { dueypack.setSender(rs.getString("SenderName")); dueypack.setMesos(rs.getInt("Mesos")); - dueypack.setSentTime(rs.getTimestamp("TimeStamp")); + dueypack.setSentTime(rs.getTimestamp("TimeStamp"), rs.getBoolean("Type")); dueypack.setMessage(rs.getString("Message")); return dueypack; @@ -250,7 +242,7 @@ public class DueyProcessor { ps.setInt(1, toCid); ps.setString(2, sender); ps.setInt(3, mesos); - ps.setTimestamp(4, getCurrentDate(quick)); + ps.setTimestamp(4, new Timestamp(System.currentTimeMillis())); ps.setString(5, message); ps.setInt(6, quick ? 1 : 0); @@ -515,7 +507,11 @@ public class DueyProcessor { } c.getPlayer().setNpcCooldown(timeNow); - c.announce(MaplePacketCreator.sendDuey(quickDelivery ? 0x1A : 0x8, loadPackages(c.getPlayer()))); + if (quickDelivery) { + c.announce(MaplePacketCreator.sendDuey(0x1A, null)); + } else { + c.announce(MaplePacketCreator.sendDuey(0x8, loadPackages(c.getPlayer()))); + } } finally { c.releaseClient(); } @@ -523,7 +519,7 @@ public class DueyProcessor { } public static void dueyCreatePackage(Item item, int mesos, String sender, int recipientCid) { - int packageId = createPackage(mesos, "", sender, recipientCid, false); + int packageId = createPackage(mesos, null, sender, recipientCid, false); if (packageId != -1) { insertPackageItem(packageId, item); } diff --git a/src/constants/GameConstants.java b/src/constants/GameConstants.java index b7e64813d4..a869edb18b 100644 --- a/src/constants/GameConstants.java +++ b/src/constants/GameConstants.java @@ -7,9 +7,16 @@ import java.util.HashMap; import java.util.Map; import client.MapleJob; import constants.skills.Aran; +import java.io.File; import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.Locale; +import provider.MapleData; +import provider.MapleDataDirectoryEntry; +import provider.MapleDataFileEntry; +import provider.MapleDataProvider; +import provider.MapleDataProviderFactory; +import provider.MapleDataTool; import server.maps.MapleMap; import server.maps.FieldLimit; import server.quest.MapleQuest; @@ -38,6 +45,8 @@ public class GameConstants { public static final MapleDisease[] CPQ_DISEASES = {MapleDisease.SLOW, MapleDisease.SEDUCE, MapleDisease.STUN, MapleDisease.POISON, MapleDisease.SEAL, MapleDisease.DARKNESS, MapleDisease.WEAKEN, MapleDisease.CURSE}; + public static final int MAX_FIELD_MOB_DAMAGE = getMaxObstacleMobDamageFromWz() * 2; + public static int getPlayerBonusDropRate(int slot) { return(DROP_RATE_GAIN[slot]); } @@ -672,4 +681,32 @@ public class GameConstants { return 0.0f; } } + + private static int getMaxObstacleMobDamageFromWz() { + MapleDataProvider mapSource = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/Map.wz")); + int maxMobDmg = 0; + + MapleDataDirectoryEntry root = mapSource.getRoot(); + for (MapleDataDirectoryEntry objData : root.getSubdirectories()) { + if (!objData.getName().contentEquals("Obj")) { + continue; + } + + for (MapleDataFileEntry obj : objData.getFiles()) { + for (MapleData l0 : mapSource.getData(objData.getName() + "/" + obj.getName()).getChildren()) { + for (MapleData l1 : l0.getChildren()) { + for (MapleData l2 : l1.getChildren()) { + int objDmg = MapleDataTool.getIntConvert("s1/mobdamage", l2, 0); + if (maxMobDmg < objDmg) { + maxMobDmg = objDmg; + } + } + } + } + } + } + + return maxMobDmg; + } + } diff --git a/src/constants/ServerConstants.java b/src/constants/ServerConstants.java index 0ace201a7b..b037901aec 100644 --- a/src/constants/ServerConstants.java +++ b/src/constants/ServerConstants.java @@ -80,6 +80,7 @@ public class ServerConstants { public static final boolean USE_PARTY_FOR_STARTERS = true; //Players level 10 or below can create/invite other players on the given level range. public static final boolean USE_AUTOASSIGN_STARTERS_AP = false; //Beginners level 10 or below have their AP autoassigned (they can't choose to levelup a stat). Set true ONLY if the localhost doesn't support AP assigning for beginners level 10 or below. public static final boolean USE_AUTOASSIGN_SECONDARY_CAP = true;//Prevents AP autoassign from spending on secondary stats after the player class' cap (defined on the autoassign handler) has been reached. + public static final boolean USE_STARTING_AP_4 = true; //Use early-GMS 4/4/4/4 starting stats. To overcome AP shortage, this gives 4AP/5AP at 1st/2nd job advancements. public static final boolean USE_AUTOBAN = false; //Commands the server to detect infractors automatically. public static final boolean USE_AUTOBAN_LOG = true; //Log autoban related messages. Still logs even with USE_AUTOBAN disabled. public static final boolean USE_AUTOSAVE = true; //Enables server autosaving feature (saves characters to DB each 1 hour). diff --git a/src/net/PacketProcessor.java b/src/net/PacketProcessor.java index 0112631fff..16d7accdc3 100644 --- a/src/net/PacketProcessor.java +++ b/src/net/PacketProcessor.java @@ -245,6 +245,7 @@ public final class PacketProcessor { registerHandler(RecvOpcode.PLAYER_MAP_TRANSFER, new PlayerMapTransitionHandler()); registerHandler(RecvOpcode.USE_MAPLELIFE, new UseMapleLifeHandler()); registerHandler(RecvOpcode.USE_CATCH_ITEM, new UseCatchItemHandler()); + registerHandler(RecvOpcode.FIELD_DAMAGE_MOB, new FieldDamageMobHandler()); registerHandler(RecvOpcode.MOB_DAMAGE_MOB_FRIENDLY, new MobDamageMobFriendlyHandler()); registerHandler(RecvOpcode.PARTY_SEARCH_REGISTER, new PartySearchRegisterHandler()); registerHandler(RecvOpcode.PARTY_SEARCH_START, new PartySearchStartHandler()); diff --git a/src/net/opcodes/RecvOpcode.java b/src/net/opcodes/RecvOpcode.java index 3d1a942f09..e357620210 100644 --- a/src/net/opcodes/RecvOpcode.java +++ b/src/net/opcodes/RecvOpcode.java @@ -170,6 +170,7 @@ public enum RecvOpcode { MOVE_DRAGON(0xB5), MOVE_LIFE(0xBC), AUTO_AGGRO(0xBD), + FIELD_DAMAGE_MOB(0xBF), MOB_DAMAGE_MOB_FRIENDLY(0xC0), MONSTER_BOMB(0xC1), MOB_DAMAGE_MOB(0xC2), diff --git a/src/net/server/Server.java b/src/net/server/Server.java index 7892ce7d41..94537cb291 100644 --- a/src/net/server/Server.java +++ b/src/net/server/Server.java @@ -1868,12 +1868,12 @@ public class Server { } } - resetServerWorlds(); - ThreadManager.getInstance().stop(); TimerManager.getInstance().purge(); TimerManager.getInstance().stop(); - + + resetServerWorlds(); + System.out.println("Worlds + Channels are offline."); acceptor.unbind(); acceptor = null; diff --git a/src/net/server/channel/handlers/AbstractDealDamageHandler.java b/src/net/server/channel/handlers/AbstractDealDamageHandler.java index 576bf33f23..7172750966 100644 --- a/src/net/server/channel/handlers/AbstractDealDamageHandler.java +++ b/src/net/server/channel/handlers/AbstractDealDamageHandler.java @@ -321,8 +321,9 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl Skill steal = SkillFactory.getSkill(Bandit.STEAL); if (monster.getStolen().size() < 1) { // One steal per mob <3 if (steal.getEffect(player.getSkillLevel(steal)).makeChanceResult()) { - MapleMonsterInformationProvider mi = MapleMonsterInformationProvider.getInstance(); + monster.addStolen(0); + MapleMonsterInformationProvider mi = MapleMonsterInformationProvider.getInstance(); List dropPool = mi.retrieveDropPool(monster.getId()); if(!dropPool.isEmpty()) { Integer rndPool = (int) Math.floor(Math.random() * dropPool.get(dropPool.size() - 1)); @@ -441,11 +442,13 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl } else { mortalBlow = SkillFactory.getSkill(Sniper.MORTAL_BLOW); } - if (player.getSkillLevel(mortalBlow) > 0) { - MapleStatEffect mortal = mortalBlow.getEffect(player.getSkillLevel(mortalBlow)); + + int skillLevel = player.getSkillLevel(mortalBlow); + if (skillLevel > 0) { + MapleStatEffect mortal = mortalBlow.getEffect(skillLevel); if (monster.getHp() <= (monster.getStats().getHp() * mortal.getX()) / 100) { if (Randomizer.rand(1, 100) <= mortal.getY()) { - monster.getMap().killMonster(monster, player, true); + map.damageMonster(player, monster, Integer.MAX_VALUE); // thanks Conrad for noticing reduced EXP gain from skill kill } } } diff --git a/src/net/server/channel/handlers/CashShopSurpriseHandler.java b/src/net/server/channel/handlers/CashShopSurpriseHandler.java index 7a12f9acc0..9f6e9d697a 100644 --- a/src/net/server/channel/handlers/CashShopSurpriseHandler.java +++ b/src/net/server/channel/handlers/CashShopSurpriseHandler.java @@ -40,12 +40,10 @@ public class CashShopSurpriseHandler extends AbstractMaplePacketHandler { Pair cssResult = cs.openCashShopSurprise(); if(cssResult != null) { - //Item cssItem = cssResult.getLeft(), cssBox = cssResult.getRight(); - //c.announce(MaplePacketCreator.onCashGachaponOpenSuccess(c.getAccID(), cssBox.getSN(), cssBox.getQuantity(), cssItem, cssItem.getItemId(), cssItem.getQuantity(), true)); - c.announce(MaplePacketCreator.showCashShopMessage((byte) 0xA4)); + Item cssItem = cssResult.getLeft(), cssBox = cssResult.getRight(); + c.announce(MaplePacketCreator.onCashGachaponOpenSuccess(c.getAccID(), cssBox.getSN(), cssBox.getQuantity(), cssItem, cssItem.getItemId(), cssItem.getQuantity(), true)); } else { - //c.announce(MaplePacketCreator.onCashItemGachaponOpenFailed()); - c.announce(MaplePacketCreator.showCashShopMessage((byte) 0x00)); + c.announce(MaplePacketCreator.onCashItemGachaponOpenFailed()); } } } diff --git a/src/net/server/channel/handlers/DueyHandler.java b/src/net/server/channel/handlers/DueyHandler.java index 9f7166c1e0..89fc361282 100644 --- a/src/net/server/channel/handlers/DueyHandler.java +++ b/src/net/server/channel/handlers/DueyHandler.java @@ -37,16 +37,18 @@ public final class DueyHandler extends AbstractMaplePacketHandler { c.announce(MaplePacketCreator.enableActions()); return; } - + byte operation = slea.readByte(); - if (operation == DueyProcessor.Actions.TOSERVER_SEND_ITEM.getCode()) { + if (operation == DueyProcessor.Actions.TOSERVER_RECV_ITEM.getCode()) { // on click 'O' Button, thanks inhyuk + DueyProcessor.dueySendTalk(c, false); + } else if (operation == DueyProcessor.Actions.TOSERVER_SEND_ITEM.getCode()) { byte inventId = slea.readByte(); short itemPos = slea.readShort(); short amount = slea.readShort(); int mesos = slea.readInt(); String recipient = slea.readMapleAsciiString(); boolean quick = slea.readByte() != 0; - String message = quick ? slea.readMapleAsciiString() : ""; + String message = quick ? slea.readMapleAsciiString() : null; DueyProcessor.dueySendItem(c, inventId, itemPos, amount, mesos, message, recipient, quick); } else if (operation == DueyProcessor.Actions.TOSERVER_REMOVE_PACKAGE.getCode()) { diff --git a/src/net/server/channel/handlers/FieldDamageMobHandler.java b/src/net/server/channel/handlers/FieldDamageMobHandler.java new file mode 100644 index 0000000000..4ae3153e96 --- /dev/null +++ b/src/net/server/channel/handlers/FieldDamageMobHandler.java @@ -0,0 +1,59 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2018 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import constants.GameConstants; +import net.AbstractMaplePacketHandler; +import server.life.MapleMonster; +import server.life.MapleMonsterInformationProvider; +import server.maps.MapleMap; +import tools.FilePrinter; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public class FieldDamageMobHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + int mobOid = slea.readInt(); // packet structure found thanks to Darter (Rajan) + int dmg = slea.readInt(); + + MapleCharacter chr = c.getPlayer(); + MapleMap map = chr.getMap(); + + if (map.getEnvironment().isEmpty()) { // no environment objects activated to actually hit the mob + FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to use an obstacle on mapid " + map.getId() + " to attack."); + return; + } + + MapleMonster mob = map.getMonsterByOid(mobOid); + if (mob != null) { + if (dmg < 0 || dmg > GameConstants.MAX_FIELD_MOB_DAMAGE) { + FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to use an obstacle on mapid " + map.getId() + " to attack " + MapleMonsterInformationProvider.getInstance().getMobNameFromId(mob.getId()) + " with damage " + dmg); + return; + } + + map.broadcastMessage(chr, MaplePacketCreator.damageMonster(mobOid, dmg), true); + map.damageMonster(chr, mob, dmg); + } + } +} diff --git a/src/net/server/channel/handlers/HealOvertimeHandler.java b/src/net/server/channel/handlers/HealOvertimeHandler.java index dec1b5c1b9..35ab9233d0 100644 --- a/src/net/server/channel/handlers/HealOvertimeHandler.java +++ b/src/net/server/channel/handlers/HealOvertimeHandler.java @@ -25,10 +25,9 @@ import client.MapleCharacter; import client.MapleClient; import client.autoban.AutobanFactory; import client.autoban.AutobanManager; -import constants.GameConstants; import net.AbstractMaplePacketHandler; import net.server.Server; -import server.maps.MapleMapFactory; +import server.maps.MapleMap; import tools.data.input.SeekableLittleEndianAccessor; import tools.MaplePacketCreator; @@ -47,7 +46,8 @@ public final class HealOvertimeHandler extends AbstractMaplePacketHandler { abm.setTimestamp(8, timestamp, 28); // thanks Vcoc & Thora for pointing out d/c happening here if ((abm.getLastSpam(0) + 1500) > timestamp) AutobanFactory.FAST_HP_HEALING.addPoint(abm, "Fast hp healing"); - int abHeal = (int)(77 * MapleMapFactory.getMapRecoveryRate(chr.getMapId()) * 1.5); // thanks Ari for noticing players not getting healed in sauna in certain cases + MapleMap map = chr.getMap(); + int abHeal = (int)(77 * map.getRecovery() * 1.5); // thanks Ari for noticing players not getting healed in sauna in certain cases if (healHP > abHeal) { AutobanFactory.HIGH_HP_HEALING.autoban(chr, "Healing: " + healHP + "; Max is " + abHeal + "."); return; @@ -60,7 +60,10 @@ public final class HealOvertimeHandler extends AbstractMaplePacketHandler { short healMP = slea.readShort(); if (healMP != 0 && healMP < 1000) { abm.setTimestamp(9, timestamp, 28); - if ((abm.getLastSpam(1) + 1500) > timestamp) AutobanFactory.FAST_MP_HEALING.addPoint(abm, "Fast mp healing"); + if ((abm.getLastSpam(1) + 1500) > timestamp) { + AutobanFactory.FAST_MP_HEALING.addPoint(abm, "Fast mp healing"); + return; // thanks resinate for noticing mp being gained even after detection + } chr.addMP(healMP); abm.spam(1, timestamp); } diff --git a/src/net/server/channel/handlers/HiredMerchantRequest.java b/src/net/server/channel/handlers/HiredMerchantRequest.java index 29fe4a2b48..ab3a75e6e1 100644 --- a/src/net/server/channel/handlers/HiredMerchantRequest.java +++ b/src/net/server/channel/handlers/HiredMerchantRequest.java @@ -27,8 +27,12 @@ import java.sql.SQLException; import java.util.Arrays; import client.MapleClient; import constants.GameConstants; +import java.awt.Point; import net.AbstractMaplePacketHandler; +import server.MaplePortal; +import server.maps.MapleMapObject; import server.maps.MapleMapObjectType; +import server.maps.MaplePlayerShop; import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; @@ -40,7 +44,34 @@ public final class HiredMerchantRequest extends AbstractMaplePacketHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { MapleCharacter chr = c.getPlayer(); - if (chr.getMap().getMapObjectsInRange(chr.getPosition(), 23000, Arrays.asList(MapleMapObjectType.HIRED_MERCHANT)).isEmpty() && (GameConstants.isFreeMarketRoom(chr.getMapId()))) { + + try { + for (MapleMapObject mmo : chr.getMap().getMapObjectsInRange(chr.getPosition(), 23000, Arrays.asList(MapleMapObjectType.HIRED_MERCHANT, MapleMapObjectType.PLAYER))) { + if (mmo instanceof MapleCharacter) { + MapleCharacter mc = (MapleCharacter) mmo; + + MaplePlayerShop shop = mc.getPlayerShop(); + if (shop != null && shop.isOwner(mc)) { + chr.announce(MaplePacketCreator.getMiniRoomError(13)); + return; + } + } else { + chr.announce(MaplePacketCreator.getMiniRoomError(13)); + return; + } + } + + Point cpos = chr.getPosition(); + MaplePortal portal = chr.getMap().findClosestTeleportPortal(cpos); + if (portal != null && portal.getPosition().distance(cpos) < 120.0) { + chr.announce(MaplePacketCreator.getMiniRoomError(10)); + return; + } + } catch (Exception e) { + e.printStackTrace(); + } + + if (GameConstants.isFreeMarketRoom(chr.getMapId())) { if (!chr.hasMerchant()) { try { if (ItemFactory.MERCHANT.loadItems(chr.getId(), false).isEmpty() && chr.getMerchantMeso() == 0) { diff --git a/src/net/server/channel/handlers/NPCAnimationHandler.java b/src/net/server/channel/handlers/NPCAnimationHandler.java index d12960167b..372fa4293d 100644 --- a/src/net/server/channel/handlers/NPCAnimationHandler.java +++ b/src/net/server/channel/handlers/NPCAnimationHandler.java @@ -30,6 +30,10 @@ import tools.data.output.MaplePacketLittleEndianWriter; public final class NPCAnimationHandler extends AbstractMaplePacketHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + if (c.getPlayer().isChangingMaps()) { // possible cause of error 38 in some map transition scenarios, thanks Arnah + return; + } + MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); int length = (int) slea.available(); if (length == 6) { // NPC Talk diff --git a/src/net/server/channel/handlers/PlayerInteractionHandler.java b/src/net/server/channel/handlers/PlayerInteractionHandler.java index bd38fa41e7..463dcb4f18 100644 --- a/src/net/server/channel/handlers/PlayerInteractionHandler.java +++ b/src/net/server/channel/handlers/PlayerInteractionHandler.java @@ -34,11 +34,13 @@ import constants.ServerConstants; import net.AbstractMaplePacketHandler; import server.MapleItemInformationProvider; +import server.MaplePortal; import server.MapleTrade; import constants.GameConstants; import server.maps.FieldLimit; import server.maps.MapleHiredMerchant; import server.maps.MapleMapObject; +import server.maps.MapleMapObjectType; import server.maps.MapleMiniGame; import server.maps.MapleMiniGame.MiniGameType; import server.maps.MaplePlayerShop; @@ -49,6 +51,7 @@ import tools.data.input.SeekableLittleEndianAccessor; import java.awt.Point; import java.sql.SQLException; +import java.util.Arrays; /** * @@ -237,13 +240,9 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { return; } - try { - Point cpos = chr.getPosition(); - if (chr.getMap().findClosestWarpPortal(cpos).getPosition().distance(cpos) < 120.0) { - chr.getClient().announce(MaplePacketCreator.getMiniRoomError(10)); - return; - } - } catch (NullPointerException npe) {} + if (!canPlaceStore(chr)) { + return; + } String desc = slea.readMapleAsciiString(); slea.skip(3); @@ -362,6 +361,10 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { c.announce(MaplePacketCreator.hiredMerchantOwnerMaintenanceLeave()); } + + if (!canPlaceStore(chr)) { // thanks Ari for noticing player shops overlapping on opening time + return; + } MaplePlayerShop shop = chr.getPlayerShop(); MapleHiredMerchant merchant = chr.getHiredMerchant(); @@ -797,4 +800,37 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { return false; } + + private static boolean canPlaceStore(MapleCharacter chr) { + try { + for (MapleMapObject mmo : chr.getMap().getMapObjectsInRange(chr.getPosition(), 23000, Arrays.asList(MapleMapObjectType.HIRED_MERCHANT, MapleMapObjectType.PLAYER))) { + if (mmo instanceof MapleCharacter) { + MapleCharacter mc = (MapleCharacter) mmo; + if (mc.getId() == chr.getId()) { + continue; + } + + MaplePlayerShop shop = mc.getPlayerShop(); + if (shop != null && shop.isOwner(mc)) { + chr.announce(MaplePacketCreator.getMiniRoomError(13)); + return false; + } + } else { + chr.announce(MaplePacketCreator.getMiniRoomError(13)); + return false; + } + } + + Point cpos = chr.getPosition(); + MaplePortal portal = chr.getMap().findClosestTeleportPortal(cpos); + if (portal != null && portal.getPosition().distance(cpos) < 120.0) { + chr.announce(MaplePacketCreator.getMiniRoomError(10)); + return false; + } + } catch (Exception e) { + e.printStackTrace(); + } + + return true; + } } diff --git a/src/net/server/channel/handlers/RaiseUIStateHandler.java b/src/net/server/channel/handlers/RaiseUIStateHandler.java index d5add73e1e..e0d602d941 100644 --- a/src/net/server/channel/handlers/RaiseUIStateHandler.java +++ b/src/net/server/channel/handlers/RaiseUIStateHandler.java @@ -1,10 +1,10 @@ package net.server.channel.handlers; +import client.MapleCharacter.DelayedQuestUpdate; import client.MapleClient; import client.MapleQuestStatus; import net.AbstractMaplePacketHandler; import server.quest.MapleQuest; -import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; /** @@ -25,7 +25,7 @@ public class RaiseUIStateHandler extends AbstractMaplePacketHandler { quest.forceStart(c.getPlayer(), 22000); c.getPlayer().updateQuestInfo(quest.getId(), "0"); } else if (mqs.getStatus() == MapleQuestStatus.Status.STARTED) { - c.announce(MaplePacketCreator.updateQuest(mqs, false)); + c.getPlayer().announceUpdateQuest(DelayedQuestUpdate.UPDATE, mqs, false); } else { //c.announce(MaplePacketCreator.updateQuestInfo(mqs.getQuestID(), 22000, "0")); } diff --git a/src/net/server/worker/RespawnWorker.java b/src/net/server/worker/RespawnWorker.java index 3ea15c373f..f5eda668fa 100644 --- a/src/net/server/worker/RespawnWorker.java +++ b/src/net/server/worker/RespawnWorker.java @@ -1,7 +1,9 @@ package net.server.worker; +import net.server.PlayerStorage; import net.server.Server; import net.server.channel.Channel; +import server.maps.MapleMapManager; /** * @author Resinate @@ -11,8 +13,14 @@ public class RespawnWorker implements Runnable { @Override public void run() { for (Channel ch : Server.getInstance().getAllChannels()) { - if (!ch.getPlayerStorage().getAllCharacters().isEmpty()) { - ch.getMapFactory().updateMaps(); + PlayerStorage ps = ch.getPlayerStorage(); + if (ps != null) { + if (!ps.getAllCharacters().isEmpty()) { + MapleMapManager mapManager = ch.getMapFactory(); + if (mapManager != null) { + mapManager.updateMaps(); + } + } } } } diff --git a/src/scripting/AbstractPlayerInteraction.java b/src/scripting/AbstractPlayerInteraction.java index b6f8c031a6..1aea538343 100644 --- a/src/scripting/AbstractPlayerInteraction.java +++ b/src/scripting/AbstractPlayerInteraction.java @@ -53,6 +53,7 @@ import server.partyquest.Pyramid; import server.quest.MapleQuest; import tools.MaplePacketCreator; import client.MapleCharacter; +import client.MapleCharacter.DelayedQuestUpdate; import client.MapleClient; import client.MapleQuestStatus; import client.SkillFactory; @@ -468,12 +469,12 @@ public class AbstractPlayerInteraction { public void resetAllQuestProgress(int qid) { getPlayer().getQuest(MapleQuest.getInstance(qid)).resetAllProgress(); - getClient().announce(MaplePacketCreator.updateQuest(getPlayer().getQuest(MapleQuest.getInstance(qid)), false)); + getPlayer().announceUpdateQuest(DelayedQuestUpdate.UPDATE, getPlayer().getQuest(MapleQuest.getInstance(qid)), false); } public void resetQuestProgress(int qid, int pid) { getPlayer().getQuest(MapleQuest.getInstance(qid)).resetProgress(pid); - getClient().announce(MaplePacketCreator.updateQuest(getPlayer().getQuest(MapleQuest.getInstance(qid)), false)); + getPlayer().announceUpdateQuest(DelayedQuestUpdate.UPDATE, getPlayer().getQuest(MapleQuest.getInstance(qid)), false); } public boolean forceStartQuest(int id) { diff --git a/src/scripting/AbstractScriptManager.java b/src/scripting/AbstractScriptManager.java index 1fdf81c3e4..beacea5784 100644 --- a/src/scripting/AbstractScriptManager.java +++ b/src/scripting/AbstractScriptManager.java @@ -70,7 +70,7 @@ public abstract class AbstractScriptManager { NashornScriptEngine engine = c.getScriptEngine(cachePath); if (engine == null) { - engine = getScriptEngine(cachePath); + engine = getScriptEngine(path); c.setScriptEngine(path, engine); } diff --git a/src/scripting/event/EventManager.java b/src/scripting/event/EventManager.java index 2a15dc2946..c2f89d3a55 100644 --- a/src/scripting/event/EventManager.java +++ b/src/scripting/event/EventManager.java @@ -347,6 +347,12 @@ public class EventManager { private boolean startLobbyInstance(int lobbyId) { lobbyLock.lock(); try { + if (lobbyId < 0) { + lobbyId = 0; + } else if (lobbyId >= maxLobbys) { + lobbyId = maxLobbys - 1; + } + if(!openedLobbys.get(lobbyId)) { openedLobbys.set(lobbyId, true); return true; diff --git a/src/scripting/map/MapScriptMethods.java b/src/scripting/map/MapScriptMethods.java index d9faa6cb34..b302cfe694 100644 --- a/src/scripting/map/MapScriptMethods.java +++ b/src/scripting/map/MapScriptMethods.java @@ -21,6 +21,7 @@ along with this program. If not, see . */ package scripting.map; +import client.MapleCharacter.DelayedQuestUpdate; import client.MapleClient; import client.MapleQuestStatus; import scripting.AbstractPlayerInteraction; @@ -99,7 +100,7 @@ public class MapScriptMethods extends AbstractPlayerInteraction { } String status = Integer.toString(q.getMedalProgress()); String infoex = quest.getInfoEx(); - getPlayer().announce(MaplePacketCreator.updateQuest(q, true)); + getPlayer().announceUpdateQuest(DelayedQuestUpdate.UPDATE, q, true); StringBuilder smp = new StringBuilder(); StringBuilder etm = new StringBuilder(); if (status.equals(infoex)) { @@ -127,7 +128,7 @@ public class MapScriptMethods extends AbstractPlayerInteraction { return; } String status = Integer.toString(q.getMedalProgress()); - getPlayer().announce(MaplePacketCreator.updateQuest(q, true)); + getPlayer().announceUpdateQuest(DelayedQuestUpdate.UPDATE, q, true); getPlayer().announce(MaplePacketCreator.earnTitleMessage(status + "/5 Completed")); getPlayer().announce(MaplePacketCreator.earnTitleMessage("The One Who's Touched the Sky title in progress.")); if (Integer.toString(q.getMedalProgress()).equals(quest.getInfoEx())) { diff --git a/src/scripting/npc/NPCScriptManager.java b/src/scripting/npc/NPCScriptManager.java index 1abc218633..bee8cc60fc 100644 --- a/src/scripting/npc/NPCScriptManager.java +++ b/src/scripting/npc/NPCScriptManager.java @@ -200,6 +200,8 @@ public class NPCScriptManager extends AbstractScriptManager { } else { resetContext(scriptFolder + "/" + cm.getNpc() + ".js", c); } + + c.getPlayer().flushDelayedUpdateQuests(); } public void dispose(MapleClient c) { diff --git a/src/scripting/quest/QuestScriptManager.java b/src/scripting/quest/QuestScriptManager.java index 46b7dc7f6e..97cbc75e6c 100644 --- a/src/scripting/quest/QuestScriptManager.java +++ b/src/scripting/quest/QuestScriptManager.java @@ -163,6 +163,7 @@ public class QuestScriptManager extends AbstractScriptManager { scripts.remove(c); c.getPlayer().setNpcCooldown(System.currentTimeMillis()); resetContext("quest/" + qm.getQuest() + ".js", c); + c.getPlayer().flushDelayedUpdateQuests(); } public void dispose(MapleClient c) { diff --git a/src/scripting/reactor/ReactorActionManager.java b/src/scripting/reactor/ReactorActionManager.java index 89ff6c338a..cecac74361 100644 --- a/src/scripting/reactor/ReactorActionManager.java +++ b/src/scripting/reactor/ReactorActionManager.java @@ -30,6 +30,7 @@ import constants.ItemConstants; import constants.ServerConstants; import java.awt.Point; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.concurrent.ScheduledFuture; import java.util.logging.Level; @@ -57,24 +58,70 @@ import tools.MaplePacketCreator; */ public class ReactorActionManager extends AbstractPlayerInteraction { private MapleReactor reactor; - private MapleClient client; private Invocable iv; private ScheduledFuture sprayTask = null; public ReactorActionManager(MapleClient c, MapleReactor reactor, Invocable iv) { super(c); this.reactor = reactor; - this.client = c; this.iv = iv; } public void hitReactor() { - reactor.hitReactor(client); + reactor.hitReactor(c); } public void destroyNpc(int npcId) { reactor.getMap().destroyNPC(npcId); } + + private static void sortDropEntries(List from, List item, List visibleQuest, List otherQuest, MapleCharacter chr) { + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + + for(ReactorDropEntry mde : from) { + if(!ii.isQuestItem(mde.itemId)) { + item.add(mde); + } else { + if(chr.needQuestItem(mde.questid, mde.itemId)) { + visibleQuest.add(mde); + } else { + otherQuest.add(mde); + } + } + } + } + + private static List assembleReactorDropEntries(MapleCharacter chr, List items) { + final List dropEntry = new ArrayList<>(); + final List visibleQuestEntry = new ArrayList<>(); + final List otherQuestEntry = new ArrayList<>(); + sortDropEntries(items, dropEntry, visibleQuestEntry, otherQuestEntry, chr); + + Collections.shuffle(dropEntry); + Collections.shuffle(visibleQuestEntry); + Collections.shuffle(otherQuestEntry); + + items.clear(); + items.addAll(dropEntry); + items.addAll(visibleQuestEntry); + items.addAll(otherQuestEntry); + + List items1 = new ArrayList<>(items.size()); + List items2 = new ArrayList<>(items.size() / 2); + + for (int i = 0; i < items.size(); i++) { + if (i % 2 == 0) { + items1.add(items.get(i)); + } else { + items2.add(items.get(i)); + } + } + + Collections.reverse(items1); + items1.addAll(items2); + + return items1; + } public void sprayItems() { sprayItems(false, 0, 0, 0, 0); @@ -109,10 +156,10 @@ public class ReactorActionManager extends AbstractPlayerInteraction { } public void dropItems(boolean delayed, int posX, int posY, boolean meso, int mesoChance, final int minMeso, final int maxMeso, int minItems) { - if(c.getPlayer() == null) return; - - List items = generateDropList(getDropChances(), c.getPlayer().getDropRate(), meso, mesoChance, minItems); + MapleCharacter chr = c.getPlayer(); + if(chr == null) return; + List items = assembleReactorDropEntries(chr, generateDropList(getDropChances(), chr.getDropRate(), meso, mesoChance, minItems)); if(items.size() % 2 == 0) posX -= 12; final Point dropPos = new Point(posX, posY); @@ -127,8 +174,8 @@ public class ReactorActionManager extends AbstractPlayerInteraction { if (d.itemId == 0) { int range = maxMeso - minMeso; int displayDrop = (int) (Math.random() * range) + minMeso; - int mesoDrop = (displayDrop * client.getWorldServer().getMesoRate()); - reactor.getMap().spawnMesoDrop(mesoDrop, reactor.getMap().calcDropPos(dropPos, reactor.getPosition()), reactor, client.getPlayer(), false, (byte) 2); + int mesoDrop = (displayDrop * c.getWorldServer().getMesoRate()); + reactor.getMap().spawnMesoDrop(mesoDrop, reactor.getMap().calcDropPos(dropPos, reactor.getPosition()), reactor, c.getPlayer(), false, (byte) 2); } else { Item drop; @@ -142,10 +189,9 @@ public class ReactorActionManager extends AbstractPlayerInteraction { } } } else { - final MapleCharacter chr = client.getPlayer(); final MapleReactor r = reactor; final List dropItems = items; - final int worldMesoRate = client.getWorldServer().getMesoRate(); + final int worldMesoRate = c.getWorldServer().getMesoRate(); dropPos.x -= (12 * items.size()); @@ -178,7 +224,7 @@ public class ReactorActionManager extends AbstractPlayerInteraction { dropPos.x += 25; } - }, 100); + }, 200); } } @@ -187,37 +233,21 @@ public class ReactorActionManager extends AbstractPlayerInteraction { } private List generateDropList(List drops, int dropRate, boolean meso, int mesoChance, int minItems) { - MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); - List items = new ArrayList<>(); - List questItems = new ArrayList<>(); - int numItems = 0; - if (meso && Math.random() < (1 / (double) mesoChance)) { items.add(new ReactorDropEntry(0, mesoChance, -1)); } for(ReactorDropEntry mde : drops) { if (Math.random() < (dropRate / (double) mde.chance)) { - if(!ii.isQuestItem(mde.itemId)) { - items.add(mde); - } else { - questItems.add(mde); - } - - numItems++; + items.add(mde); } } - while (numItems < minItems) { + while (items.size() < minItems) { items.add(new ReactorDropEntry(0, mesoChance, -1)); - numItems++; } - java.util.Collections.shuffle(items); - java.util.Collections.shuffle(questItems); - - items.addAll(questItems); return items; } @@ -226,7 +256,7 @@ public class ReactorActionManager extends AbstractPlayerInteraction { } public void createMapMonitor(int mapId, String portal) { - new MapMonitor(client.getChannelServer().getMapFactory().getMap(mapId), portal); + new MapMonitor(c.getChannelServer().getMapFactory().getMap(mapId), portal); } public void spawnMonster(int id, int qty) { diff --git a/src/server/CashShop.java b/src/server/CashShop.java index ae07b48907..acdd2ddc5f 100644 --- a/src/server/CashShop.java +++ b/src/server/CashShop.java @@ -157,7 +157,7 @@ public class CashShop { private static final Map items = new HashMap<>(); private static final Map> packages = new HashMap<>(); private static final List specialcashitems = new ArrayList<>(); - private static final List randomitemids = new ArrayList<>(); + private static final List randomitemsns = new ArrayList<>(); static { MapleDataProvider etc = MapleDataProviderFactory.getDataProvider(new File("wz/Etc.wz")); @@ -184,7 +184,7 @@ public class CashShop { for(Entry e : items.entrySet()) { if(e.getValue().isOnSale()) { - randomitemids.add(e.getKey()); + randomitemsns.add(e.getKey()); } } @@ -212,10 +212,10 @@ public class CashShop { } public static CashItem getRandomCashItem() { - if(randomitemids.isEmpty()) return null; + if(randomitemsns.isEmpty()) return null; - int rnd = (int)(Math.random() * randomitemids.size()); - return items.get(randomitemids.get(rnd)); + int rnd = (int)(Math.random() * randomitemsns.size()); + return items.get(randomitemsns.get(rnd)); } public static CashItem getItem(int sn) { diff --git a/src/server/DueyPackage.java b/src/server/DueyPackage.java index a7f7f69671..1b95a0250c 100644 --- a/src/server/DueyPackage.java +++ b/src/server/DueyPackage.java @@ -29,7 +29,7 @@ public class DueyPackage { private String sender = null; private Item item = null; private int mesos = 0; - private String message = ""; + private String message = null; private Calendar timestamp; private int packageId = 0; @@ -96,13 +96,15 @@ public class DueyPackage { } } - public void setSentTime(Timestamp ts) { + public void setSentTime(Timestamp ts, boolean quick) { Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(ts.getTime()); - cal.set(Calendar.HOUR, 0); - cal.set(Calendar.MINUTE, 0); - cal.set(Calendar.SECOND, 0); - cal.set(Calendar.MILLISECOND, 0); + + if (quick) { + if (System.currentTimeMillis() - ts.getTime() < 24 * 60 * 60 * 1000) { // thanks inhyuk for noticing quick delivery packages unavailable to retrieve from the get-go + cal.add(Calendar.DATE, -1); + } + } this.timestamp = cal; } diff --git a/src/server/MaplePortal.java b/src/server/MaplePortal.java index 3e0c02c096..23ff66043b 100644 --- a/src/server/MaplePortal.java +++ b/src/server/MaplePortal.java @@ -25,6 +25,7 @@ import java.awt.Point; import client.MapleClient; public interface MaplePortal { + public final int TELEPORT_PORTAL = 1; public final int MAP_PORTAL = 2; public final int DOOR_PORTAL = 6; public static boolean OPEN = true; diff --git a/src/server/MapleStatEffect.java b/src/server/MapleStatEffect.java index 64f9e72401..a0c2dbac47 100644 --- a/src/server/MapleStatEffect.java +++ b/src/server/MapleStatEffect.java @@ -1288,6 +1288,7 @@ public class MapleStatEffect { if (mount != null) { ridingMountId = mount.getItemId(); } + if (sourceid == Corsair.BATTLE_SHIP) { ridingMountId = 1932000; } else if (sourceid == Beginner.SPACESHIP || sourceid == Noblesse.SPACESHIP) { @@ -1300,28 +1301,12 @@ public class MapleStatEffect { ridingMountId = 1932005; } else if (sourceid == Beginner.BALROG_MOUNT || sourceid == Noblesse.BALROG_MOUNT || sourceid == Legend.BALROG_MOUNT) { ridingMountId = 1932010; - } else { - if (applyto.getMount() == null) { - applyto.mount(ridingMountId, sourceid); - } - - applyto.getClient().getWorldServer().registerMountHunger(applyto); - } - if (sourceid == Corsair.BATTLE_SHIP) { - givemount = new MapleMount(applyto, 1932000, sourceid); - } else if (sourceid == Beginner.SPACESHIP || sourceid == Noblesse.SPACESHIP) { - givemount = new MapleMount(applyto, 1932000 + applyto.getSkillLevel(sourceid), sourceid); - } else if (sourceid == Beginner.YETI_MOUNT1 || sourceid == Noblesse.YETI_MOUNT1 || sourceid == Legend.YETI_MOUNT1) { - givemount = new MapleMount(applyto, 1932003, sourceid); - } else if (sourceid == Beginner.YETI_MOUNT2 || sourceid == Noblesse.YETI_MOUNT2 || sourceid == Legend.YETI_MOUNT2) { - givemount = new MapleMount(applyto, 1932004, sourceid); - } else if (sourceid == Beginner.WITCH_BROOMSTICK || sourceid == Noblesse.WITCH_BROOMSTICK || sourceid == Legend.WITCH_BROOMSTICK) { - givemount = new MapleMount(applyto, 1932005, sourceid); - } else if (sourceid == Beginner.BALROG_MOUNT || sourceid == Noblesse.BALROG_MOUNT || sourceid == Legend.BALROG_MOUNT) { - givemount = new MapleMount(applyto, 1932010, sourceid); - } else { - givemount = applyto.getMount(); } + + // thanks inhyuk for noticing some skill mounts not acting properly for other players when changing maps + givemount = applyto.mount(ridingMountId, sourceid); + applyto.getClient().getWorldServer().registerMountHunger(applyto); + localDuration = sourceid; localsourceid = ridingMountId; localstatups = Collections.singletonList(new Pair<>(MapleBuffStat.MONSTER_RIDING, 0)); diff --git a/src/server/expeditions/MapleExpeditionBossLog.java b/src/server/expeditions/MapleExpeditionBossLog.java index 02549ec4fa..fac70f4ae3 100644 --- a/src/server/expeditions/MapleExpeditionBossLog.java +++ b/src/server/expeditions/MapleExpeditionBossLog.java @@ -65,12 +65,9 @@ public class MapleExpeditionBossLog { private static List> getBossLogResetTimestamps(Calendar timeNow, boolean week) { List> resetTimestamps = new LinkedList<>(); + Timestamp ts = new Timestamp(timeNow.getTime().getTime()); // reset all table entries actually, thanks Conrad for (BossLogEntry b : BossLogEntry.values()) { if (b.week == week) { - Calendar c = (Calendar) timeNow.clone(); - c.roll(Calendar.DAY_OF_MONTH, -1 * (week ? 7 : 1) * b.timeLength); - Timestamp ts = new Timestamp(c.getTime().getTime()); - resetTimestamps.add(new Pair<>(ts, b)); } } diff --git a/src/server/life/MapleMonster.java b/src/server/life/MapleMonster.java index 0bb34c0d7f..c65000697d 100644 --- a/src/server/life/MapleMonster.java +++ b/src/server/life/MapleMonster.java @@ -97,7 +97,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { private Set usedAttacks = new HashSet<>(); private Set calledMobOids = null; private WeakReference callerMob = new WeakReference<>(null); - private List stolenItems = new ArrayList<>(); + private List stolenItems = new ArrayList<>(5); private int team; private int parentMobOid = 0; private final HashMap takenDamage = new HashMap<>(); diff --git a/src/server/life/MapleMonsterInformationProvider.java b/src/server/life/MapleMonsterInformationProvider.java index f4d44ea319..f5c4394331 100644 --- a/src/server/life/MapleMonsterInformationProvider.java +++ b/src/server/life/MapleMonsterInformationProvider.java @@ -152,7 +152,7 @@ public class MapleMonsterInformationProvider { int rnd = Randomizer.rand(mde.Minimum, mde.Maximum); for (int i = 0; i < rnd - 1; i++) { - extra.add(mde); // this passes copies of the equips' MDE with min/max quantity > 1, but idc it'll be unused anyways + extra.add(mde); // this passes copies of the equips' MDE with min/max quantity > 1, but idc on equips they are unused anyways } } } diff --git a/src/server/maps/MapleMap.java b/src/server/maps/MapleMap.java index 98eca82656..e7503d2275 100644 --- a/src/server/maps/MapleMap.java +++ b/src/server/maps/MapleMap.java @@ -137,6 +137,7 @@ public class MapleMap { private int timeLimit; private long mapTimer; private int decHP = 0; + private float recovery = 1.0f; private int protectItem = 0; private boolean town; private MapleOxQuiz ox; @@ -1408,81 +1409,85 @@ public class MapleMap { } } else { if (removeKilledMonsterObject(monster)) { - if (monster.getStats().getLevel() >= chr.getLevel() + 30 && !chr.isGM()) { - AutobanFactory.GENERAL.alert(chr, " for killing a " + monster.getName() + " which is over 30 levels higher."); - } - - /*if (chr.getQuest(MapleQuest.getInstance(29400)).getStatus().equals(MapleQuestStatus.Status.STARTED)) { - if (chr.getLevel() >= 120 && monster.getStats().getLevel() >= 120) { - //FIX MEDAL SHET - } else if (monster.getStats().getLevel() >= chr.getLevel()) { - } - }*/ - - if (monster.getCP() > 0 && chr.getMap().isCPQMap()) { - chr.gainCP(monster.getCP()); - } - - int buff = monster.getBuffToGive(); - if (buff > -1) { - MapleItemInformationProvider mii = MapleItemInformationProvider.getInstance(); - for (MapleMapObject mmo : this.getPlayers()) { - MapleCharacter character = (MapleCharacter) mmo; - if (character.isAlive()) { - MapleStatEffect statEffect = mii.getItemEffect(buff); - character.getClient().announce(MaplePacketCreator.showOwnBuffEffect(buff, 1)); - broadcastMessage(character, MaplePacketCreator.showBuffeffect(character.getId(), buff, 1), false); - statEffect.applyTo(character); - } + try { + if (monster.getStats().getLevel() >= chr.getLevel() + 30 && !chr.isGM()) { + AutobanFactory.GENERAL.alert(chr, " for killing a " + monster.getName() + " which is over 30 levels higher."); } - } - - if (monster.getId() >= 8800003 && monster.getId() <= 8800010) { - boolean makeZakReal = true; - Collection objects = getMapObjects(); - for (MapleMapObject object : objects) { - MapleMonster mons = getMonsterByOid(object.getObjectId()); - if (mons != null) { - if (mons.getId() >= 8800003 && mons.getId() <= 8800010) { - makeZakReal = false; - break; + + /*if (chr.getQuest(MapleQuest.getInstance(29400)).getStatus().equals(MapleQuestStatus.Status.STARTED)) { + if (chr.getLevel() >= 120 && monster.getStats().getLevel() >= 120) { + //FIX MEDAL SHET + } else if (monster.getStats().getLevel() >= chr.getLevel()) { + } + }*/ + + if (monster.getCP() > 0 && chr.getMap().isCPQMap()) { + chr.gainCP(monster.getCP()); + } + + int buff = monster.getBuffToGive(); + if (buff > -1) { + MapleItemInformationProvider mii = MapleItemInformationProvider.getInstance(); + for (MapleMapObject mmo : this.getPlayers()) { + MapleCharacter character = (MapleCharacter) mmo; + if (character.isAlive()) { + MapleStatEffect statEffect = mii.getItemEffect(buff); + character.getClient().announce(MaplePacketCreator.showOwnBuffEffect(buff, 1)); + broadcastMessage(character, MaplePacketCreator.showBuffeffect(character.getId(), buff, 1), false); + statEffect.applyTo(character); } } } - if (makeZakReal) { - MapleMap map = chr.getMap(); + if (monster.getId() >= 8800003 && monster.getId() <= 8800010) { + boolean makeZakReal = true; + Collection objects = getMapObjects(); for (MapleMapObject object : objects) { - MapleMonster mons = map.getMonsterByOid(object.getObjectId()); + MapleMonster mons = getMonsterByOid(object.getObjectId()); if (mons != null) { - if (mons.getId() == 8800000) { - makeMonsterReal(mons); - mons.aggroUpdateController(); + if (mons.getId() >= 8800003 && mons.getId() <= 8800010) { + makeZakReal = false; break; } } } - } - } + if (makeZakReal) { + MapleMap map = chr.getMap(); - MapleCharacter dropOwner = monster.killBy(chr); - if (withDrops && !monster.dropsDisabled()) { - if (dropOwner == null) { - dropOwner = chr; - } - dropFromMonster(dropOwner, monster, false); - } - - if (monster.hasBossHPBar()) { - for(MapleCharacter mc : this.getAllPlayers()) { - if(mc.getTargetHpBarHash() == monster.hashCode()) { - mc.resetPlayerAggro(); + for (MapleMapObject object : objects) { + MapleMonster mons = map.getMonsterByOid(object.getObjectId()); + if (mons != null) { + if (mons.getId() == 8800000) { + makeMonsterReal(mons); + mons.aggroUpdateController(); + break; + } + } + } } } - } - monster.dispatchMonsterKilled(true); - broadcastMessage(MaplePacketCreator.killMonster(monster.getObjectId(), animation), monster.getPosition()); + MapleCharacter dropOwner = monster.killBy(chr); + if (withDrops && !monster.dropsDisabled()) { + if (dropOwner == null) { + dropOwner = chr; + } + dropFromMonster(dropOwner, monster, false); + } + + if (monster.hasBossHPBar()) { + for(MapleCharacter mc : this.getAllPlayers()) { + if(mc.getTargetHpBarHash() == monster.hashCode()) { + mc.resetPlayerAggro(); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } finally { // thanks resinate for pointing out a memory leak possibly from an exception thrown + monster.dispatchMonsterKilled(true); + broadcastMessage(MaplePacketCreator.killMonster(monster.getObjectId(), animation), monster.getPosition()); + } } } } @@ -2707,12 +2712,12 @@ public class MapleMap { return portal != null ? portal : getPortal(0); } - public MaplePortal findClosestWarpPortal(Point from) { + public MaplePortal findClosestTeleportPortal(Point from) { MaplePortal closest = null; double shortestDistance = Double.POSITIVE_INFINITY; for (MaplePortal portal : portals.values()) { double distance = portal.getPosition().distanceSq(from); - if (portal.getType() == MaplePortal.MAP_PORTAL && distance < shortestDistance && portal.getTargetMapId() == 999999999) { + if (portal.getType() == MaplePortal.TELEPORT_PORTAL && distance < shortestDistance && portal.getTargetMapId() != 999999999) { closest = portal; shortestDistance = distance; } @@ -3777,6 +3782,14 @@ public class MapleMap { public void setHPDecProtect(int delta) { this.protectItem = delta; } + + public float getRecovery() { + return recovery; + } + + public void setRecovery(float recRate) { + recovery = recRate; + } private int hasBoat() { return !boat ? 0 : (docked ? 1 : 2); diff --git a/src/server/maps/MapleMapFactory.java b/src/server/maps/MapleMapFactory.java index 036bd77578..0c37f54d6e 100644 --- a/src/server/maps/MapleMapFactory.java +++ b/src/server/maps/MapleMapFactory.java @@ -31,7 +31,6 @@ import java.sql.SQLException; import java.util.HashMap; import java.util.LinkedList; import java.util.List; -import java.util.Map; import provider.MapleData; import provider.MapleDataProvider; import provider.MapleDataProviderFactory; @@ -49,8 +48,6 @@ import tools.StringUtil; public class MapleMapFactory { - private static Map mapRecoveryRateCache = new HashMap<>(); - private static MapleData nameData; private static MapleDataProvider mapSource; @@ -336,11 +333,10 @@ public class MapleMapFactory { map.setTimeLimit(MapleDataTool.getIntConvert("timeLimit", infoData, -1)); map.setFieldType(MapleDataTool.getIntConvert("fieldType", infoData, 0)); map.setMobCapacity(MapleDataTool.getIntConvert("fixedMobCapacity", infoData, 500));//Is there a map that contains more than 500 mobs? - + MapleData recData = infoData.getChildByPath("recovery"); if (recData != null) { - float recoveryRate = MapleDataTool.getFloat(recData); - mapRecoveryRateCache.put(mapid, recoveryRate); + map.setRecovery(MapleDataTool.getFloat(recData)); } HashMap backTypes = new HashMap<>(); @@ -438,9 +434,5 @@ public class MapleMapFactory { builder.append("/").append(mapid); return builder.toString(); } - - public static float getMapRecoveryRate(int mapid) { - Float recRate = mapRecoveryRateCache.get(mapid); - return recRate != null ? recRate : 1.0f; - } + } diff --git a/src/server/maps/MapleMapManager.java b/src/server/maps/MapleMapManager.java index 36d36212c5..db3df6d49a 100644 --- a/src/server/maps/MapleMapManager.java +++ b/src/server/maps/MapleMapManager.java @@ -139,7 +139,4 @@ public class MapleMapManager { this.event = null; } - public static float getMapRecoveryRate(int mapid) { - return MapleMapFactory.getMapRecoveryRate(mapid); - } } diff --git a/src/server/quest/MapleQuest.java b/src/server/quest/MapleQuest.java index cefceb45d3..cf7e8f94f2 100644 --- a/src/server/quest/MapleQuest.java +++ b/src/server/quest/MapleQuest.java @@ -28,6 +28,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; import client.MapleCharacter; +import client.MapleCharacter.DelayedQuestUpdate; import client.MapleQuestStatus; import client.MapleQuestStatus.Status; import constants.ServerConstants; @@ -337,7 +338,7 @@ public class MapleQuest { if(pid >= 8200000 && pid <= 8200012) { String pr = StringUtil.getLeftPaddedStr(Integer.toString(setProg), '0', 3); newStatus.setProgress(pid, pr); - c.announce(MaplePacketCreator.updateQuest(newStatus, false)); + c.announceUpdateQuest(DelayedQuestUpdate.UPDATE, newStatus, false); } } } diff --git a/src/server/quest/actions/ItemAction.java b/src/server/quest/actions/ItemAction.java index a395035f46..a4e2d0a21e 100644 --- a/src/server/quest/actions/ItemAction.java +++ b/src/server/quest/actions/ItemAction.java @@ -109,6 +109,7 @@ public class ItemAction extends MapleQuestAction { if (!canGetItem(iEntry, chr)) { continue; } + if(iEntry.getProp() != null) { if(iEntry.getProp() == -1) { if(extSelection != extNum++) @@ -181,11 +182,11 @@ public class ItemAction extends MapleQuestAction { } } else { - if(item.getCount() > 0) { - // Make sure they can hold the item. - Item toItem = new Item(item.getId(), (short) 0, (short) item.getCount()); - gainList.add(new Pair<>(toItem, type)); - } else { + // Make sure they can hold the item. + Item toItem = new Item(item.getId(), (short) 0, (short) item.getCount()); + gainList.add(new Pair<>(toItem, type)); + + if(item.getCount() < 0) { // Make sure they actually have the item. int quantity = item.getCount() * -1; @@ -229,12 +230,34 @@ public class ItemAction extends MapleQuestAction { gainList.add(selected); } - if (!MapleInventory.checkSpots(chr, gainList, allSlotUsed, false)) { + if (!canHold(chr, gainList)) { chr.dropMessage(1, "Please check if you have enough space in your inventory."); return false; } return true; } + + private boolean canHold(MapleCharacter chr, List> gainList) { + List toAddItemids = new LinkedList<>(); + List toAddQuantity = new LinkedList<>(); + List toRemoveItemids = new LinkedList<>(); + List toRemoveQuantity = new LinkedList<>(); + + for (Pair item : gainList) { + Item it = item.getLeft(); + + if (it.getQuantity() > 0) { + toAddItemids.add(it.getItemId()); + toAddQuantity.add((int) it.getQuantity()); + } else { + toRemoveItemids.add(it.getItemId()); + toRemoveQuantity.add(-1 * ((int) it.getQuantity())); + } + } + + // thanks onechord for noticing quests unnecessarily giving out "full inventory" from quests that also takes items from players + return chr.getClient().getAbstractPlayerInteraction().canHoldAllAfterRemoving(toAddItemids, toAddQuantity, toRemoveItemids, toRemoveQuantity); + } private boolean canGetItem(ItemData item, MapleCharacter chr) { if (item.getGender() != 2 && item.getGender() != chr.getGender()) { diff --git a/src/tools/MaplePacketCreator.java b/src/tools/MaplePacketCreator.java index fe25226db8..6006443afa 100644 --- a/src/tools/MaplePacketCreator.java +++ b/src/tools/MaplePacketCreator.java @@ -1916,17 +1916,12 @@ public class MaplePacketCreator { Integer bv = chr.getBuffedValue(MapleBuffStat.MONSTER_RIDING); if (bv != null) { - if(bv.equals(Corsair.BATTLE_SHIP)) { - mplew.writeInt(1932000); - mplew.writeInt(Corsair.BATTLE_SHIP); + MapleMount mount = chr.getMount(); + if (mount != null) { + mplew.writeInt(mount.getItemId()); + mplew.writeInt(mount.getSkillId()); } else { - final Item mount = chr.getInventory(MapleInventoryType.EQUIPPED).getItem((short) -18); - if(mount != null) { - mplew.writeInt(mount.getItemId()); - mplew.writeInt(1004); - } else { - mplew.writeLong(0); - } + mplew.writeLong(0); } } else { mplew.writeLong(0); @@ -6975,14 +6970,14 @@ public class MaplePacketCreator { public static byte[] onCashItemGachaponOpenFailed(){ MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.CASHSHOP_CASH_ITEM_GACHAPON_RESULT.getValue()); - mplew.write(189); + mplew.write(0xE4); return mplew.getPacket(); } public static byte[] onCashGachaponOpenSuccess(int accountid, long sn, int remainingBoxes, Item item, int itemid, int nSelectedItemCount, boolean bJackpot){ MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.CASHSHOP_CASH_ITEM_GACHAPON_RESULT.getValue()); - mplew.write(190); + mplew.write(0xE5); // subopcode thanks to Ubaware mplew.writeLong(sn);// sn of the box used mplew.writeInt(remainingBoxes); addCashItemInformation(mplew, item, accountid); @@ -7253,15 +7248,15 @@ public class MaplePacketCreator { mplew.writeLong(getTime(dp.sentTimeInMilliseconds())); String msg = dp.getMessage(); - if (!msg.isEmpty()) { - mplew.writeInt(1); - mplew.writeAsciiString(msg); - for (int i = msg.length(); i < 200; i++) { - mplew.write(0); - } + if (msg != null) { + mplew.writeInt(1); + mplew.writeAsciiString(msg); + for (int i = msg.length(); i < 200; i++) { + mplew.write(0); + } } else { - mplew.writeInt(0); - mplew.skip(200); + mplew.writeInt(0); + mplew.skip(200); } mplew.write(0); diff --git a/tools/ScriptStaticMethodTracker/method_list.c b/tools/ScriptStaticMethodTracker/method_list.c new file mode 100644 index 0000000000..4fd6a87372 --- /dev/null +++ b/tools/ScriptStaticMethodTracker/method_list.c @@ -0,0 +1,85 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2019 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +JavaMethod* createJavaMethod(const char *name) { + JavaMethod* method = (JavaMethod *)malloc(sizeof(JavaMethod)); + method->name = (char *)malloc((strlen(name) + 1) * sizeof(char)); + strcpy(method->name, name); + return method; +} + +void freeJavaMethod(JavaMethod *method) { + free(method->name); + free(method); +} + +JavaMethodList createJavaMethodList() { + JavaMethodList list; + list.size = 0; + + JavaMethodListItem *item = (JavaMethodListItem *)malloc(sizeof(JavaMethodListItem)); + item->prox = NULL; + + list.last = item; + list.first = list.last; + + return list; +} + +void insertJavaMethod(JavaMethodList *list, JavaMethod *method) { + JavaMethodListItem *item = (JavaMethodListItem *)malloc(sizeof(JavaMethodListItem)); + item->prox = NULL; + + list->last->method = method; + list->last->prox = item; + + list->last = item; + list->size++; +} + +void freeJavaMethodList(JavaMethodList *list) { + JavaMethodListItem *aux = list->first; + + list->first = list->last; + list->size = 0; + + while (aux->prox != NULL) { + JavaMethodListItem *aux2 = aux; + aux = aux->prox; + + freeJavaMethod(aux2->method); + free(aux2); + } + free(aux); +} + +void resetJavaMethodCursor(JavaMethodList *list) { + list->cursor = list->first; +} + +JavaMethod* readJavaMethod(JavaMethodList *list) { + JavaMethodListItem *aux = list->cursor; + if (aux->prox == NULL) { + return NULL; + } + + list->cursor = aux->prox; + return aux->method; +} diff --git a/tools/ScriptStaticMethodTracker/method_list.h b/tools/ScriptStaticMethodTracker/method_list.h new file mode 100644 index 0000000000..ae4fabed1d --- /dev/null +++ b/tools/ScriptStaticMethodTracker/method_list.h @@ -0,0 +1,43 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2019 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +#ifndef METHOD_LIST_H_ +#define METHOD_LIST_H_ + +typedef struct { + char *name; +} JavaMethod; + +typedef struct JavaMethodListItem { + JavaMethod *method; + struct JavaMethodListItem *prox; +} JavaMethodListItem; + +typedef struct { + JavaMethodListItem *first; + JavaMethodListItem *last; + JavaMethodListItem *cursor; + + int size; +} JavaMethodList; + +#include "method_list.c" + +#endif /* METHOD_LIST_H_ */ diff --git a/tools/ScriptStaticMethodTracker/method_tracker.c b/tools/ScriptStaticMethodTracker/method_tracker.c new file mode 100644 index 0000000000..63af248dec --- /dev/null +++ b/tools/ScriptStaticMethodTracker/method_tracker.c @@ -0,0 +1,347 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2019 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +#include +#include +#include +#include +#include + +#define SCRIPT_FILES_MAX_CONTENT_SIZE 1777777 + +#include "method_list.h" +#include "script_path.h" + +JavaMethodList getBestSubstringsFromStringList(char *aStrRegex, JavaMethodList *lines, int lines_size) { + JavaMethodList ret = createJavaMethodList(); + + // ------------ an adaptation from Mitch Richling's https://www.mitchr.me/SS/exampleCode/AUPG/pcre_example.c.html ----------- + + int subStrVec[30]; + int subStrVecLength = 30; + const char *pcreErrorStr; + int pcreErrorOffset; + + pcre *reCompiled = pcre_compile(aStrRegex, 0, &pcreErrorStr, &pcreErrorOffset, NULL); + if(reCompiled == NULL) { + printf("ERROR: Could not compile '%s': %s\n", aStrRegex, pcreErrorStr); + return ret; + } + + pcre_extra *pcreExtra = pcre_study(reCompiled, 0, &pcreErrorStr); + if(pcreErrorStr != NULL) { + printf("ERROR: Could not study '%s': %s\n", aStrRegex, pcreErrorStr); + return ret; + } + + int i; + for (i = 0; i < lines_size; i++) { + JavaMethodList list = lines[i]; + + resetJavaMethodCursor(&list); + while(true) { + JavaMethod *method = readJavaMethod(&list); + if (method == NULL) { + break; + } + + char *str = method->name; + int pcreExecRet = pcre_exec(reCompiled, pcreExtra, str, strlen(str), 0, 0, subStrVec, subStrVecLength); + if(pcreExecRet < 0) { + switch(pcreExecRet) { + //case PCRE_ERROR_NOMATCH : printf("String did not match the pattern\n"); break; + case PCRE_ERROR_NULL : printf("Something was null\n"); break; + case PCRE_ERROR_BADOPTION : printf("A bad option was passed\n"); break; + case PCRE_ERROR_BADMAGIC : printf("Magic number bad (compiled re corrupt?)\n"); break; + case PCRE_ERROR_UNKNOWN_NODE : printf("Something kooky in the compiled re\n"); break; + case PCRE_ERROR_NOMEMORY : printf("Ran out of memory\n"); break; + //default : printf("Unknown error\n"); break; + } + } else { + if(pcreExecRet == 0) { + printf("But too many substrings were found to fit in subStrVec!\n"); + // Set rc to the max number of substring matches possible. + pcreExecRet = 30 / 3; + } + + const char *psubStrMatchStr; + pcre_get_substring(str, subStrVec, pcreExecRet, 0, &(psubStrMatchStr)); + + insertJavaMethod(&ret, createJavaMethod(psubStrMatchStr)); + pcre_free_substring(psubStrMatchStr); + } + } + } + + pcre_free(reCompiled); + + if(pcreExtra != NULL) { + pcre_free(pcreExtra); + } + + return ret; +} + +char* extractStaticMethodName(const char *method_line) { + char *aStrRegex = "([A-Za-z0-9])+(\\s)*\\("; + + int lines_size = 1; + JavaMethodList *lines = (JavaMethodList *)malloc(lines_size * sizeof(JavaMethodList)); + + int i; + for (i = 0; i < lines_size; i++) { + lines[i] = createJavaMethodList(); + insertJavaMethod(&(lines[i]), createJavaMethod(method_line)); + } + + JavaMethodList subs = getBestSubstringsFromStringList(aStrRegex, lines, lines_size); + + char *ret; + if (subs.size > 0) { + resetJavaMethodCursor(&subs); + JavaMethod *method = readJavaMethod(&subs); + + char *method_scoop = method->name; + int i; + for (i = 0; i < strlen(method_scoop) - 1; i++) { + char ch = method_scoop[i]; + if (ch == '(' || ch == ' ' || ch == '\t') { + break; + } + } + method->name[i] = 0; + + ret = (char *)malloc((strlen(method->name) + 1) * sizeof(char)); + strcpy(ret, method->name); + } else { + ret = NULL; + } + + freeJavaMethodList(&subs); + + for (i = 0; i < lines_size; i++) { + freeJavaMethodList(&(lines[i])); + } + + free(lines); + + return ret; +} + +JavaMethodList getStaticJavaMethodNames(char *aStrRegex, JavaMethodList *lines, int lines_size) { + JavaMethodList subs = getBestSubstringsFromStringList(aStrRegex, lines, lines_size); + JavaMethodList ret = createJavaMethodList(); + + resetJavaMethodCursor(&subs); + while (true) { + JavaMethod *method = readJavaMethod(&subs); + if (method == NULL) { + break; + } + + char *method_name = extractStaticMethodName(method->name); + if (method_name != NULL) { + insertJavaMethod(&ret, createJavaMethod(method_name)); + free(method_name); + } + } + + freeJavaMethodList(&subs); + + return ret; +} + +bool isIgnoreMethod(char *method_name) { + const char * ignoreMethods[] = {"getInstance", "toString", NULL}; + + int i = 0; + while(true) { + const char *ign = ignoreMethods[i]; + if (ign == NULL) { + break; + } + + if (!strcmp(method_name, ign)) { + return true; + } + + i++; + } + + return false; +} + +JavaMethodList trackerFindSourceStaticMethods(JavaMethodList *lines, int lines_size) { + char *aStrRegex = "(public static\\s).*([A-Za-z0-9])+(\\s)*\\(.*\\{"; + JavaMethodList ret = createJavaMethodList(); + + JavaMethodList list = getStaticJavaMethodNames(aStrRegex, lines, lines_size); + resetJavaMethodCursor(&list); + while(true) { + JavaMethod *method = readJavaMethod(&list); + if (method == NULL) { + break; + } + + if (isIgnoreMethod(method->name)) { + continue; + } + + //printf("Java Method: %s\n", method->name); + insertJavaMethod(&ret, createJavaMethod(method->name)); + } + + freeJavaMethodList(&list); + + return ret; +} + +char *getContentFromFile(FILE *f) { + char str[10240]; + + char *content = (char *)malloc(SCRIPT_FILES_MAX_CONTENT_SIZE * sizeof(char)); + content[0] = 0; + + while (!feof(f)) { + fgets(str, 10240, f); + strcat(content, str); + } + + return content; +} + +bool locateMethodCall(const char *method_name, char *file_path) { + FILE *f = fopen(file_path, "r+t"); + + char aStrRegex[1000]; + strcpy(aStrRegex, method_name); + strcat(aStrRegex, "(\\s)*\\("); + + JavaMethodList *file_content = (JavaMethodList *)malloc(sizeof(JavaMethodList)); + file_content[0] = createJavaMethodList(); + + char *content = getContentFromFile(f); + + JavaMethod *method = createJavaMethod(content); + insertJavaMethod(&(file_content[0]), method); + free(content); + + JavaMethodList list = getBestSubstringsFromStringList(aStrRegex, file_content, 1); + bool found = (list.size > 0); + + free(file_content); + fclose(f); + + return found; +} + +void locateMethodCalls(const char *method_name, char **file_paths, int file_paths_size) { + int i; + for (i = 0; i < file_paths_size; i++) { + char *path = file_paths[i]; + if (locateMethodCall(method_name, path)) { + printf(" %s : \'%s\'\n", path, method_name); + } + } +} + +int trackerLocateScriptsStaticCalls(JavaMethodList method_names) { + ScriptFiles *files = createScriptFiles("../../HeavenMS/scripts"); + if (files == NULL) { + printf("ERROR: Could not initialize script files.\n"); + return -1; + } + + resetJavaMethodCursor(&method_names); + while (true) { + JavaMethod *method = readJavaMethod(&method_names); + if (method == NULL) { + break; + } + + locateMethodCalls(method->name, files->file_paths, files->file_paths_size); + } + + freeScriptFiles(files); + return 0; +} + +typedef struct { + JavaMethodList *file_content; + int size; +} SourceFilesContent; + +SourceFilesContent* readSourceFileContents() { + ScriptFiles *srcFilePaths = createScriptFiles("../../HeavenMS/src"); + + SourceFilesContent *files = (SourceFilesContent *)malloc(sizeof(SourceFilesContent)); + files->file_content = (JavaMethodList *)malloc(srcFilePaths->file_paths_size * sizeof(JavaMethodList)); + files->size = srcFilePaths->file_paths_size; + + //int max_len = 0; + int i; + for (i = 0; i < srcFilePaths->file_paths_size; i++) { + files->file_content[i] = createJavaMethodList(); + + FILE *f = fopen(srcFilePaths->file_paths[i], "r+t"); + char *content = getContentFromFile(f); + + //int this_len = strlen(content); + //if (max_len < this_len) max_len = this_len; + + fclose(f); + + insertJavaMethod(&(files->file_content[i]), createJavaMethod(content)); + } + + //printf("len: %d\n", max_len); + freeScriptFiles(srcFilePaths); + + return files; +} + +void freeSourceFileContents(SourceFilesContent *files) { + int i; + for (i = 0; i < files->size; i++) { + freeJavaMethodList(&(files->file_content[i])); + } + + free(files->file_content); + free(files); +} + +int main() { + printf("Loading source files...\n"); + SourceFilesContent *src_contents = readSourceFileContents(); + + int lines_size = src_contents->size; + JavaMethodList *lines = src_contents->file_content; + + printf("Tracking static methods on source...\n"); + JavaMethodList method_names = trackerFindSourceStaticMethods(lines, lines_size); + printf("Finding static methods calls on scripts...\n"); + trackerLocateScriptsStaticCalls(method_names); + printf("Track complete!\n"); + + freeSourceFileContents(src_contents); + freeJavaMethodList(&method_names); + + return 0; +} diff --git a/tools/ScriptStaticMethodTracker/pcre3.dll b/tools/ScriptStaticMethodTracker/pcre3.dll new file mode 100644 index 0000000000000000000000000000000000000000..b5fd2a63785922c9898e7d25d9c50ef47524ba13 GIT binary patch literal 140288 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 literal 0 HcmV?d00001 diff --git a/tools/ScriptStaticMethodTracker/script_path.c b/tools/ScriptStaticMethodTracker/script_path.c new file mode 100644 index 0000000000..aab9ddd1b8 --- /dev/null +++ b/tools/ScriptStaticMethodTracker/script_path.c @@ -0,0 +1,72 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2019 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +#include +#include +#include +#include +#include + +void fetchScriptFilesFromDirectory(ScriptFiles *files, char *root_dir) { + struct dirent *de; + struct stat info; + DIR *dir = opendir(root_dir); + if (dir != NULL) { + de = readdir(dir); // skip . + de = readdir(dir); // skip .. + + while ((de = readdir(dir)) != NULL) { + char file_path[SCRIPT_FILES_MAX_PATH_SIZE]; + strcpy(file_path, root_dir); + strcat(file_path, "/"); + strcat(file_path, de->d_name); + + stat(file_path, &info); + if (S_ISREG(info.st_mode)) { + files->file_paths[files->file_paths_size] = (char *)malloc(SCRIPT_FILES_MAX_PATH_SIZE * sizeof(char)); + strcpy(files->file_paths[files->file_paths_size], file_path); + files->file_paths_size++; + } else { + fetchScriptFilesFromDirectory(files, file_path); + } + } + } +} + +ScriptFiles* createScriptFiles(char *root_dir) { + ScriptFiles *files = (ScriptFiles *)malloc(sizeof(ScriptFiles)); + + files->file_paths = (char **)malloc(SCRIPT_FILES_MAX_COUNT * sizeof(char *)); + files->file_paths_size = 0; + + fetchScriptFilesFromDirectory(files, root_dir); + + return files; +} + +void freeScriptFiles(ScriptFiles *files) { + int i; + for (i = 0; i < files->file_paths_size; i++) { + free(files->file_paths[i]); + } + + free(files->file_paths); + free(files); +} diff --git a/tools/ScriptStaticMethodTracker/script_path.h b/tools/ScriptStaticMethodTracker/script_path.h new file mode 100644 index 0000000000..553d28d260 --- /dev/null +++ b/tools/ScriptStaticMethodTracker/script_path.h @@ -0,0 +1,34 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2019 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +#ifndef SCRIPT_PATH_H_ +#define SCRIPT_PATH_H_ + +#define SCRIPT_FILES_MAX_COUNT 20000 +#define SCRIPT_FILES_MAX_PATH_SIZE 1000 + +typedef struct { + char **file_paths; + int file_paths_size; +} ScriptFiles; + +#include "script_path.c" + +#endif /* SCRIPT_PATH_H_ */ From ec5a412e37071074509c0b1ae919b032a30a6a80 Mon Sep 17 00:00:00 2001 From: Ubaware Date: Mon, 19 Aug 2019 10:16:10 -0700 Subject: [PATCH 20/37] Added families. (#511) * Added families. * Added joining of families. --- docs/leftover.txt | 1 - sql/db_database.sql | 23 +- src/client/MapleCharacter.java | 67 ++- src/client/MapleFamily.java | 316 +++++++++-- src/client/MapleFamilyEntitlement.java | 41 ++ src/client/MapleFamilyEntry.java | 517 ++++++++++++++++-- src/constants/ServerConstants.java | 8 +- src/net/PacketProcessor.java | 6 + src/net/opcodes/RecvOpcode.java | 5 + src/net/opcodes/SendOpcode.java | 2 +- src/net/server/Server.java | 9 +- .../channel/handlers/AcceptFamilyHandler.java | 116 +++- .../handlers/DenyPartyRequestHandler.java | 2 +- .../channel/handlers/FamilyAddHandler.java | 35 +- .../handlers/FamilyPreceptsHandler.java | 23 + .../handlers/FamilySeparateHandler.java | 78 +++ .../handlers/FamilySummonResponseHandler.java | 40 ++ .../channel/handlers/FamilyUseHandler.java | 151 +++-- .../channel/handlers/MessengerHandler.java | 6 +- .../channel/handlers/OpenFamilyHandler.java | 41 ++ .../handlers/OpenFamilyPedigreeHandler.java | 43 ++ .../handlers/PartyOperationHandler.java | 6 +- .../handlers/PlayerLoggedinHandler.java | 26 +- .../channel/handlers/UseCashItemHandler.java | 12 +- .../coordinator/MapleInviteCoordinator.java | 38 +- src/net/server/guild/MapleAlliance.java | 9 +- src/net/server/guild/MapleGuild.java | 9 +- .../server/worker/FamilyDailyResetWorker.java | 56 ++ src/net/server/world/World.java | 20 +- src/server/MapleTrade.java | 7 +- src/server/life/MapleMonster.java | 13 +- src/tools/FilePrinter.java | 1 + src/tools/MaplePacketCreator.java | 219 ++++++-- 33 files changed, 1670 insertions(+), 276 deletions(-) create mode 100644 src/client/MapleFamilyEntitlement.java create mode 100644 src/net/server/channel/handlers/FamilyPreceptsHandler.java create mode 100644 src/net/server/channel/handlers/FamilySeparateHandler.java create mode 100644 src/net/server/channel/handlers/FamilySummonResponseHandler.java create mode 100644 src/net/server/channel/handlers/OpenFamilyHandler.java create mode 100644 src/net/server/channel/handlers/OpenFamilyPedigreeHandler.java create mode 100644 src/net/server/worker/FamilyDailyResetWorker.java diff --git a/docs/leftover.txt b/docs/leftover.txt index b005a6c3c4..2001688854 100644 --- a/docs/leftover.txt +++ b/docs/leftover.txt @@ -3,7 +3,6 @@ Uncoded features: NX Format MTS (v53) -Family system (v67) Family and Medal Quests(?) Uncoded Party Quests: diff --git a/sql/db_database.sql b/sql/db_database.sql index da70aa9637..d826dd75ee 100644 --- a/sql/db_database.sql +++ b/sql/db_database.sql @@ -12853,17 +12853,26 @@ CREATE TABLE IF NOT EXISTS `famelog` ( CREATE TABLE IF NOT EXISTS `family_character` ( `cid` int(11) NOT NULL, `familyid` int(11) NOT NULL, - `rank` int(11) NOT NULL, - `reputation` int(11) NOT NULL, - `todaysrep` int(11) NOT NULL, - `totaljuniors` int(11) NOT NULL, - `name` varchar(255) NOT NULL, - `juniorsadded` int(11) NOT NULL, - `totalreputation` int(11) NOT NULL, + `seniorid` int(11) NOT NULL, + `reputation` int(11) NOT NULL DEFAULT '0', + `todaysrep` int(11) NOT NULL DEFAULT '0', + `totalreputation` int(11) NOT NULL DEFAULT '0', + `reptosenior` int(11) NOT NULL DEFAULT '0', + `precepts` varchar(200) DEFAULT NULL, + `lastresettime` BIGINT(20) NOT NULL DEFAULT '0', PRIMARY KEY (`cid`), INDEX (cid, familyid) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; +CREATE TABLE IF NOT EXISTS `family_entitlement` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `charid` int(11) NOT NULL, + `entitlementid` int(11) NOT NULL, + `timestamp` BIGINT(20) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + INDEX (charid) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + CREATE TABLE IF NOT EXISTS `fredstorage` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `cid` int(10) unsigned NOT NULL, diff --git a/src/client/MapleCharacter.java b/src/client/MapleCharacter.java index bfa645f25a..39c7454865 100644 --- a/src/client/MapleCharacter.java +++ b/src/client/MapleCharacter.java @@ -193,7 +193,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { private int energybar; private int gmLevel; private int ci = 0; - private MapleFamily family; + private MapleFamilyEntry familyEntry; private int familyId; private int bookCover; private int battleshipHp = 0; @@ -331,6 +331,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { private long banishTime = 0; private long lastExpGainTime; private boolean pendingNameChange; //only used to change name on logout, not to be relied upon elsewhere + private long loginTime; private MapleCharacter() { super.setListener(new AbstractCharacterListener() { @@ -1254,6 +1255,10 @@ public class MapleCharacter extends AbstractMapleCharacterObject { if (this.guildid > 0) { getGuild().broadcast(MaplePacketCreator.jobMessage(0, job.getId(), name), this.getId()); } + MapleFamily family = getFamily(); + if(family != null) { + family.broadcast(MaplePacketCreator.jobMessage(1, job.getId(), name), this.getId()); + } setMasteries(this.job.getId()); guildUpdate(); @@ -1279,9 +1284,9 @@ public class MapleCharacter extends AbstractMapleCharacterObject { public void broadcastAcquaintances(byte[] packet) { buddylist.broadcast(packet, getWorldServer().getPlayerStorage()); - + MapleFamily family = getFamily(); if(family != null) { - //family.broadcast(packet, id); not yet implemented + family.broadcast(packet, id); } MapleGuild guild = getGuild(); @@ -4873,11 +4878,17 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public MapleFamily getFamily() { - return family; + if(familyEntry != null) return familyEntry.getFamily(); + else return null; } - - public void setFamily(MapleFamily f) { - this.family = f; + + public MapleFamilyEntry getFamilyEntry() { + return familyEntry; + } + + public void setFamilyEntry(MapleFamilyEntry entry) { + if(entry != null) setFamilyId(entry.getFamily().getID()); + this.familyEntry = entry; } public int getFamilyId() { @@ -6440,6 +6451,16 @@ public class MapleCharacter extends AbstractMapleCharacterObject { levelUpMessages(); guildUpdate(); + + MapleFamilyEntry familyEntry = getFamilyEntry(); + if(familyEntry != null) { + familyEntry.giveReputationToSenior(ServerConstants.FAMILY_REP_PER_LEVELUP, true); + MapleFamilyEntry senior = familyEntry.getSenior(); + if(senior != null) { //only send the message to direct senior + MapleCharacter seniorChr = senior.getChr(); + if(seniorChr != null) seniorChr.announce(MaplePacketCreator.levelUpMessage(1, level, getName())); + } + } } public boolean leaveParty() { @@ -8555,6 +8576,20 @@ public class MapleCharacter extends AbstractMapleCharacterObject { psf.close(); ps.close(); + MapleFamilyEntry familyEntry = getFamilyEntry(); //save family rep + if(familyEntry != null) { + if(familyEntry.saveReputation(con)) familyEntry.savedSuccessfully(); + MapleFamilyEntry senior = familyEntry.getSenior(); + if(senior != null && senior.getChr() == null) { //only save for offline family members + if(senior.saveReputation(con)) senior.savedSuccessfully(); + senior = senior.getSenior(); //save one level up as well + if(senior != null && senior.getChr() == null) { + if(senior.saveReputation(con)) senior.savedSuccessfully(); + } + } + + } + con.commit(); con.setAutoCommit(true); @@ -10327,7 +10362,11 @@ public class MapleCharacter extends AbstractMapleCharacterObject { mpc = null; mgc = null; party = null; - family = null; + MapleFamilyEntry familyEntry = getFamilyEntry(); + if(familyEntry != null) { + familyEntry.setCharacter(null); + setFamilyEntry(null); + } getWorldServer().registerTimedMapObject(new Runnable() { @Override @@ -10351,6 +10390,18 @@ public class MapleCharacter extends AbstractMapleCharacterObject { e.printStackTrace(); } } + + public void setLoginTime(long time) { + this.loginTime = time; + } + + public long getLoginTime() { + return loginTime; + } + + public long getLoggedInTime() { + return System.currentTimeMillis() - loginTime; + } public boolean isLoggedin() { return loggedIn; diff --git a/src/client/MapleFamily.java b/src/client/MapleFamily.java index 51eb441159..781ec33d69 100644 --- a/src/client/MapleFamily.java +++ b/src/client/MapleFamily.java @@ -25,75 +25,273 @@ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.HashMap; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicInteger; + +import net.server.Server; +import net.server.world.World; import tools.DatabaseConnection; +import tools.FilePrinter; +import tools.MaplePacketCreator; +import tools.Pair; /** * * @author Jay Estrella - Mr.Trash :3 + * @author Ubaware */ public class MapleFamily { - private static int id; - private static Map members = new HashMap(); - public MapleFamily(int cid) { - try { - Connection con = DatabaseConnection.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT familyid FROM family_character WHERE cid = ?"); - ps.setInt(1, cid); - ResultSet rs = ps.executeQuery(); - if (rs.next()) { - id = rs.getInt("familyid"); - } - ps.close(); - rs.close(); - con.close(); - getMapleFamily(); - } catch (SQLException ex) { - ex.printStackTrace(); - } - } + private static final AtomicInteger familyIDCounter = new AtomicInteger(); - private static void getMapleFamily() { - try { - Connection con = DatabaseConnection.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT * FROM family_character WHERE familyid = ?"); - ps.setInt(1, id); - ResultSet rs = ps.executeQuery(); - while (rs.next()) { - MapleFamilyEntry ret = new MapleFamilyEntry(); - ret.setFamilyId(id); - ret.setRank(rs.getInt("rank")); - ret.setReputation(rs.getInt("reputation")); - ret.setTotalJuniors(rs.getInt("totaljuniors")); - ret.setFamilyName(rs.getString("name")); - ret.setJuniors(rs.getInt("juniorsadded")); - ret.setTodaysRep(rs.getInt("todaysrep")); - int cid = rs.getInt("cid"); - ret.setChrId(cid); - members.put(cid, ret); - } - rs.close(); - ps.close(); - con.close(); - } catch (SQLException sqle) { - sqle.printStackTrace(); - } - } + private final int id, world; + private final Map members = new ConcurrentHashMap(); + private MapleFamilyEntry leader; + private String name; + private String preceptsMessage = ""; + private int totalGenerations; - public MapleFamilyEntry getMember(int cid) { - if (members.containsKey(cid)){ - return members.get(cid); - } - return null; - } - - public Map getMembers() { - return members; - } - - public void broadcast(byte[] packet) { - // family currently not developed + public MapleFamily(int id, int world) { + int newId = id; + if(id == -1) { + // get next available family id + while(idInUse(newId = familyIDCounter.incrementAndGet())) { + } } + this.id = newId; + this.world = world; + } + + private static boolean idInUse(int id) { + for(World world : Server.getInstance().getWorlds()) { + if(world.getFamily(id) != null) return true; + } + return false; + } + + public int getID() { + return id; + } + + public int getWorld() { + return world; + } + + public void setLeader(MapleFamilyEntry leader) { + this.leader = leader; + setName(leader.getName()); + } + + public MapleFamilyEntry getLeader() { + return leader; + } + + private void setName(String name) { + this.name = name; + } + + public int getTotalMembers() { + return members.size(); + } + + public int getTotalGenerations() { + return totalGenerations; + } + + public void setTotalGenerations(int generations) { + this.totalGenerations = generations; + } + + public String getName() { + return this.name; + } + + public void setMessage(String message, boolean save) { + this.preceptsMessage = message; + if(save) { + try (Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("UPDATE family_character SET precepts = ? WHERE cid = ?")) { + ps.setString(1, message); + ps.setInt(2, getLeader().getChrId()); + ps.executeUpdate(); + } catch(SQLException e) { + FilePrinter.printError(FilePrinter.FAMILY_ERROR, e, "Could not save new precepts for family " + getID() + "."); + e.printStackTrace(); + } + } + } + + public String getMessage() { + return preceptsMessage; + } + + public void addEntry(MapleFamilyEntry entry) { + members.put(entry.getChrId(), entry); + } + + public void removeEntryBranch(MapleFamilyEntry root) { + members.remove(root.getChrId()); + for(MapleFamilyEntry junior : root.getJuniors()) { + if(junior != null) removeEntryBranch(junior); + } + } + + public void addEntryTree(MapleFamilyEntry root) { + members.put(root.getChrId(), root); + for(MapleFamilyEntry junior : root.getJuniors()) { + if(junior != null) addEntryTree(junior); + } + } + + public MapleFamilyEntry getEntryByID(int cid) { + return members.get(cid); + } + + public void broadcast(byte[] packet) { + broadcast(packet, -1); + } + + public void broadcast(byte[] packet, int ignoreID) { + for(MapleFamilyEntry entry : members.values()) { + MapleCharacter chr = entry.getChr(); + if(chr != null) { + if(chr.getId() == ignoreID) continue; + chr.getClient().announce(packet); + } + } + } + + public void broadcastFamilyInfoUpdate() { + for(MapleFamilyEntry entry : members.values()) { + MapleCharacter chr = entry.getChr(); + if(chr != null) { + chr.getClient().announce(MaplePacketCreator.getFamilyInfo(entry)); + } + } + } + + public void resetDailyReps() { + for(MapleFamilyEntry entry : members.values()) { + entry.setTodaysRep(0); + entry.setRepsToSenior(0); + entry.resetEntitlementUsages(); + } + } + + public static void loadAllFamilies() { + try(Connection con = DatabaseConnection.getConnection()) { + List, MapleFamilyEntry>> unmatchedJuniors = new ArrayList, MapleFamilyEntry>>(200); // < familyEntry> + try(PreparedStatement psEntries = con.prepareStatement("SELECT * FROM family_character")) { + ResultSet rsEntries = psEntries.executeQuery(); + while(rsEntries.next()) { // can be optimized + int cid = rsEntries.getInt("cid"); + String name = null; + int level = -1; + int jobID = -1; + int world = -1; + try(PreparedStatement ps = con.prepareStatement("SELECT world, name, level, job FROM characters WHERE id = ?")) { + ps.setInt(1, cid); + ResultSet rs = ps.executeQuery(); + if(rs.next()) { + world = rs.getInt("world"); + name = rs.getString("name"); + level = rs.getInt("level"); + jobID = rs.getInt("job"); + } else { + FilePrinter.printError(FilePrinter.FAMILY_ERROR, "Could not load character information of " + cid + " in loadAllFamilies(). (RECORD DOES NOT EXIST)"); + } + } catch(SQLException e) { + FilePrinter.printError(FilePrinter.FAMILY_ERROR, e, "Could not load character information of " + cid + " in loadAllFamilies(). (SQL ERROR)"); + } + int familyid = rsEntries.getInt("familyid"); + int seniorid = rsEntries.getInt("seniorid"); + int reputation = rsEntries.getInt("reputation"); + int todaysRep = rsEntries.getInt("todaysrep"); + int totalRep = rsEntries.getInt("totalreputation"); + int repsToSenior = rsEntries.getInt("reptosenior"); + String precepts = rsEntries.getString("precepts"); + //Timestamp lastResetTime = rsEntries.getTimestamp("lastresettime"); //taken care of by FamilyDailyResetWorker + MapleFamily family = Server.getInstance().getWorld(world).getFamily(familyid); + if(family == null) { + family = new MapleFamily(familyid, world); + Server.getInstance().getWorld(world).addFamily(familyid, family); + } + MapleFamilyEntry familyEntry = new MapleFamilyEntry(family, cid, name, level, MapleJob.getById(jobID)); + family.addEntry(familyEntry); + if(seniorid <= 0) { + family.setLeader(familyEntry); + family.setMessage(precepts, false); + } + MapleFamilyEntry senior = family.getEntryByID(seniorid); + if(senior != null) { + familyEntry.setSenior(family.getEntryByID(seniorid), false); + } else { + if(seniorid > 0) unmatchedJuniors.add(new Pair, MapleFamilyEntry>(new Pair(world, seniorid), familyEntry)); + } + familyEntry.setReputation(reputation); + familyEntry.setTodaysRep(todaysRep); + familyEntry.setTotalReputation(totalRep); + familyEntry.setRepsToSenior(repsToSenior); + //load used entitlements + try (PreparedStatement ps = con.prepareStatement("SELECT entitlementid FROM family_entitlement WHERE charid = ?")) { + ps.setInt(1, familyEntry.getChrId()); + ResultSet rs = ps.executeQuery(); + while(rs.next()) { + familyEntry.setEntitlementUsed(rs.getInt("entitlementid")); + } + } + } + } catch(SQLException e) { + FilePrinter.printError(FilePrinter.FAMILY_ERROR, e, "Could not get family_character entries."); + e.printStackTrace(); + } + // link missing ones (out of order) + for(Pair, MapleFamilyEntry> unmatchedJunior : unmatchedJuniors) { + int world = unmatchedJunior.getLeft().getLeft(); + int seniorid = unmatchedJunior.getLeft().getRight(); + MapleFamilyEntry junior = unmatchedJunior.getRight(); + MapleFamilyEntry senior = Server.getInstance().getWorld(world).getFamily(junior.getFamily().getID()).getEntryByID(seniorid); + if(senior != null) { + junior.setSenior(senior, false); + } else { + FilePrinter.printError(FilePrinter.FAMILY_ERROR, "Missing senior for character " + junior.getName() + " in world " + world); + } + } + } catch(SQLException e) { + FilePrinter.printError(FilePrinter.FAMILY_ERROR, e, "Could not get DB connection."); + e.printStackTrace(); + } + for(World world : Server.getInstance().getWorlds()) { + for(MapleFamily family : world.getFamilies()) { + family.getLeader().doFullCount(); + } + } + } + + public void saveAllMembersRep() { //was used for autosave worker, but character autosave should be enough + try(Connection con = DatabaseConnection.getConnection()) { + con.setAutoCommit(false); + boolean success = true; + for(MapleFamilyEntry entry : members.values()) { + success = entry.saveReputation(con); + if(!success) break; + } + if(!success) { + con.rollback(); + FilePrinter.printError(FilePrinter.FAMILY_ERROR, "Family rep autosave failed for family " + getID() + " on " + Calendar.getInstance().getTime().toString() + "."); + } + con.setAutoCommit(true); + //reset repChanged after successful save + for(MapleFamilyEntry entry : members.values()) { + entry.savedSuccessfully(); + } + } catch(SQLException e) { + FilePrinter.printError(FilePrinter.FAMILY_ERROR, e, "Could not get connection to DB."); + e.printStackTrace(); + } + } } diff --git a/src/client/MapleFamilyEntitlement.java b/src/client/MapleFamilyEntitlement.java new file mode 100644 index 0000000000..fed32c302f --- /dev/null +++ b/src/client/MapleFamilyEntitlement.java @@ -0,0 +1,41 @@ +package client; + +public enum MapleFamilyEntitlement { + FAMILY_REUINION(1, 300, "Family Reunion", "[Target] Me\\n[Effect] Teleport directly to the Family member of your choice."), + SUMMON_FAMILY(1, 500, "Summon Family", "[Target] 1 Family member\\n[Effect] Summon a Family member of choice to the map you're in."), + SELF_DROP_1_5(1, 700, "My Drop Rate 1.5x (15 min)", "[Target] Me\\n[Time] 15 min.\\n[Effect] Monster drop rate will be increased #c1.5x#.\\n* If the Drop Rate event is in progress, this will be nullified."), + SELF_EXP_1_5(1, 800, "My EXP 1.5x (15 min)", "[Target] Me\\n[Time] 15 min.\\n[Effect] EXP earned from hunting will be increased #c1.5x#.\\n* If the EXP event is in progress, this will be nullified."), + FAMILY_BONDING(1, 1000, "Family Bonding (30 min)", "[Target] At least 6 Family members online that are below me in the Pedigree\\n[Time] 30 min.\\n[Effect] Monster drop rate and EXP earned will be increased #c2x#. \\n* If the EXP event is in progress, this will be nullified."), + SELF_DROP_2(1, 1200, "My Drop Rate 2x (15 min)", "[Target] Me\\n[Time] 15 min.\\n[Effect] Monster drop rate will be increased #c2x#.\\n* If the Drop Rate event is in progress, this will be nullified."), + SELF_EXP_2(1, 1500, "My EXP 2x (15 min)", "[Target] Me\\n[Time] 15 min.\\n[Effect] EXP earned from hunting will be increased #c2x#.\\n* If the EXP event is in progress, this will be nullified."), + SELF_DROP_2_30MIN(1, 2000, "My Drop Rate 2x (30 min)", "[Target] Me\\n[Time] 30 min.\\n[Effect] Monster drop rate will be increased #c2x#.\\n* If the Drop Rate event is in progress, this will be nullified."), + SELF_EXP_2_30MIN(1, 2500, "My EXP 2x (30 min)", "[Target] Me\\n[Time] 30 min.\\n[Effect] EXP earned from hunting will be increased #c2x#. \\n* If the EXP event is in progress, this will be nullified."), + PARTY_DROP_2_30MIN(1, 4000, "My Party Drop Rate 2x (30 min)", "[Target] My party\\n[Time] 30 min.\\n[Effect] Monster drop rate will be increased #c2x#.\\n* If the Drop Rate event is in progress, this will be nullified."), + PARTY_EXP_2_30MIN(1, 5000, "My Party EXP 2x (30 min)", "[Target] My party\\n[Time] 30 min.\\n[Effect] EXP earned from hunting will be increased #c2x#.\\n* If the EXP event is in progress, this will be nullified."); + + private final int usageLimit, repCost; + private final String name, description; + + private MapleFamilyEntitlement(int usageLimit, int repCost, String name, String description) { + this.usageLimit = usageLimit; + this.repCost = repCost; + this.name = name; + this.description = description; + } + + public int getUsageLimit() { + return usageLimit; + } + + public int getRepCost() { + return repCost; + } + + public String getName() { + return name; + } + + public String getDescription() { + return description; + } +} diff --git a/src/client/MapleFamilyEntry.java b/src/client/MapleFamilyEntry.java index af8ac7e37a..82858ae131 100644 --- a/src/client/MapleFamilyEntry.java +++ b/src/client/MapleFamilyEntry.java @@ -1,8 +1,6 @@ /* - This file is part of the OdinMS Maple Story Server - Copyright (C) 2008 Patrick Huy - Matthias Butz - Jan Christian Meyer + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2018 RonanLana This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as @@ -21,33 +19,210 @@ */ package client; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import net.server.Server; +import tools.DatabaseConnection; +import tools.FilePrinter; +import tools.MaplePacketCreator; +import tools.Pair; + +/** + * @author Ubaware + */ + public class MapleFamilyEntry { - private int familyId; - private int rank, reputation, totalReputation, todaysRep, totalJuniors, juniors, chrid; - private String familyName; + private final int characterID; + private volatile MapleFamily family; + private volatile MapleCharacter character; - public int getId() { - return familyId; + private volatile MapleFamilyEntry senior; + private final MapleFamilyEntry[] juniors = new MapleFamilyEntry[2]; + private final int[] entitlements = new int[11]; + private volatile int reputation, totalReputation; + private volatile int todaysRep, repsToSenior; //both are daily values + private volatile int totalJuniors, totalSeniors; + + private volatile int generation; + + private volatile boolean repChanged; //used to ignore saving unchanged rep values + + // cached values for offline players + private String charName; + private int level; + private MapleJob job; + + public MapleFamilyEntry(MapleFamily family, int characterID, String charName, int level, MapleJob job) { + this.family = family; + this.characterID = characterID; + this.charName = charName; + this.level = level; + this.job = job; } - public void setFamilyId(int familyId) { - this.familyId = familyId; + public MapleCharacter getChr() { + return character; } - public int getRank() { - return rank; + public void setCharacter(MapleCharacter newCharacter) { + if(newCharacter == null) cacheOffline(newCharacter); + else newCharacter.setFamilyEntry(this); + this.character = newCharacter; } - public void setRank(int rank) { - this.rank = rank; + private void cacheOffline(MapleCharacter chr) { + if(chr != null) { + charName = chr.getName(); + level = chr.getLevel(); + job = chr.getJob(); + } + } + + public synchronized void join(MapleFamilyEntry senior) { + if(senior == null || getSenior() != null) return; + MapleFamily oldFamily = getFamily(); + MapleFamily newFamily = senior.getFamily(); + setSenior(senior, false); + addSeniorCount(newFamily.getTotalGenerations(), newFamily); //count will be overwritten by doFullCount() + newFamily.getLeader().doFullCount(); //easier than keeping track of numbers + oldFamily.setMessage(null, true); + newFamily.addEntryTree(this); + Server.getInstance().getWorld(oldFamily.getWorld()).removeFamily(oldFamily.getID()); + + //db + try(Connection con = DatabaseConnection.getConnection()) { + con.setAutoCommit(false); + boolean success = updateDBChangeFamily(con, getChrId(), newFamily.getID(), senior.getChrId()); + for(MapleFamilyEntry junior : juniors) { // better to duplicate this than the SQL code + if(junior != null) { + success = junior.updateNewFamilyDB(con); // recursively updates juniors in db + if(!success) break; + } + } + if(!success) { + con.rollback(); + FilePrinter.printError(FilePrinter.FAMILY_ERROR, "Could not absorb " + oldFamily.getName() + " family into " + newFamily.getName() + " family. (SQL ERROR)"); + } + con.setAutoCommit(true); + } catch(SQLException e) { + FilePrinter.printError(FilePrinter.FAMILY_ERROR, e, "Could not get connection to DB."); + e.printStackTrace(); + } + } + + public synchronized void fork() { + MapleFamily oldFamily = getFamily(); + MapleFamilyEntry oldSenior = getSenior(); + family = new MapleFamily(-1, oldFamily.getWorld()); + Server.getInstance().getWorld(family.getWorld()).addFamily(family.getID(), family); + setSenior(null, false); + family.setLeader(this); + addSeniorCount(-getTotalSeniors(), family); + setTotalSeniors(0); + if(oldSenior != null) { + oldSenior.addJuniorCount(-getTotalJuniors()); + oldSenior.removeJunior(this); + oldFamily.getLeader().doFullCount(); + } + oldFamily.removeEntryBranch(this); + family.addEntryTree(this); + this.repsToSenior = 0; + this.repChanged = true; + family.setMessage("", true); + doFullCount(); //to make sure all counts are correct + // update db + try(Connection con = DatabaseConnection.getConnection()) { + con.setAutoCommit(false); + + boolean success = updateDBChangeFamily(con, getChrId(), getFamily().getID(), 0); + + for(MapleFamilyEntry junior : juniors) { // better to duplicate this than the SQL code + if(junior != null) { + success = junior.updateNewFamilyDB(con); // recursively updates juniors in db + if(!success) break; + } + } + if(!success) { + con.rollback(); + FilePrinter.printError(FilePrinter.FAMILY_ERROR, "Could not fork family with new leader " + getName() + ". (Old senior : " + oldSenior.getName() + ", leader :" + oldFamily.getLeader().getName() + ")"); + } + con.setAutoCommit(true); + + } catch(SQLException e) { + FilePrinter.printError(FilePrinter.FAMILY_ERROR, e, "Could not get connection to DB."); + e.printStackTrace(); + } + } + + private synchronized boolean updateNewFamilyDB(Connection con) { + if(!updateFamilyEntryDB(con, getChrId(), getFamily().getID())) return false; + if(!updateCharacterFamilyDB(con, getChrId(), getFamily().getID(), true)) return false; + + for(MapleFamilyEntry junior : juniors) { + if(junior != null) { + if(!junior.updateNewFamilyDB(con)) return false; + } + } + return true; + } + + private static boolean updateFamilyEntryDB(Connection con, int cid, int familyid) { + try(PreparedStatement ps = con.prepareStatement("UPDATE family_character SET familyid = ? WHERE cid = ?")) { + ps.setInt(1, familyid); + ps.setInt(2, cid); + ps.executeUpdate(); + } catch(SQLException e) { + FilePrinter.printError(FilePrinter.FAMILY_ERROR, e, "Could not update family id in 'family_character' for character id " + cid + ". (fork)"); + e.printStackTrace(); + return false; + } + return true; + } + + private synchronized void addSeniorCount(int seniorCount, MapleFamily newFamily) { // traverses tree and subtracts seniors and updates family + if(newFamily != null) this.family = newFamily; + setTotalSeniors(getTotalSeniors() + seniorCount); + this.generation += seniorCount; + for(MapleFamilyEntry junior : juniors) { + if(junior != null) junior.addSeniorCount(seniorCount, newFamily); + } + } + + private synchronized void addJuniorCount(int juniorCount) { // climbs tree and adds junior count + setTotalJuniors(getTotalJuniors() + juniorCount); + MapleFamilyEntry senior = getSenior(); + if(senior != null) senior.addJuniorCount(juniorCount); + } + + public MapleFamily getFamily() { + return family; } public int getChrId() { - return chrid; + return characterID; } - public void setChrId(int chrid) { - this.chrid = chrid; + public String getName() { + MapleCharacter chr = character; + if(chr != null) return chr.getName(); + else return charName; + } + + public int getLevel() { + MapleCharacter chr = character; + if(chr != null) return chr.getLevel(); + else return level; + } + + public MapleJob getJob() { + MapleCharacter chr = character; + if(chr != null) return chr.getJob(); + else return job; } public int getReputation() { @@ -59,16 +234,182 @@ public class MapleFamilyEntry { } public void setReputation(int reputation) { + if(reputation != this.reputation) this.repChanged = true; this.reputation = reputation; } public void setTodaysRep(int today) { + if(today != todaysRep) this.repChanged = true; this.todaysRep = today; } - - public void gainReputation(int gain) { + + public int getRepsToSenior() { + return repsToSenior; + } + + public void setRepsToSenior(int reputation) { + if(reputation != this.repsToSenior) this.repChanged = true; + this.repsToSenior = reputation; + } + + public void gainReputation(int gain, boolean countTowardsTotal) { + gainReputation(gain, countTowardsTotal, this); + } + + private void gainReputation(int gain, boolean countTowardsTotal, MapleFamilyEntry from) { + if(gain != 0) repChanged = true; this.reputation += gain; - this.totalReputation += gain; + this.todaysRep += gain; + if(gain > 0 && countTowardsTotal) { + this.totalReputation += gain; + } + MapleCharacter chr = getChr(); + if(chr != null) chr.announce(MaplePacketCreator.sendGainRep(gain, from != null ? from.getName() : "")); + } + + public void giveReputationToSenior(int gain, boolean includeSuperSenior) { + int actualGain = gain; + MapleFamilyEntry senior = getSenior(); + if(senior != null && senior.getLevel() < getLevel() && gain > 0) actualGain /= 2; //don't halve negative values + if(senior != null) { + senior.gainReputation(actualGain, true, this); + if(actualGain > 0) { + this.repsToSenior += actualGain; + this.repChanged = true; + } + if(includeSuperSenior) { + senior = senior.getSenior(); + if(senior != null) { + senior.gainReputation(actualGain, true, this); + } + } + } + } + + public int getTotalReputation() { + return totalReputation; + } + + public void setTotalReputation(int totalReputation) { + if(totalReputation != this.totalReputation) this.repChanged = true; + this.totalReputation = totalReputation; + } + + public MapleFamilyEntry getSenior() { + return senior; + } + + public synchronized boolean setSenior(MapleFamilyEntry senior, boolean save) { + if(this.senior == senior) return false; + MapleFamilyEntry oldSenior = this.senior; + this.senior = senior; + if(senior != null) { + if(senior.addJunior(this)) { + if(save) { + updateDBChangeFamily(getChrId(), senior.getFamily().getID(), senior.getChrId()); + } + if(this.repsToSenior != 0) this.repChanged = true; + this.repsToSenior = 0; + this.addSeniorCount(1, null); + this.setTotalSeniors(senior.getTotalSeniors() + 1); + return true; + } + } else { + if(oldSenior != null) { + oldSenior.removeJunior(this); + } + } + return false; + } + + private static boolean updateDBChangeFamily(int cid, int familyid, int seniorid) { + try(Connection con = DatabaseConnection.getConnection()) { + return updateDBChangeFamily(con, cid, familyid, seniorid); + } catch(SQLException e) { + FilePrinter.printError(FilePrinter.FAMILY_ERROR, e, "Could not get connection to DB."); + e.printStackTrace(); + return false; + } + } + + private static boolean updateDBChangeFamily(Connection con, int cid, int familyid, int seniorid) { + try(PreparedStatement ps = con.prepareStatement("UPDATE family_character SET familyid = ?, seniorid = ?, reptosenior = 0 WHERE cid = ?")) { + ps.setInt(1, familyid); + ps.setInt(2, seniorid); + ps.setInt(3, cid); + ps.executeUpdate(); + } catch(SQLException e) { + FilePrinter.printError(FilePrinter.FAMILY_ERROR, e, "Could not update seniorid in 'family_character' for character id " + cid + "."); + e.printStackTrace(); + return false; + } + return updateCharacterFamilyDB(con, cid, familyid, false); + } + + private static boolean updateCharacterFamilyDB(Connection con, int charid, int familyid, boolean fork) { + try(PreparedStatement ps = con.prepareStatement("UPDATE characters SET familyid = ? WHERE id = ?")) { + ps.setInt(1, familyid); + ps.setInt(2, charid); + ps.executeUpdate(); + } catch(SQLException e) { + FilePrinter.printError(FilePrinter.FAMILY_ERROR, e, "Could not update familyid in 'characters' for character id " + charid + " when changing family. " + (fork ? "(fork)" : "")); + e.printStackTrace(); + return false; + } + return true; + } + + public List getJuniors() { + return Collections.unmodifiableList(Arrays.asList(juniors)); + } + + public MapleFamilyEntry getOtherJunior(MapleFamilyEntry junior) { + if(juniors[0] == junior) return juniors[1]; + else if(juniors[1] == junior) return juniors[0]; + return null; + } + + public int getJuniorCount() { //close enough to be relatively consistent to multiple threads (and the result is not vital) + int juniorCount = 0; + if(juniors[0] != null) juniorCount++; + if(juniors[1] != null) juniorCount++; + return juniorCount; + } + + public synchronized boolean addJunior(MapleFamilyEntry newJunior) { + for(int i = 0; i < juniors.length; i++) { + if(juniors[i] == null) { // successfully add new junior to family + juniors[i] = newJunior; + addJuniorCount(1); + getFamily().addEntry(newJunior); + return true; + } + } + return false; + } + + public synchronized boolean isJunior(MapleFamilyEntry entry) { //require locking since result accuracy is vital + if(juniors[0] == entry) return true; + else if(juniors[1] == entry) return true; + return false; + } + + public synchronized boolean removeJunior(MapleFamilyEntry junior) { + for(int i = 0; i < juniors.length; i++) { + if(juniors[i] == junior) { + juniors[i] = null; + return true; + } + } + return false; + } + + public int getTotalSeniors() { + return totalSeniors; + } + + public void setTotalSeniors(int totalSeniors) { + this.totalSeniors = totalSeniors; } public int getTotalJuniors() { @@ -78,28 +419,134 @@ public class MapleFamilyEntry { public void setTotalJuniors(int totalJuniors) { this.totalJuniors = totalJuniors; } - - public int getJuniors() { - return juniors; + + public void announceToSenior(byte[] packet, boolean includeSuperSenior) { + MapleFamilyEntry senior = getSenior(); + if(senior != null) { + MapleCharacter seniorChr = senior.getChr(); + if(seniorChr != null) seniorChr.announce(packet); + senior = senior.getSenior(); + if(includeSuperSenior && senior != null) { + seniorChr = senior.getChr(); + if(seniorChr != null) seniorChr.announce(packet); + } + } + } + + public void updateSeniorFamilyInfo(boolean includeSuperSenior) { + MapleFamilyEntry senior = getSenior(); + if(senior != null) { + MapleCharacter seniorChr = senior.getChr(); + if(seniorChr != null) seniorChr.announce(MaplePacketCreator.getFamilyInfo(senior)); + senior = senior.getSenior(); + if(includeSuperSenior && senior != null) { + seniorChr = senior.getChr(); + if(seniorChr != null) seniorChr.announce(MaplePacketCreator.getFamilyInfo(senior)); + } + } } - public void setJuniors(int juniors) { - this.juniors = juniors; + /** + * Traverses entire family tree to update senior/junior counts. Call on leader. + */ + public synchronized void doFullCount() { + Pair counts = this.traverseAndUpdateCounts(0); + getFamily().setTotalGenerations(counts.getLeft() + 1); } - public void setFamilyName(String familyName) { - this.familyName = familyName; + private Pair traverseAndUpdateCounts(int seniors) { // recursion probably limits family size, but it should handle a depth of a few thousand + setTotalSeniors(seniors); + this.generation = seniors; + int juniorCount = 0; + int highestGeneration = this.generation; + for(MapleFamilyEntry entry : juniors) { + if(entry != null) { + Pair counts = entry.traverseAndUpdateCounts(seniors + 1); + juniorCount += counts.getRight(); //total juniors + if(counts.getLeft() > highestGeneration) highestGeneration = counts.getLeft(); + } + } + setTotalJuniors(juniorCount); + return new Pair<>(highestGeneration, juniorCount); //creating new objects to return is a bit inefficient, but cleaner than packing into a long } - public String getFamilyName() { - return familyName; + public boolean useEntitlement(MapleFamilyEntitlement entitlement) { + int id = entitlement.ordinal(); + if(entitlements[id] >= 1) return false; + try(Connection con = DatabaseConnection.getConnection(); PreparedStatement ps = con.prepareStatement("INSERT INTO family_entitlement (entitlementid, charid, timestamp) VALUES (?, ?, ?)")) { + ps.setInt(1, id); + ps.setInt(2, getChrId()); + ps.setLong(3, System.currentTimeMillis()); + ps.executeUpdate(); + } catch(SQLException e) { + FilePrinter.printError(FilePrinter.FAMILY_ERROR, e, "Could not insert new row in 'family_entitlement' for character " + getName() + "."); + e.printStackTrace(); + } + entitlements[id]++; + return true; + } + + public boolean refundEntitlement(MapleFamilyEntitlement entitlement) { + int id = entitlement.ordinal(); + try(Connection con = DatabaseConnection.getConnection(); PreparedStatement ps = con.prepareStatement("DELETE FROM family_entitlement WHERE entitlementid = ? AND charid = ?")) { + ps.setInt(1, id); + ps.setInt(2, getChrId()); + ps.executeUpdate(); + } catch(SQLException e) { + FilePrinter.printError(FilePrinter.FAMILY_ERROR, e, "Could not refund family entitlement \"" + entitlement.getName() + "\" for character " + getName() + "."); + e.printStackTrace(); + } + entitlements[id] = 0; + return true; } - public int getTotalReputation() { - return totalReputation; + public boolean isEntitlementUsed(MapleFamilyEntitlement entitlement) { + return entitlements[entitlement.ordinal()] >= 1; } - - public void setTotalReputation(int totalReputation) { - this.totalReputation = totalReputation; + + public int getEntitlementUsageCount(MapleFamilyEntitlement entitlement) { + return entitlements[entitlement.ordinal()]; + } + + public void setEntitlementUsed(int id) { + entitlements[id]++; + } + + public void resetEntitlementUsages() { + for(MapleFamilyEntitlement entitlement : MapleFamilyEntitlement.values()) { + entitlements[entitlement.ordinal()] = 0; + } + } + + public boolean saveReputation() { + if(!repChanged) return true; + try(Connection con = DatabaseConnection.getConnection()) { + return saveReputation(con); + } catch(SQLException e) { + FilePrinter.printError(FilePrinter.FAMILY_ERROR, e, "Could not get connection to DB."); + e.printStackTrace(); + return false; + } + } + + public boolean saveReputation(Connection con) { + if(!repChanged) return true; + try (PreparedStatement ps = con.prepareStatement("UPDATE family_character SET reputation = ?, todaysrep = ?, totalreputation = ?, reptosenior = ? WHERE cid = ?")) { + ps.setInt(1, getReputation()); + ps.setInt(2, getTodaysRep()); + ps.setInt(3, getTotalReputation()); + ps.setInt(4, getRepsToSenior()); + ps.setInt(5, getChrId()); + ps.executeUpdate(); + } catch(SQLException e) { + FilePrinter.printError(FilePrinter.FAMILY_ERROR, e, "Failed to autosave rep to 'family_character' for charid " + getChrId()); + e.printStackTrace(); + return false; + } + return true; + } + + public void savedSuccessfully() { + this.repChanged = false; } } diff --git a/src/constants/ServerConstants.java b/src/constants/ServerConstants.java index b037901aec..bfc9936848 100644 --- a/src/constants/ServerConstants.java +++ b/src/constants/ServerConstants.java @@ -71,7 +71,7 @@ public class ServerConstants { public static final boolean USE_AUTOHIDE_GM = false; //When enabled, GMs are automatically hidden when joining. Thanks to Steven Deblois (steven1152). public static final boolean USE_BUYBACK_SYSTEM = true; //Enables the HeavenMS-builtin buyback system, to be used by dead players when clicking the MTS button. public static final boolean USE_FIXED_RATIO_HPMP_UPDATE = true; //Enables the HeavenMS-builtin HPMP update based on the current pool to max pool ratio. - public static final boolean USE_FAMILY_SYSTEM = false; + public static final boolean USE_FAMILY_SYSTEM = true; public static final boolean USE_DUEY = true; public static final boolean USE_RANDOMIZE_HPMP_GAIN = true; //Enables randomizing on MaxHP/MaxMP gains and INT accounting for the MaxMP gain on level up. public static final boolean USE_STORAGE_ITEM_SORT = true; //Enables storage "Arrange Items" feature. @@ -239,6 +239,12 @@ public class ServerConstants { public static final int EXPAND_GUILD_BASE_COST = 500000; public static final int EXPAND_GUILD_TIER_COST = 1000000; public static final int EXPAND_GUILD_MAX_COST = 5000000; + + //Family Configuration + public static final int FAMILY_REP_PER_KILL = 4; //Amount of rep gained per monster kill. + public static final int FAMILY_REP_PER_BOSS_KILL = 20; //Amount of rep gained per boss kill. + public static final int FAMILY_REP_PER_LEVELUP = 200; //Amount of rep gained upon leveling up. + public static final int FAMILY_MAX_GENERATIONS = 1000; //Maximum depth of family tree. (Distance from leader to farthest junior) //Equipment Configuration public static final boolean USE_EQUIPMNT_LVLUP_SLOTS = true;//Equips can upgrade slots at level up. diff --git a/src/net/PacketProcessor.java b/src/net/PacketProcessor.java index 16d7accdc3..ad7dade738 100644 --- a/src/net/PacketProcessor.java +++ b/src/net/PacketProcessor.java @@ -223,8 +223,14 @@ public final class PacketProcessor { registerHandler(RecvOpcode.MONSTER_BOOK_COVER, new MonsterBookCoverHandler()); registerHandler(RecvOpcode.AUTO_DISTRIBUTE_AP, new AutoAssignHandler()); registerHandler(RecvOpcode.MAKER_SKILL, new MakerSkillHandler()); + registerHandler(RecvOpcode.OPEN_FAMILY_PEDIGREE, new OpenFamilyPedigreeHandler()); + registerHandler(RecvOpcode.OPEN_FAMILY, new OpenFamilyHandler()); registerHandler(RecvOpcode.ADD_FAMILY, new FamilyAddHandler()); + registerHandler(RecvOpcode.SEPARATE_FAMILY_BY_SENIOR, new FamilySeparateHandler()); + registerHandler(RecvOpcode.SEPARATE_FAMILY_BY_JUNIOR, new FamilySeparateHandler()); registerHandler(RecvOpcode.USE_FAMILY, new FamilyUseHandler()); + registerHandler(RecvOpcode.CHANGE_FAMILY_MESSAGE, new FamilyPreceptsHandler()); + registerHandler(RecvOpcode.FAMILY_SUMMON_RESPONSE, new FamilySummonResponseHandler()); registerHandler(RecvOpcode.USE_HAMMER, new UseHammerHandler()); registerHandler(RecvOpcode.SCRIPTED_ITEM, new ScriptedItemHandler()); registerHandler(RecvOpcode.TOUCHING_REACTOR, new TouchReactorHandler()); diff --git a/src/net/opcodes/RecvOpcode.java b/src/net/opcodes/RecvOpcode.java index e357620210..98fab2ed94 100644 --- a/src/net/opcodes/RecvOpcode.java +++ b/src/net/opcodes/RecvOpcode.java @@ -145,10 +145,15 @@ public enum RecvOpcode { WEDDING_TALK_MORE(0x8B), ALLIANCE_OPERATION(0x8F), DENY_ALLIANCE_REQUEST(0x90), + OPEN_FAMILY_PEDIGREE(0x91), OPEN_FAMILY(0x92), ADD_FAMILY(0x93), + SEPARATE_FAMILY_BY_SENIOR(0x94), + SEPARATE_FAMILY_BY_JUNIOR(0x95), ACCEPT_FAMILY(0x96), USE_FAMILY(0x97), + CHANGE_FAMILY_MESSAGE(0x98), + FAMILY_SUMMON_RESPONSE(0x99), BBS_OPERATION(0x9B), ENTER_MTS(0x9C), USE_SOLOMON_ITEM(0x9D), diff --git a/src/net/opcodes/SendOpcode.java b/src/net/opcodes/SendOpcode.java index 7564cf3a0b..bcbeb2eb19 100644 --- a/src/net/opcodes/SendOpcode.java +++ b/src/net/opcodes/SendOpcode.java @@ -124,7 +124,7 @@ public enum SendOpcode { FAMILY_JOIN_REQUEST_RESULT(0x62), FAMILY_JOIN_ACCEPTED(0x63), FAMILY_PRIVILEGE_LIST(0x64), - FAMILY_FAMOUS_POINT_INC_RESULT(0x65), + FAMILY_REP_GAIN(0x65), FAMILY_NOTIFY_LOGIN_OR_LOGOUT(0x66), //? is logged in. LOLWUT FAMILY_SET_PRIVILEGE(0x67), FAMILY_SUMMON_REQUEST(0x68), diff --git a/src/net/server/Server.java b/src/net/server/Server.java index 94537cb291..d61f84c94c 100644 --- a/src/net/server/Server.java +++ b/src/net/server/Server.java @@ -80,6 +80,7 @@ import org.apache.mina.filter.codec.ProtocolCodecFilter; import org.apache.mina.transport.socket.nio.NioSocketAcceptor; import client.MapleClient; +import client.MapleFamily; import client.MapleCharacter; import client.SkillFactory; import client.command.CommandsExecutor; @@ -531,7 +532,7 @@ public class Server { return Math.max(0, nextHour.getTimeInMillis() - System.currentTimeMillis()); } - private static long getTimeLeftForNextDay() { + public static long getTimeLeftForNextDay() { Calendar nextDay = Calendar.getInstance(); nextDay.add(Calendar.DAY_OF_MONTH, 1); nextDay.set(Calendar.HOUR, 0); @@ -947,6 +948,12 @@ public class Server { System.out.println("[SEVERE] Syntax error in 'world.ini'."); System.exit(0); } + + if(ServerConstants.USE_FAMILY_SYSTEM) { + timeToTake = System.currentTimeMillis(); + MapleFamily.loadAllFamilies(); + System.out.println("Families loaded in " + ((System.currentTimeMillis() - timeToTake) / 1000.0) + " seconds\r\n"); + } acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 30); acceptor.setHandler(new MapleServerHandler()); diff --git a/src/net/server/channel/handlers/AcceptFamilyHandler.java b/src/net/server/channel/handlers/AcceptFamilyHandler.java index b87b124ad6..4bffaa5d50 100644 --- a/src/net/server/channel/handlers/AcceptFamilyHandler.java +++ b/src/net/server/channel/handlers/AcceptFamilyHandler.java @@ -22,30 +22,132 @@ package net.server.channel.handlers; import constants.ServerConstants; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; + import client.MapleCharacter; import client.MapleClient; +import client.MapleFamily; +import client.MapleFamilyEntry; import net.AbstractMaplePacketHandler; +import net.server.coordinator.MapleInviteCoordinator; +import net.server.coordinator.MapleInviteCoordinator.InviteResult; +import net.server.coordinator.MapleInviteCoordinator.InviteType; +import net.server.coordinator.MapleInviteCoordinator.MapleInviteResult; +import tools.DatabaseConnection; +import tools.FilePrinter; import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; /** * * @author Jay Estrella + * @author Ubaware */ public final class AcceptFamilyHandler extends AbstractMaplePacketHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { - if (!ServerConstants.USE_FAMILY_SYSTEM){ - return; - } - //System.out.println(slea.toString()); + if(!ServerConstants.USE_FAMILY_SYSTEM) { + return; + } + MapleCharacter chr = c.getPlayer(); int inviterId = slea.readInt(); - //String inviterName = slea.readMapleAsciiString(); + slea.readMapleAsciiString(); + boolean accept = slea.readByte() != 0; + // String inviterName = slea.readMapleAsciiString(); MapleCharacter inviter = c.getWorldServer().getPlayerStorage().getCharacterById(inviterId); - if (inviter != null) { - inviter.getClient().announce(MaplePacketCreator.sendFamilyJoinResponse(true, c.getPlayer().getName())); + if(inviter != null) { + MapleInviteResult inviteResult = MapleInviteCoordinator.answerInvite(InviteType.FAMILY, c.getPlayer().getId(), c.getPlayer(), accept); + if(inviteResult.result == InviteResult.NOT_FOUND) return; //was never invited. (or expired on server only somehow?) + if(accept) { + if(inviter.getFamily() != null) { + if(chr.getFamily() == null) { + MapleFamilyEntry newEntry = new MapleFamilyEntry(inviter.getFamily(), chr.getId(), chr.getName(), chr.getLevel(), chr.getJob()); + newEntry.setCharacter(chr); + if(!newEntry.setSenior(inviter.getFamilyEntry(), true)) { + inviter.announce(MaplePacketCreator.sendFamilyMessage(1, 0)); + return; + } else { + // save + inviter.getFamily().addEntry(newEntry); + insertNewFamilyRecord(chr.getId(), inviter.getFamily().getID(), inviter.getId(), false); + } + } else { //absorb target family + MapleFamilyEntry targetEntry = chr.getFamilyEntry(); + MapleFamily targetFamily = targetEntry.getFamily(); + if(targetFamily.getLeader() != targetEntry) return; + if(inviter.getFamily().getTotalGenerations() + targetFamily.getTotalGenerations() <= ServerConstants.FAMILY_MAX_GENERATIONS) { + targetEntry.join(inviter.getFamilyEntry()); + } else { + inviter.announce(MaplePacketCreator.sendFamilyMessage(76, 0)); + chr.announce(MaplePacketCreator.sendFamilyMessage(76, 0)); + return; + } + } + } else { // create new family + if(chr.getFamily() != null && inviter.getFamily() != null && chr.getFamily().getTotalGenerations() + inviter.getFamily().getTotalGenerations() >= ServerConstants.FAMILY_MAX_GENERATIONS) { + inviter.announce(MaplePacketCreator.sendFamilyMessage(76, 0)); + chr.announce(MaplePacketCreator.sendFamilyMessage(76, 0)); + return; + } + MapleFamily newFamily = new MapleFamily(-1, c.getWorld()); + c.getWorldServer().addFamily(newFamily.getID(), newFamily); + MapleFamilyEntry inviterEntry = new MapleFamilyEntry(newFamily, inviter.getId(), inviter.getName(), inviter.getLevel(), inviter.getJob()); + inviterEntry.setCharacter(inviter); + newFamily.setLeader(inviter.getFamilyEntry()); + newFamily.addEntry(inviterEntry); + if(chr.getFamily() == null) { //completely new family + MapleFamilyEntry newEntry = new MapleFamilyEntry(newFamily, chr.getId(), chr.getName(), chr.getLevel(), chr.getJob()); + newEntry.setCharacter(chr); + newEntry.setSenior(inviterEntry, true); + // save new family + insertNewFamilyRecord(inviter.getId(), newFamily.getID(), 0, true); + insertNewFamilyRecord(chr.getId(), newFamily.getID(), inviter.getId(), false); // char was already saved by setSenior() above + newFamily.setMessage("", true); + } else { //new family for inviter, absorb invitee family + insertNewFamilyRecord(inviter.getId(), newFamily.getID(), 0 , true); + newFamily.setMessage("", true); + chr.getFamilyEntry().join(inviterEntry); + } + } + c.getPlayer().getFamily().broadcast(MaplePacketCreator.sendFamilyJoinResponse(true, c.getPlayer().getName()), c.getPlayer().getId()); + c.announce(MaplePacketCreator.getSeniorMessage(inviter.getName())); + c.announce(MaplePacketCreator.getFamilyInfo(chr.getFamilyEntry())); + chr.getFamilyEntry().updateSeniorFamilyInfo(true); + } else { + inviter.announce(MaplePacketCreator.sendFamilyJoinResponse(false, c.getPlayer().getName())); + } } c.announce(MaplePacketCreator.sendFamilyMessage(0, 0)); } + + private static void insertNewFamilyRecord(int characterID, int familyID, int seniorID, boolean updateChar) { + try(Connection con = DatabaseConnection.getConnection()) { + try(PreparedStatement ps = con.prepareStatement("INSERT INTO family_character (cid, familyid, seniorid) VALUES (?, ?, ?)")) { + ps.setInt(1, characterID); + ps.setInt(2, familyID); + ps.setInt(3, seniorID); + ps.executeUpdate(); + } catch(SQLException e) { + FilePrinter.printError(FilePrinter.FAMILY_ERROR, e, "Could not save new family record for char id " + characterID + "."); + e.printStackTrace(); + } + if(updateChar) { + try(PreparedStatement ps = con.prepareStatement("UPDATE characters SET familyid = ? WHERE id = ?")) { + ps.setInt(1, familyID); + ps.setInt(2, characterID); + ps.executeUpdate(); + } catch(SQLException e) { + FilePrinter.printError(FilePrinter.FAMILY_ERROR, e, "Could not update 'characters' 'familyid' record for char id " + characterID + "."); + e.printStackTrace(); + } + } + } catch(SQLException e) { + FilePrinter.printError(FilePrinter.FAMILY_ERROR, e, "Could not get connection to DB."); + e.printStackTrace(); + } + } } diff --git a/src/net/server/channel/handlers/DenyPartyRequestHandler.java b/src/net/server/channel/handlers/DenyPartyRequestHandler.java index b6f12b4b71..2da154845b 100644 --- a/src/net/server/channel/handlers/DenyPartyRequestHandler.java +++ b/src/net/server/channel/handlers/DenyPartyRequestHandler.java @@ -41,7 +41,7 @@ public final class DenyPartyRequestHandler extends AbstractMaplePacketHandler { if (cfrom != null) { MapleCharacter chr = c.getPlayer(); - if (MapleInviteCoordinator.answerInvite(InviteType.PARTY, chr.getId(), cfrom.getPartyId(), false).getLeft() == InviteResult.DENIED) { + if (MapleInviteCoordinator.answerInvite(InviteType.PARTY, chr.getId(), cfrom.getPartyId(), false).result == InviteResult.DENIED) { chr.updatePartySearchAvailability(chr.getParty() == null); cfrom.getClient().announce(MaplePacketCreator.partyStatusMessage(23, chr.getName())); } diff --git a/src/net/server/channel/handlers/FamilyAddHandler.java b/src/net/server/channel/handlers/FamilyAddHandler.java index cbbf17d308..1e22dc46a2 100644 --- a/src/net/server/channel/handlers/FamilyAddHandler.java +++ b/src/net/server/channel/handlers/FamilyAddHandler.java @@ -25,29 +25,44 @@ import constants.ServerConstants; import client.MapleCharacter; import client.MapleClient; import net.AbstractMaplePacketHandler; +import net.server.coordinator.MapleInviteCoordinator; +import net.server.coordinator.MapleInviteCoordinator.InviteType; import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; /** * * @author Jay Estrella + * @author Ubaware */ public final class FamilyAddHandler extends AbstractMaplePacketHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { - if (!ServerConstants.USE_FAMILY_SYSTEM){ - return; - } - System.out.println(slea.toString()); + if(!ServerConstants.USE_FAMILY_SYSTEM) { + return; + } String toAdd = slea.readMapleAsciiString(); MapleCharacter addChr = c.getChannelServer().getPlayerStorage().getCharacterByName(toAdd); - if (addChr != null) { - addChr.getClient().announce(MaplePacketCreator.sendFamilyInvite(c.getPlayer().getId(), toAdd)); - c.getPlayer().dropMessage("The invite has been sent."); + MapleCharacter chr = c.getPlayer(); + if(addChr == null) { + c.announce(MaplePacketCreator.sendFamilyMessage(65, 0)); + } else if(addChr.getMap() != chr.getMap() || (addChr.isHidden()) && chr.gmLevel() < addChr.gmLevel()) { + c.announce(MaplePacketCreator.sendFamilyMessage(69, 0)); + } else if(addChr.getLevel() <= 10) { + c.announce(MaplePacketCreator.sendFamilyMessage(77, 0)); + } else if(Math.abs(addChr.getLevel() - chr.getLevel()) > 20) { + c.announce(MaplePacketCreator.sendFamilyMessage(72, 0)); + } else if(addChr.getFamily() != null && addChr.getFamily() == chr.getFamily()) { //same family + c.announce(MaplePacketCreator.enableActions()); + } else if(MapleInviteCoordinator.hasInvite(InviteType.FAMILY, addChr.getId())) { + c.announce(MaplePacketCreator.sendFamilyMessage(73, 0)); + } else if(chr.getFamily() != null && addChr.getFamily() != null && addChr.getFamily().getTotalGenerations() + chr.getFamily().getTotalGenerations() > ServerConstants.FAMILY_MAX_GENERATIONS) { + c.announce(MaplePacketCreator.sendFamilyMessage(76, 0)); } else { - c.getPlayer().dropMessage("The player cannot be found!"); + MapleInviteCoordinator.createInvite(InviteType.FAMILY, chr, addChr, addChr.getId()); + addChr.getClient().announce(MaplePacketCreator.sendFamilyInvite(chr.getId(), chr.getName())); + chr.dropMessage("The invite has been sent."); + c.announce(MaplePacketCreator.enableActions()); } - c.announce(MaplePacketCreator.enableActions()); } } - diff --git a/src/net/server/channel/handlers/FamilyPreceptsHandler.java b/src/net/server/channel/handlers/FamilyPreceptsHandler.java new file mode 100644 index 0000000000..7da34c29f2 --- /dev/null +++ b/src/net/server/channel/handlers/FamilyPreceptsHandler.java @@ -0,0 +1,23 @@ +package net.server.channel.handlers; + +import client.MapleClient; +import client.MapleFamily; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public class FamilyPreceptsHandler extends AbstractMaplePacketHandler { + + @Override + public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + MapleFamily family = c.getPlayer().getFamily(); + if(family == null) return; + if(family.getLeader().getChr() != c.getPlayer()) return; //only the leader can set the precepts + String newPrecepts = slea.readMapleAsciiString(); + if(newPrecepts.length() > 200) return; + family.setMessage(newPrecepts, true); + //family.broadcastFamilyInfoUpdate(); //probably don't need to broadcast for this? + c.announce(MaplePacketCreator.getFamilyInfo(c.getPlayer().getFamilyEntry())); + } + +} diff --git a/src/net/server/channel/handlers/FamilySeparateHandler.java b/src/net/server/channel/handlers/FamilySeparateHandler.java new file mode 100644 index 0000000000..191ce23a38 --- /dev/null +++ b/src/net/server/channel/handlers/FamilySeparateHandler.java @@ -0,0 +1,78 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2018 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import client.MapleFamily; +import client.MapleFamilyEntry; +import constants.ServerConstants; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public class FamilySeparateHandler extends AbstractMaplePacketHandler { + + @Override + public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + if(!ServerConstants.USE_FAMILY_SYSTEM) return; + MapleFamily oldFamily = c.getPlayer().getFamily(); + if(oldFamily == null) return; + MapleFamilyEntry forkOn = null; + boolean isSenior; + if(slea.available() > 0) { //packet 0x95 doesn't send id, since there is only one senior + forkOn = c.getPlayer().getFamily().getEntryByID(slea.readInt()); + if(!c.getPlayer().getFamilyEntry().isJunior(forkOn)) return; //packet editing? + isSenior = true; + } else { + forkOn = c.getPlayer().getFamilyEntry(); + isSenior = false; + } + if(forkOn == null) return; + + MapleFamilyEntry senior = forkOn.getSenior(); + if(senior == null) return; + int levelDiff = Math.abs(c.getPlayer().getLevel() - senior.getLevel()); + int cost = 2500 * levelDiff; + cost += levelDiff * levelDiff; + if(c.getPlayer().getMeso() < cost) { + c.announce(MaplePacketCreator.sendFamilyMessage(isSenior ? 81 : 80, cost)); + return; + } + c.getPlayer().gainMeso(-cost); + int repCost = separateRepCost(forkOn); + senior.gainReputation(-repCost, false); + if(senior.getSenior() != null) senior.getSenior().gainReputation(-(repCost/2), false); + forkOn.announceToSenior(MaplePacketCreator.serverNotice(5, forkOn.getName() + " has left the family."), true); + forkOn.fork(); + c.announce(MaplePacketCreator.getFamilyInfo(forkOn)); //pedigree info will be requested by the client if the window is open + forkOn.updateSeniorFamilyInfo(true); + c.announce(MaplePacketCreator.sendFamilyMessage(1, 0)); + } + + + private static int separateRepCost(MapleFamilyEntry junior) { + int level = junior.getLevel(); + int ret = level / 20; + ret += 10; + ret *= level; + ret *= 2; + return ret; + } +} diff --git a/src/net/server/channel/handlers/FamilySummonResponseHandler.java b/src/net/server/channel/handlers/FamilySummonResponseHandler.java new file mode 100644 index 0000000000..96ccee2c44 --- /dev/null +++ b/src/net/server/channel/handlers/FamilySummonResponseHandler.java @@ -0,0 +1,40 @@ +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import client.MapleFamilyEntitlement; +import client.MapleFamilyEntry; +import constants.ServerConstants; +import net.AbstractMaplePacketHandler; +import net.server.coordinator.MapleInviteCoordinator; +import net.server.coordinator.MapleInviteCoordinator.InviteResult; +import net.server.coordinator.MapleInviteCoordinator.InviteType; +import net.server.coordinator.MapleInviteCoordinator.MapleInviteResult; +import server.maps.MapleMap; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public class FamilySummonResponseHandler extends AbstractMaplePacketHandler { + + @Override + public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + if(!ServerConstants.USE_FAMILY_SYSTEM) return; + slea.readMapleAsciiString(); //family name + boolean accept = slea.readByte() != 0; + MapleInviteResult inviteResult = MapleInviteCoordinator.answerInvite(InviteType.FAMILY_SUMMON, c.getPlayer().getId(), c.getPlayer(), accept); + if(inviteResult.result == InviteResult.NOT_FOUND) return; + MapleCharacter inviter = inviteResult.from; + MapleFamilyEntry inviterEntry = inviter.getFamilyEntry(); + if(inviterEntry == null) return; + MapleMap map = (MapleMap) inviteResult.params[0]; + if(accept && inviter.getMap() == map) { //cancel if inviter has changed maps + c.getPlayer().changeMap(map, map.getPortal(0)); + } else { + inviterEntry.refundEntitlement(MapleFamilyEntitlement.SUMMON_FAMILY); + inviterEntry.gainReputation(MapleFamilyEntitlement.SUMMON_FAMILY.getRepCost(), false); //refund rep cost if declined + inviter.announce(MaplePacketCreator.getFamilyInfo(inviterEntry)); + inviter.dropMessage(5, c.getPlayer().getName() + " has denied the summon request."); + } + } + +} diff --git a/src/net/server/channel/handlers/FamilyUseHandler.java b/src/net/server/channel/handlers/FamilyUseHandler.java index 38af1f49da..dd33793e6d 100644 --- a/src/net/server/channel/handlers/FamilyUseHandler.java +++ b/src/net/server/channel/handlers/FamilyUseHandler.java @@ -21,82 +21,121 @@ */ package net.server.channel.handlers; -import constants.ServerConstants; import client.MapleCharacter; import client.MapleClient; +import client.MapleFamilyEntitlement; +import client.MapleFamilyEntry; +import constants.ServerConstants; import net.AbstractMaplePacketHandler; -import net.opcodes.SendOpcode; +import net.server.coordinator.MapleInviteCoordinator; +import net.server.coordinator.MapleInviteCoordinator.InviteType; +import server.maps.FieldLimit; +import server.maps.MapleMap; +import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; -import tools.data.output.MaplePacketLittleEndianWriter; /** * * @author Moogra + * @author Ubaware */ public final class FamilyUseHandler extends AbstractMaplePacketHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { - if (!ServerConstants.USE_FAMILY_SYSTEM){ - return; - } - int[] repCost = {3, 5, 7, 8, 10, 12, 15, 20, 25, 40, 50}; - final int type = slea.readInt(); + if(!ServerConstants.USE_FAMILY_SYSTEM) { + return; + } + MapleFamilyEntitlement type = MapleFamilyEntitlement.values()[slea.readInt()]; + int cost = type.getRepCost(); + MapleFamilyEntry entry = c.getPlayer().getFamilyEntry(); + if(entry.getReputation() < cost || entry.isEntitlementUsed(type)) { + return; // shouldn't even be able to request it + } + c.announce(MaplePacketCreator.getFamilyInfo(entry)); MapleCharacter victim; - if (type == 0 || type == 1) { + if(type == MapleFamilyEntitlement.FAMILY_REUINION || type == MapleFamilyEntitlement.SUMMON_FAMILY) { victim = c.getChannelServer().getPlayerStorage().getCharacterByName(slea.readMapleAsciiString()); - if (victim != null) { - if (type == 0) { - c.getPlayer().changeMap(victim.getMap(), victim.getMap().getPortal(0)); + if(victim != null && victim != c.getPlayer()) { + if(victim.getFamily() == c.getPlayer().getFamily()) { + MapleMap targetMap = victim.getMap(); + MapleMap ownMap = c.getPlayer().getMap(); + if(targetMap != null) { + if(type == MapleFamilyEntitlement.FAMILY_REUINION) { + if(!FieldLimit.CANNOTMIGRATE.check(ownMap.getFieldLimit()) && !FieldLimit.CANNOTVIPROCK.check(targetMap.getFieldLimit()) + && (targetMap.getForcedReturnId() == 999999999 || targetMap.getId() < 100000000) && targetMap.getEventInstance() == null) { + + c.getPlayer().changeMap(victim.getMap(), victim.getMap().getPortal(0)); + useEntitlement(entry, type); + } else { + c.announce(MaplePacketCreator.sendFamilyMessage(75, 0)); // wrong message, but close enough. (client should check this first anyway) + return; + } + } else { + if(!FieldLimit.CANNOTMIGRATE.check(targetMap.getFieldLimit()) && !FieldLimit.CANNOTVIPROCK.check(ownMap.getFieldLimit()) + && (ownMap.getForcedReturnId() == 999999999 || ownMap.getId() < 100000000) && ownMap.getEventInstance() == null) { + + if(MapleInviteCoordinator.hasInvite(InviteType.FAMILY_SUMMON, victim.getId())) { + c.announce(MaplePacketCreator.sendFamilyMessage(74, 0)); + return; + } + MapleInviteCoordinator.createInvite(InviteType.FAMILY_SUMMON, c.getPlayer(), victim, victim.getId(), c.getPlayer().getMap()); + victim.announce(MaplePacketCreator.sendFamilySummonRequest(c.getPlayer().getFamily().getName(), c.getPlayer().getName())); + useEntitlement(entry, type); + } else { + c.announce(MaplePacketCreator.sendFamilyMessage(75, 0)); + return; + } + } + } } else { - victim.changeMap(c.getPlayer().getMap(), c.getPlayer().getMap().getPortal(0)); + c.announce(MaplePacketCreator.sendFamilyMessage(67, 0)); } - } else { - return; } + } else if(type == MapleFamilyEntitlement.FAMILY_BONDING) { + //not implemented } else { - int erate = type == 3 ? 150 : (type == 4 || type == 6 || type == 8 || type == 10 ? 200 : 100); - int drate = type == 2 ? 150 : (type == 4 || type == 5 || type == 7 || type == 9 ? 200 : 100); - if (type > 8) { - } else { - c.announce(useRep(drate == 100 ? 2 : (erate == 100 ? 3 : 4), type, erate, drate, ((type > 5 || type == 4) ? 2 : 1) * 15 * 60 * 1000)); - } + boolean party = false; + boolean isExp = false; + float rate = 1.5f; + int duration = 15; + do { + switch(type) { + case PARTY_EXP_2_30MIN: + party = true; + isExp = true; + type = MapleFamilyEntitlement.SELF_EXP_2_30MIN; + continue; + case PARTY_DROP_2_30MIN: + party = true; + type = MapleFamilyEntitlement.SELF_DROP_2_30MIN; + continue; + case SELF_DROP_2_30MIN: + duration = 30; + case SELF_DROP_2: + rate = 2.0f; + case SELF_DROP_1_5: + break; + case SELF_EXP_2_30MIN: + duration = 30; + case SELF_EXP_2: + rate = 2.0f; + case SELF_EXP_1_5: + isExp = true; + default: + break; + } + break; + } while(true); + //not implemented } - c.getPlayer().getFamily().getMember(c.getPlayer().getId()).gainReputation(repCost[type]); } - - /** - * [65 00][02][08 00 00 00][C8 00 00 00][00 00 00 00][00][40 77 1B 00] - */ - private static byte[] useRep(int mode, int type, int erate, int drate, int time) { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(0x60);//noty - mplew.write(mode); - mplew.writeInt(type); - if (mode < 4) { - mplew.writeInt(erate); - mplew.writeInt(drate); + + private boolean useEntitlement(MapleFamilyEntry entry, MapleFamilyEntitlement entitlement) { + if(entry.useEntitlement(entitlement)) { + entry.gainReputation(-entitlement.getRepCost(), false); + entry.getChr().announce(MaplePacketCreator.getFamilyInfo(entry)); + return true; } - mplew.write(0); - mplew.writeInt(time); - return mplew.getPacket(); - } - - //20 00 - //00 00 00 00 - //00 00 00 00 00 00 00 00 - //80 01 - //00 00 28 00 - //8C 93 3E 00 - //40 0D - //03 00 14 00 - //8C 93 3E 00 - //40 0D 03 00 00 00 00 00 02 - private static byte[] giveBuff() { - MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.GIVE_BUFF.getValue()); - mplew.writeInt(0); - mplew.writeLong(0); - - return null; + return false; } } diff --git a/src/net/server/channel/handlers/MessengerHandler.java b/src/net/server/channel/handlers/MessengerHandler.java index 3b2539afbf..5b835df3c8 100644 --- a/src/net/server/channel/handlers/MessengerHandler.java +++ b/src/net/server/channel/handlers/MessengerHandler.java @@ -27,11 +27,11 @@ import net.AbstractMaplePacketHandler; import net.server.coordinator.MapleInviteCoordinator; import net.server.coordinator.MapleInviteCoordinator.InviteResult; import net.server.coordinator.MapleInviteCoordinator.InviteType; +import net.server.coordinator.MapleInviteCoordinator.MapleInviteResult; import net.server.world.MapleMessenger; import net.server.world.MapleMessengerCharacter; import net.server.world.World; import tools.MaplePacketCreator; -import tools.Pair; import tools.data.input.SeekableLittleEndianAccessor; public final class MessengerHandler extends AbstractMaplePacketHandler { @@ -58,8 +58,8 @@ public final class MessengerHandler extends AbstractMaplePacketHandler { } else { messenger = world.getMessenger(messengerid); if (messenger != null) { - Pair inviteRes = MapleInviteCoordinator.answerInvite(InviteType.MESSENGER, player.getId(), messengerid, true); - InviteResult res = inviteRes.getLeft(); + MapleInviteResult inviteRes = MapleInviteCoordinator.answerInvite(InviteType.MESSENGER, player.getId(), messengerid, true); + InviteResult res = inviteRes.result; if (res == InviteResult.ACCEPTED) { int position = messenger.getLowestPosition(); MapleMessengerCharacter messengerplayer = new MapleMessengerCharacter(player, position); diff --git a/src/net/server/channel/handlers/OpenFamilyHandler.java b/src/net/server/channel/handlers/OpenFamilyHandler.java new file mode 100644 index 0000000000..3cd053c8b2 --- /dev/null +++ b/src/net/server/channel/handlers/OpenFamilyHandler.java @@ -0,0 +1,41 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2018 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import constants.ServerConstants; +import client.MapleCharacter; +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author Ubaware + */ +public final class OpenFamilyHandler extends AbstractMaplePacketHandler { + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + if(!ServerConstants.USE_FAMILY_SYSTEM) return; + MapleCharacter chr = c.getPlayer(); + c.announce(MaplePacketCreator.getFamilyInfo(chr.getFamilyEntry())); + } +} + diff --git a/src/net/server/channel/handlers/OpenFamilyPedigreeHandler.java b/src/net/server/channel/handlers/OpenFamilyPedigreeHandler.java new file mode 100644 index 0000000000..e382112f40 --- /dev/null +++ b/src/net/server/channel/handlers/OpenFamilyPedigreeHandler.java @@ -0,0 +1,43 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2018 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import constants.ServerConstants; +import client.MapleCharacter; +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author Ubaware + */ +public final class OpenFamilyPedigreeHandler extends AbstractMaplePacketHandler { + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + if(!ServerConstants.USE_FAMILY_SYSTEM) return; + MapleCharacter target = c.getChannelServer().getPlayerStorage().getCharacterByName(slea.readMapleAsciiString()); + if(target != null && target.getFamily() != null) { + c.announce(MaplePacketCreator.showPedigree(target.getFamilyEntry())); + } + } +} + diff --git a/src/net/server/channel/handlers/PartyOperationHandler.java b/src/net/server/channel/handlers/PartyOperationHandler.java index 605ee0f173..17a8cd1da6 100644 --- a/src/net/server/channel/handlers/PartyOperationHandler.java +++ b/src/net/server/channel/handlers/PartyOperationHandler.java @@ -34,7 +34,7 @@ import constants.ServerConstants; import net.server.coordinator.MapleInviteCoordinator; import net.server.coordinator.MapleInviteCoordinator.InviteResult; import net.server.coordinator.MapleInviteCoordinator.InviteType; -import tools.Pair; +import net.server.coordinator.MapleInviteCoordinator.MapleInviteResult; import java.util.List; @@ -64,8 +64,8 @@ public final class PartyOperationHandler extends AbstractMaplePacketHandler { case 3: { // join int partyid = slea.readInt(); - Pair inviteRes = MapleInviteCoordinator.answerInvite(InviteType.PARTY, player.getId(), partyid, true); - InviteResult res = inviteRes.getLeft(); + MapleInviteResult inviteRes = MapleInviteCoordinator.answerInvite(InviteType.PARTY, player.getId(), partyid, true); + InviteResult res = inviteRes.result; if (res == InviteResult.ACCEPTED) { MapleParty.joinParty(player, partyid, false); } else { diff --git a/src/net/server/channel/handlers/PlayerLoggedinHandler.java b/src/net/server/channel/handlers/PlayerLoggedinHandler.java index 1698aa3732..e41ecce646 100644 --- a/src/net/server/channel/handlers/PlayerLoggedinHandler.java +++ b/src/net/server/channel/handlers/PlayerLoggedinHandler.java @@ -40,6 +40,7 @@ import net.server.world.MaplePartyCharacter; import net.server.world.PartyOperation; import net.server.world.World; import tools.DatabaseConnection; +import tools.FilePrinter; import tools.MaplePacketCreator; import tools.Pair; import tools.data.input.SeekableLittleEndianAccessor; @@ -50,6 +51,7 @@ import client.MapleCharacter; import client.MapleClient; import client.MapleDisease; import client.MapleFamily; +import client.MapleFamilyEntry; import client.MapleKeyBinding; import client.SkillFactory; import client.inventory.Equip; @@ -260,12 +262,22 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { c.announce(MaplePacketCreator.loadFamily(player)); if (player.getFamilyId() > 0) { MapleFamily f = wserv.getFamily(player.getFamilyId()); - if (f == null) { - f = new MapleFamily(player.getId()); - wserv.addFamily(player.getFamilyId(), f); + if(f != null) { + MapleFamilyEntry familyEntry = f.getEntryByID(player.getId()); + if(familyEntry != null) { + familyEntry.setCharacter(player); + player.setFamilyEntry(familyEntry); + } else { + FilePrinter.printError(FilePrinter.FAMILY_ERROR, "Player " + player.getName() + "'s family doesn't have an entry for them. (" + f.getID() + ")"); + } + c.announce(MaplePacketCreator.getFamilyInfo(familyEntry)); + familyEntry.announceToSenior(MaplePacketCreator.sendFamilyLoginNotice(player.getName(), true), true); + } else { + FilePrinter.printError(FilePrinter.FAMILY_ERROR, "Player " + player.getName() + " has an invalid family ID. (" + player.getFamilyId() + ")"); + c.announce(MaplePacketCreator.getFamilyInfo(null)); } - player.setFamily(f); - c.announce(MaplePacketCreator.getFamilyInfo(f.getMember(player.getId()))); + } else { + c.announce(MaplePacketCreator.getFamilyInfo(null)); } if (player.getGuildId() > 0) { MapleGuild playerGuild = server.getGuild(player.getGuildId(), player.getWorld(), player); @@ -410,6 +422,10 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { if (ServerConstants.USE_NPCS_SCRIPTABLE) { c.announce(MaplePacketCreator.setNPCScriptable(ScriptableNPCConstants.SCRIPTABLE_NPCS)); } + + if(newcomer) player.setLoginTime(System.currentTimeMillis()); + } catch(Exception e) { + e.printStackTrace(); } finally { c.releaseClient(); } diff --git a/src/net/server/channel/handlers/UseCashItemHandler.java b/src/net/server/channel/handlers/UseCashItemHandler.java index 978ce9c288..c821c80020 100644 --- a/src/net/server/channel/handlers/UseCashItemHandler.java +++ b/src/net/server/channel/handlers/UseCashItemHandler.java @@ -427,17 +427,9 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler { slea.readByte(); slea.readInt(); if(itemId == 5400000) { //name change - if(player.cancelPendingNameChange()) { - player.dropMessage(1, "Successfully canceled pending name change."); - } else { - player.dropMessage(1, "You do not have a pending name change."); - } + c.announce(MaplePacketCreator.showNameChangeCancel(player.cancelPendingNameChange())); } else if(itemId == 5401000) { //world transfer - if(player.cancelPendingWorldTranfer()) { - player.dropMessage(1, "Successfully canceled pending world transfer."); - } else { - player.dropMessage(1, "You do not have a pending world transfer."); - } + c.announce(MaplePacketCreator.showWorldTransferCancel(player.cancelPendingWorldTranfer())); } remove(c, position, itemId); c.announce(MaplePacketCreator.enableActions()); diff --git a/src/net/server/coordinator/MapleInviteCoordinator.java b/src/net/server/coordinator/MapleInviteCoordinator.java index ac5bf18946..e2436795f3 100644 --- a/src/net/server/coordinator/MapleInviteCoordinator.java +++ b/src/net/server/coordinator/MapleInviteCoordinator.java @@ -42,7 +42,8 @@ public class MapleInviteCoordinator { public enum InviteType { //BUDDY, (not needed) - //FAMILY, (not implemented) + FAMILY, + FAMILY_SUMMON, MESSENGER, TRADE, PARTY, @@ -52,11 +53,13 @@ public class MapleInviteCoordinator { final ConcurrentHashMap invites; final ConcurrentHashMap inviteFrom; final ConcurrentHashMap inviteTimeouts; + final ConcurrentHashMap inviteParams; private InviteType() { invites = new ConcurrentHashMap<>(); inviteTimeouts = new ConcurrentHashMap<>(); inviteFrom = new ConcurrentHashMap<>(); + inviteParams = new ConcurrentHashMap<>(); } private Map getRequestsTable() { @@ -67,15 +70,15 @@ public class MapleInviteCoordinator { return inviteTimeouts; } - private MapleCharacter removeRequest(Integer target) { + private Pair removeRequest(Integer target) { invites.remove(target); MapleCharacter from = inviteFrom.remove(target); inviteTimeouts.remove(target); - return from; + return new Pair<>(from, inviteParams.remove(target)); } - private boolean addRequest(MapleCharacter from, Object referenceFrom, int targetCid) { + private boolean addRequest(MapleCharacter from, Object referenceFrom, int targetCid, Object[] params) { Object v = invites.putIfAbsent(targetCid, referenceFrom); if (v != null) { // there was already an entry return false; @@ -83,7 +86,7 @@ public class MapleInviteCoordinator { inviteFrom.put(targetCid, from); inviteTimeouts.put(targetCid, 0); - + inviteParams.put(targetCid, params); return true; } @@ -93,29 +96,31 @@ public class MapleInviteCoordinator { } // note: referenceFrom is a specific value that represents the "common association" created between the sender/recver parties - public static boolean createInvite(InviteType type, MapleCharacter from, Object referenceFrom, int targetCid) { - return type.addRequest(from, referenceFrom, targetCid); + public static boolean createInvite(InviteType type, MapleCharacter from, Object referenceFrom, int targetCid, Object... params) { + return type.addRequest(from, referenceFrom, targetCid, params); } public static boolean hasInvite(InviteType type, int targetCid) { return type.hasRequest(targetCid); } - public static Pair answerInvite(InviteType type, int targetCid, Object referenceFrom, boolean answer) { + public static MapleInviteResult answerInvite(InviteType type, int targetCid, Object referenceFrom, boolean answer) { Map table = type.getRequestsTable(); MapleCharacter from = null; InviteResult result = InviteResult.NOT_FOUND; + Pair inviteInfo = null; Object reference = table.get(targetCid); if (referenceFrom.equals(reference)) { - from = type.removeRequest(targetCid); + inviteInfo = type.removeRequest(targetCid); + from = inviteInfo.getLeft(); if (from != null && !from.isLoggedinWorld()) from = null; result = answer ? InviteResult.ACCEPTED : InviteResult.DENIED; } - return new Pair<>(result, from); + return new MapleInviteResult(result, from, inviteInfo != null ? inviteInfo.getRight() : new Object[0]); } public static void removeInvite(InviteType type, int targetCid) { @@ -146,4 +151,17 @@ public class MapleInviteCoordinator { } } } + + public static class MapleInviteResult { + + public final InviteResult result; + public final MapleCharacter from; + public final Object[] params; + + private MapleInviteResult(InviteResult result, MapleCharacter from, Object[] params) { + this.result = result; + this.from = from; + this.params = params; + } + } } diff --git a/src/net/server/guild/MapleAlliance.java b/src/net/server/guild/MapleAlliance.java index 947b6c62e0..dffd7a3c27 100644 --- a/src/net/server/guild/MapleAlliance.java +++ b/src/net/server/guild/MapleAlliance.java @@ -32,13 +32,12 @@ import client.MapleCharacter; import client.MapleClient; import net.server.Server; import net.server.coordinator.MapleInviteCoordinator; -import net.server.coordinator.MapleInviteCoordinator.InviteResult; import net.server.coordinator.MapleInviteCoordinator.InviteType; +import net.server.coordinator.MapleInviteCoordinator.MapleInviteResult; import net.server.world.MapleParty; import net.server.world.MaplePartyCharacter; import tools.DatabaseConnection; import tools.MaplePacketCreator; -import tools.Pair; /** * @@ -494,11 +493,11 @@ public class MapleAlliance { } public static boolean answerInvitation(int targetId, String targetGuildName, int allianceId, boolean answer) { - Pair res = MapleInviteCoordinator.answerInvite(InviteType.ALLIANCE, targetId, allianceId, answer); + MapleInviteResult res = MapleInviteCoordinator.answerInvite(InviteType.ALLIANCE, targetId, allianceId, answer); String msg; - MapleCharacter sender = res.getRight(); - switch (res.getLeft()) { + MapleCharacter sender = res.from; + switch (res.result) { case ACCEPTED: return true; diff --git a/src/net/server/guild/MapleGuild.java b/src/net/server/guild/MapleGuild.java index f544f6e55c..dca74c4825 100644 --- a/src/net/server/guild/MapleGuild.java +++ b/src/net/server/guild/MapleGuild.java @@ -45,11 +45,10 @@ import net.server.Server; import net.server.channel.Channel; import tools.DatabaseConnection; import tools.MaplePacketCreator; -import tools.Pair; import net.server.audit.locks.MonitoredLockType; import net.server.coordinator.MapleInviteCoordinator; import net.server.coordinator.MapleInviteCoordinator.InviteType; -import net.server.coordinator.MapleInviteCoordinator.InviteResult; +import net.server.coordinator.MapleInviteCoordinator.MapleInviteResult; import net.server.coordinator.MapleMatchCheckerCoordinator; public class MapleGuild { @@ -727,11 +726,11 @@ public class MapleGuild { } public static boolean answerInvitation(int targetId, String targetName, int guildId, boolean answer) { - Pair res = MapleInviteCoordinator.answerInvite(InviteType.GUILD, targetId, guildId, answer); + MapleInviteResult res = MapleInviteCoordinator.answerInvite(InviteType.GUILD, targetId, guildId, answer); MapleGuildResponse mgr; - MapleCharacter sender = res.getRight(); - switch (res.getLeft()) { + MapleCharacter sender = res.from; + switch (res.result) { case ACCEPTED: return true; diff --git a/src/net/server/worker/FamilyDailyResetWorker.java b/src/net/server/worker/FamilyDailyResetWorker.java new file mode 100644 index 0000000000..28f32d8f91 --- /dev/null +++ b/src/net/server/worker/FamilyDailyResetWorker.java @@ -0,0 +1,56 @@ +package net.server.worker; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.util.Calendar; + +import client.MapleFamily; +import net.server.world.World; +import tools.DatabaseConnection; +import tools.FilePrinter; + +public class FamilyDailyResetWorker implements Runnable { + + private final World world; + + public FamilyDailyResetWorker(World world) { + this.world = world; + } + + @Override + public void run() { + resetEntitlementUsage(world); + for(MapleFamily family : world.getFamilies()) { + family.resetDailyReps(); + } + } + + public static void resetEntitlementUsage(World world) { + Calendar resetTime = Calendar.getInstance(); + resetTime.add(Calendar.MINUTE, 1); // to make sure that we're in the "next day", since this is called at midnight + resetTime.set(Calendar.HOUR, 0); + resetTime.set(Calendar.MINUTE, 0); + resetTime.set(Calendar.SECOND, 0); + resetTime.set(Calendar.MILLISECOND, 0); + try(Connection con = DatabaseConnection.getConnection()) { + try(PreparedStatement ps = con.prepareStatement("UPDATE family_character SET todaysrep = 0, reptosenior = 0 WHERE lastresettime <= ?")) { + ps.setLong(1, resetTime.getTimeInMillis()); + ps.executeUpdate(); + } catch(SQLException e) { + FilePrinter.printError(FilePrinter.FAMILY_ERROR, e, "Could not reset daily rep for families. On " + Calendar.getInstance().getTime()); + e.printStackTrace(); + } + try(PreparedStatement ps = con.prepareStatement("DELETE FROM family_entitlement WHERE timestamp <= ?")) { + ps.setLong(1, resetTime.getTimeInMillis()); + ps.executeUpdate(); + } catch(SQLException e) { + FilePrinter.printError(FilePrinter.FAMILY_ERROR, e, "Could not do daily reset for family entitlements. On " + Calendar.getInstance().getTime()); + e.printStackTrace(); + } + } catch(SQLException e) { + FilePrinter.printError(FilePrinter.FAMILY_ERROR, e, "Could not get connection to DB."); + e.printStackTrace(); + } + } +} diff --git a/src/net/server/world/World.java b/src/net/server/world/World.java index fa1df90ca4..05572d68cc 100644 --- a/src/net/server/world/World.java +++ b/src/net/server/world/World.java @@ -67,6 +67,7 @@ import server.maps.MaplePlayerShop; import server.maps.MaplePlayerShopItem; import server.maps.AbstractMapleMapObject; import net.server.worker.CharacterAutosaverWorker; +import net.server.worker.FamilyDailyResetWorker; import net.server.worker.FishingWorker; import net.server.worker.HiredMerchantWorker; import net.server.worker.MapOwnershipWorker; @@ -211,6 +212,11 @@ public class World { fishingSchedule = tman.register(new FishingWorker(this), 10 * 1000, 10 * 1000); partySearchSchedule = tman.register(new PartySearchWorker(this), 10 * 1000, 10 * 1000); + if(ServerConstants.USE_FAMILY_SYSTEM) { + long timeLeft = Server.getTimeLeftForNextDay(); + FamilyDailyResetWorker.resetEntitlementUsage(this); + tman.register(new FamilyDailyResetWorker(this), 24 * 60 * 60 * 1000, timeLeft); + } } public int getChannelsSize() { @@ -540,6 +546,12 @@ public class World { } } } + + public void removeFamily(int id) { + synchronized (families) { + families.remove(id); + } + } public MapleFamily getFamily(int id) { synchronized (families) { @@ -549,6 +561,12 @@ public class World { return null; } } + + public Collection getFamilies() { + synchronized(families) { + return Collections.unmodifiableCollection((Collection) families.values()); + } + } public MapleGuild getGuild(MapleGuildCharacter mgc) { if(mgc == null) return null; @@ -1109,7 +1127,7 @@ public class World { if (isConnected(sender)) { MapleCharacter senderChr = getPlayerStorage().getCharacterByName(sender); if (senderChr != null && senderChr.getMessenger() != null) { - if (MapleInviteCoordinator.answerInvite(InviteType.MESSENGER, player.getId(), senderChr.getMessenger().getId(), false).getLeft() == InviteResult.DENIED) { + if (MapleInviteCoordinator.answerInvite(InviteType.MESSENGER, player.getId(), senderChr.getMessenger().getId(), false).result == InviteResult.DENIED) { senderChr.getClient().announce(MaplePacketCreator.messengerNote(player.getName(), 5, 0)); } } diff --git a/src/server/MapleTrade.java b/src/server/MapleTrade.java index bba71f378e..b14faade94 100644 --- a/src/server/MapleTrade.java +++ b/src/server/MapleTrade.java @@ -39,6 +39,7 @@ import constants.ServerConstants; import net.server.coordinator.MapleInviteCoordinator; import net.server.coordinator.MapleInviteCoordinator.InviteResult; import net.server.coordinator.MapleInviteCoordinator.InviteType; +import net.server.coordinator.MapleInviteCoordinator.MapleInviteResult; import tools.Pair; /** @@ -476,9 +477,9 @@ public class MapleTrade { } public static void visitTrade(MapleCharacter c1, MapleCharacter c2) { - Pair inviteRes = MapleInviteCoordinator.answerInvite(InviteType.TRADE, c1.getId(), c2.getId(), true); + MapleInviteResult inviteRes = MapleInviteCoordinator.answerInvite(InviteType.TRADE, c1.getId(), c2.getId(), true); - InviteResult res = inviteRes.getLeft(); + InviteResult res = inviteRes.result; if (res == InviteResult.ACCEPTED) { if (c1.getTrade() != null && c1.getTrade().getPartner() == c2.getTrade() && c2.getTrade() != null && c2.getTrade().getPartner() == c1.getTrade()) { c2.getClient().announce(MaplePacketCreator.getTradePartnerAdd(c1)); @@ -499,7 +500,7 @@ public class MapleTrade { if (trade != null) { if (trade.getPartner() != null) { MapleCharacter other = trade.getPartner().getChr(); - if (MapleInviteCoordinator.answerInvite(InviteType.TRADE, c.getId(), other.getId(), false).getLeft() == InviteResult.DENIED) { + if (MapleInviteCoordinator.answerInvite(InviteType.TRADE, c.getId(), other.getId(), false).result == InviteResult.DENIED) { other.message(c.getName() + " has declined your trade request."); } diff --git a/src/server/life/MapleMonster.java b/src/server/life/MapleMonster.java index c65000697d..aef8cb8b50 100644 --- a/src/server/life/MapleMonster.java +++ b/src/server/life/MapleMonster.java @@ -24,6 +24,7 @@ package server.life; import client.MapleBuffStat; import client.MapleCharacter; import client.MapleClient; +import client.MapleFamilyEntry; import client.MapleJob; import client.Skill; import client.SkillFactory; @@ -522,6 +523,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { float bonusExp = partyBonusMod * playerExp; this.giveExpToCharacter(chr, playerExp, bonusExp, whiteExpGain, hasPartySharers); + giveFamilyRep(chr.getFamilyEntry()); } private void distributePartyExperience(Map partyParticipation, float expPerDmg, Set underleveled, Map personalRatio, double sdevRatio) { @@ -548,7 +550,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { int totalPartyLevel = 0; // thanks G h o s t, Alfred, Vcoc, BHB for poiting out a bug in detecting party members after membership transactions in a party took place - if (!ServerConstants.USE_ENFORCE_MOB_LEVEL_RANGE) { + if (ServerConstants.USE_ENFORCE_MOB_LEVEL_RANGE) { for (MapleCharacter member : partyParticipation.keySet().iterator().next().getPartyMembersOnSameMap()) { if (!leechInterval.inInterval(member.getLevel())) { underleveled.add(member); @@ -574,6 +576,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { for (MapleCharacter mc : expMembers) { distributePlayerExperience(mc, participationExp, partyBonusMod, totalPartyLevel, mc == participationMvp, isWhiteExpGain(mc, personalRatio, sdevRatio), hasPartySharers); + giveFamilyRep(mc.getFamilyEntry()); } } @@ -949,6 +952,14 @@ public class MapleMonster extends AbstractLoadedMapleLife { listener.monsterHealed(trueHeal); } } + + private void giveFamilyRep(MapleFamilyEntry entry) { + if(entry != null) { + int repGain = isBoss() ? ServerConstants.FAMILY_REP_PER_BOSS_KILL : ServerConstants.FAMILY_REP_PER_KILL; + if(getMaxHp() <= 1) repGain = 0; //don't count trash mobs + entry.giveReputationToSenior(repGain, true); + } + } public int getHighestDamagerId() { int curId = 0; diff --git a/src/tools/FilePrinter.java b/src/tools/FilePrinter.java index 0d787b146a..b24c80ec8a 100644 --- a/src/tools/FilePrinter.java +++ b/src/tools/FilePrinter.java @@ -61,6 +61,7 @@ public class FilePrinter { SAVING_CHARACTER = "players/SaveChar.txt", CHANGE_CHARACTER_NAME = "players/NameChange.txt", WORLD_TRANSFER = "players/WorldTransfer.txt", + FAMILY_ERROR = "players/FamilyErrors.txt", USED_COMMANDS = "commands/UsedCommands.txt", DEADLOCK_ERROR = "deadlocks/Deadlocks.txt", DEADLOCK_STACK = "deadlocks/Path.txt", diff --git a/src/tools/MaplePacketCreator.java b/src/tools/MaplePacketCreator.java index 6006443afa..8eebeaeea4 100644 --- a/src/tools/MaplePacketCreator.java +++ b/src/tools/MaplePacketCreator.java @@ -41,6 +41,7 @@ import client.MapleCharacter; import client.MapleCharacter.SkillEntry; import client.MapleClient; import client.MapleDisease; +import client.MapleFamilyEntitlement; import client.MapleFamilyEntry; import client.MapleKeyBinding; import client.MapleMount; @@ -1030,7 +1031,7 @@ public class MaplePacketCreator { for (Pair statupdate : mystats) { if (statupdate.getLeft().getValue() >= 1) { if (statupdate.getLeft().getValue() == 0x1) { - mplew.writeShort(statupdate.getRight().shortValue()); + mplew.write(statupdate.getRight().byteValue()); } else if (statupdate.getLeft().getValue() <= 0x4) { mplew.writeInt(statupdate.getRight()); } else if (statupdate.getLeft().getValue() < 0x20) { @@ -1043,6 +1044,8 @@ public class MaplePacketCreator { } } else if (statupdate.getLeft().getValue() < 0xFFFF) { mplew.writeShort(statupdate.getRight().shortValue()); + } else if (statupdate.getLeft().getValue() == 0x20000) { + mplew.writeShort(statupdate.getRight().shortValue()); } else { mplew.writeInt(statupdate.getRight().intValue()); } @@ -2045,7 +2048,8 @@ public class MaplePacketCreator { addRingLook(mplew, chr, false); // friendship addMarriageRingLook(target, mplew, chr); encodeNewYearCardInfo(mplew, chr); // new year seems to crash sometimes... - mplew.skip(2); + mplew.write(0); + mplew.write(0); mplew.write(chr.getTeam());//only needed in specific fields return mplew.getPacket(); } @@ -6150,6 +6154,24 @@ public class MaplePacketCreator { return mplew.getPacket(); } + public static byte[] showNameChangeCancel(boolean success) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CANCEL_NAME_CHANGE_RESULT.getValue()); + mplew.writeBool(success); + if(!success) mplew.write(0); + //mplew.writeMapleAsciiString("Custom message."); //only if ^ != 0 + return mplew.getPacket(); + } + + public static byte[] showWorldTransferCancel(boolean success) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CANCEL_TRANSFER_WORLD_RESULT.getValue()); + mplew.writeBool(success); + if(!success) mplew.write(0); + //mplew.writeMapleAsciiString("Custom message."); //only if ^ != 0 + return mplew.getPacket(); + } + public static byte[] showMTSCash(MapleCharacter p) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.MTS_OPERATION2.getValue()); @@ -6376,18 +6398,16 @@ public class MaplePacketCreator { } public static byte[] loadFamily(MapleCharacter player) { - String[] title = {"Family Reunion", "Summon Family", "My Drop Rate 1.5x (15 min)", "My EXP 1.5x (15 min)", "Family Bonding (30 min)", "My Drop Rate 2x (15 min)", "My EXP 2x (15 min)", "My Drop Rate 2x (30 min)", "My EXP 2x (30 min)", "My Party Drop Rate 2x (30 min)", "My Party EXP 2x (30 min)"}; - String[] description = {"[Target] Me\n[Effect] Teleport directly to the Family member of your choice.", "[Target] 1 Family member\n[Effect] Summon a Family member of choice to the map you're in.", "[Target] Me\n[Time] 15 min.\n[Effect] Monster drop rate will be increased #c1.5x#.\n* If the Drop Rate event is in progress, this will be nullified.", "[Target] Me\n[Time] 15 min.\n[Effect] EXP earned from hunting will be increased #c1.5x#.\n* If the EXP event is in progress, this will be nullified.", "[Target] At least 6 Family members online that are below me in the Pedigree\n[Time] 30 min.\n[Effect] Monster drop rate and EXP earned will be increased #c2x#. \n* If the EXP event is in progress, this will be nullified.", "[Target] Me\n[Time] 15 min.\n[Effect] Monster drop rate will be increased #c2x#.\n* If the Drop Rate event is in progress, this will be nullified.", "[Target] Me\n[Time] 15 min.\n[Effect] EXP earned from hunting will be increased #c2x#.\n* If the EXP event is in progress, this will be nullified.", "[Target] Me\n[Time] 30 min.\n[Effect] Monster drop rate will be increased #c2x#.\n* If the Drop Rate event is in progress, this will be nullified.", "[Target] Me\n[Time] 30 min.\n[Effect] EXP earned from hunting will be increased #c2x#. \n* If the EXP event is in progress, this will be nullified.", "[Target] My party\n[Time] 30 min.\n[Effect] Monster drop rate will be increased #c2x#.\n* If the Drop Rate event is in progress, this will be nullified.", "[Target] My party\n[Time] 30 min.\n[Effect] EXP earned from hunting will be increased #c2x#.\n* If the EXP event is in progress, this will be nullified."}; - int[] repCost = {3, 5, 7, 8, 10, 12, 15, 20, 25, 40, 50}; final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.FAMILY_PRIVILEGE_LIST.getValue()); - mplew.writeInt(11); - for (int i = 0; i < 11; i++) { - mplew.write(i > 4 ? (i % 2) + 1 : i); - mplew.writeInt(repCost[i] * 100); - mplew.writeInt(1); - mplew.writeMapleAsciiString(title[i]); - mplew.writeMapleAsciiString(description[i]); + mplew.writeInt(MapleFamilyEntitlement.values().length); + for (int i = 0; i < MapleFamilyEntitlement.values().length; i++) { + MapleFamilyEntitlement entitlement = MapleFamilyEntitlement.values()[i]; + mplew.write(i <= 1 ? 1 : 2); //type + mplew.writeInt(entitlement.getRepCost()); + mplew.writeInt(entitlement.getUsageLimit()); + mplew.writeMapleAsciiString(entitlement.getName()); + mplew.writeMapleAsciiString(entitlement.getDescription()); } return mplew.getPacket(); } @@ -6396,6 +6416,9 @@ public class MaplePacketCreator { * Family Result Message * * Possible values for type:
+ * 64: You cannot add this character as a junior. + * 65: The name could not be found or is not online. + * 66: You belong to the same family. * 67: You do not belong to the same family.
* 69: The character you wish to add as\r\na Junior must be in the same * map.
@@ -6433,27 +6456,121 @@ public class MaplePacketCreator { } public static byte[] getFamilyInfo(MapleFamilyEntry f) { + if(f == null) return getEmptyFamilyInfo(); final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.FAMILY_INFO_RESULT.getValue()); mplew.writeInt(f.getReputation()); // cur rep left mplew.writeInt(f.getTotalReputation()); // tot rep left mplew.writeInt(f.getTodaysRep()); // todays rep - mplew.writeShort(f.getJuniors()); // juniors added - mplew.writeShort(f.getTotalJuniors()); // juniors allowed + mplew.writeShort(f.getJuniorCount()); // juniors added + mplew.writeShort(2); // juniors allowed mplew.writeShort(0); //Unknown - mplew.writeInt(f.getId()); // id? - mplew.writeMapleAsciiString(f.getFamilyName()); + mplew.writeInt(f.getFamily().getLeader().getChrId()); // Leader ID (Allows setting message) + mplew.writeMapleAsciiString(f.getFamily().getName()); + mplew.writeMapleAsciiString(f.getFamily().getMessage()); //family message + mplew.writeInt(MapleFamilyEntitlement.values().length); //Entitlement info count + for(MapleFamilyEntitlement entitlement : MapleFamilyEntitlement.values()) { + mplew.writeInt(entitlement.ordinal()); //ID + mplew.writeInt(f.isEntitlementUsed(entitlement) ? 1 : 0); //Used count + } + return mplew.getPacket(); + } + + private static byte[] getEmptyFamilyInfo() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.FAMILY_INFO_RESULT.getValue()); + mplew.writeInt(0); // cur rep left + mplew.writeInt(0); // tot rep left + mplew.writeInt(0); // todays rep + mplew.writeShort(0); // juniors added + mplew.writeShort(2); // juniors allowed + mplew.writeShort(0); //Unknown + mplew.writeInt(0); // Leader ID (Allows setting message) + mplew.writeMapleAsciiString(""); + mplew.writeMapleAsciiString(""); //family message mplew.writeInt(0); - mplew.writeShort(0); return mplew.getPacket(); } - public static byte[] showPedigree(int chrid, Map members) { + public static byte[] showPedigree(MapleFamilyEntry entry) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.FAMILY_CHART_RESULT.getValue()); - //Hmmm xD + mplew.writeInt(entry.getChrId()); //ID of viewed player's pedigree, can't be leader? + List superJuniors = new ArrayList(4); + boolean hasOtherJunior = false; + int entryCount = 2; //2 guaranteed, leader and self + entryCount += Math.min(2, entry.getTotalSeniors()); + //needed since MaplePacketLittleEndianWriter doesn't have any seek functionality + if(entry.getSenior() != null) { + if(entry.getSenior().getJuniorCount() == 2) { + entryCount++; + hasOtherJunior = true; + } + } + for(MapleFamilyEntry junior : entry.getJuniors()) { + if(junior == null) continue; + entryCount++; + for(MapleFamilyEntry superJunior : junior.getJuniors()) { + if(superJunior == null) continue; + entryCount++; + superJuniors.add(superJunior); + } + } + //write entries + boolean missingEntries = entryCount == 2; //pedigree requires at least 3 entries to show leader, might only have 2 if leader's juniors leave + if(missingEntries) entryCount++; + mplew.writeInt(entryCount); //player count + addPedigreeEntry(mplew, entry.getFamily().getLeader()); + if(entry.getSenior() != null) { + if(entry.getSenior().getSenior() != null) addPedigreeEntry(mplew, entry.getSenior().getSenior()); + addPedigreeEntry(mplew, entry.getSenior()); + } + addPedigreeEntry(mplew, entry); + if(hasOtherJunior) { //must be sent after own entry + MapleFamilyEntry otherJunior = entry.getSenior().getOtherJunior(entry); + if(otherJunior != null) addPedigreeEntry(mplew, otherJunior); + } + if(missingEntries) addPedigreeEntry(mplew, entry); + for(MapleFamilyEntry junior : entry.getJuniors()) { + if(junior == null) continue; + addPedigreeEntry(mplew, junior); + for(MapleFamilyEntry superJunior : junior.getJuniors()) { + if(superJunior != null) addPedigreeEntry(mplew, superJunior); + } + } + mplew.writeInt(2 + superJuniors.size()); //member info count + // 0 = total seniors, -1 = total members, otherwise junior count of ID + mplew.writeInt(-1); + mplew.writeInt(entry.getFamily().getTotalMembers()); + mplew.writeInt(0); + mplew.writeInt(entry.getTotalSeniors()); //client subtracts provided seniors + for(MapleFamilyEntry superJunior : superJuniors) { + mplew.writeInt(superJunior.getChrId()); + mplew.writeInt(superJunior.getTotalJuniors()); + } + mplew.writeInt(0); //another loop count (entitlements used) + //mplew.writeInt(1); //entitlement index + //mplew.writeInt(2); //times used + mplew.writeShort(entry.getJuniorCount() >= 2 ? 0 : 2); //0 disables Add button (only if viewing own pedigree) return mplew.getPacket(); } + + private static void addPedigreeEntry(MaplePacketLittleEndianWriter mplew, MapleFamilyEntry entry) { + MapleCharacter chr = entry.getChr(); + boolean isOnline = chr != null; + mplew.writeInt(entry.getChrId()); //ID + mplew.writeInt(entry.getSenior() != null ? entry.getSenior().getChrId() : 0); //parent ID + mplew.writeShort(entry.getJob().getId()); //job id + mplew.write(entry.getLevel()); //level + mplew.writeBool(isOnline); //isOnline + mplew.writeInt(entry.getReputation()); //current rep + mplew.writeInt(entry.getTotalReputation()); //total rep + mplew.writeInt(entry.getRepsToSenior()); //reps recorded to senior + mplew.writeInt(entry.getTodaysRep()); + mplew.writeInt(isOnline ? ((chr.isAwayFromWorld() || chr.getCashShop().isOpened()) ? -1 : chr.getClient().getChannel() - 1) : 0); + mplew.writeInt(isOnline ? (int) (chr.getLoggedInTime() / 60000) : 0); //time online in minutes + mplew.writeMapleAsciiString(entry.getName()); //name + } public static byte[] updateAreaInfo(int area, String info) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); @@ -6935,6 +7052,46 @@ public class MaplePacketCreator { mplew.writeMapleAsciiString(inviter); return mplew.getPacket(); } + + public static byte[] sendFamilySummonRequest(String familyName, String from) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.FAMILY_SUMMON_REQUEST.getValue()); + mplew.writeMapleAsciiString(from); + mplew.writeMapleAsciiString(familyName); + return mplew.getPacket(); + } + + public static byte[] sendFamilyLoginNotice(String name, boolean loggedIn) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.FAMILY_NOTIFY_LOGIN_OR_LOGOUT.getValue()); + mplew.writeBool(loggedIn); + mplew.writeMapleAsciiString(name); + return mplew.getPacket(); + } + + public static byte[] sendFamilyJoinResponse(boolean accepted, String added) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.FAMILY_JOIN_REQUEST_RESULT.getValue()); + mplew.write(accepted ? 1 : 0); + mplew.writeMapleAsciiString(added); + return mplew.getPacket(); + } + + public static byte[] getSeniorMessage(String name) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.FAMILY_JOIN_ACCEPTED.getValue()); + mplew.writeMapleAsciiString(name); + mplew.writeInt(0); + return mplew.getPacket(); + } + + public static byte[] sendGainRep(int gain, String from) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.FAMILY_REP_GAIN.getValue()); + mplew.writeInt(gain); + mplew.writeMapleAsciiString(from); + return mplew.getPacket(); + } public static byte[] showBoughtCashPackage(List cashPackage, int accountId) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); @@ -7176,30 +7333,6 @@ public class MaplePacketCreator { return mplew.getPacket(); } - public static byte[] sendFamilyJoinResponse(boolean accepted, String added) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FAMILY_JOIN_REQUEST_RESULT.getValue()); - mplew.write(accepted ? 1 : 0); - mplew.writeMapleAsciiString(added); - return mplew.getPacket(); - } - - public static byte[] getSeniorMessage(String name) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FAMILY_JOIN_ACCEPTED.getValue()); - mplew.writeMapleAsciiString(name); - mplew.writeInt(0); - return mplew.getPacket(); - } - - public static byte[] sendGainRep(int gain, int mode) { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.writeShort(SendOpcode.FAMILY_FAMOUS_POINT_INC_RESULT.getValue()); - mplew.writeInt(gain); - mplew.writeShort(0); - return mplew.getPacket(); - } - public static byte[] removeItemFromDuey(boolean remove, int Package) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.PARCEL.getValue()); From 19e70ddf87232dff267093c9ab30a8198051d730 Mon Sep 17 00:00:00 2001 From: Moozi <14936017+RajanGrewal@users.noreply.github.com> Date: Mon, 26 Aug 2019 15:45:55 -0400 Subject: [PATCH 21/37] Added Special Field Packets (#515) I did this on the web browser not an IDE so excuse any mistakes >.< --- src/tools/MaplePacketCreator.java | 72 ++++++++++++++++++++++++++++++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git a/src/tools/MaplePacketCreator.java b/src/tools/MaplePacketCreator.java index 8eebeaeea4..33adc01c24 100644 --- a/src/tools/MaplePacketCreator.java +++ b/src/tools/MaplePacketCreator.java @@ -8288,4 +8288,74 @@ public class MaplePacketCreator { return mplew.getPacket(); } -} \ No newline at end of file + private static byte[] MassacreResult(byte nRank,int nIncExp) { + //CField_MassacreResult__OnMassacreResult @ 0x005617C5 + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PYRAMID_SCORE.getValue()); //MASSACRERESULT | 0x009E + mplew.write(nRank); //(0 - S) (1 - A) (2 - B) (3 - C) (4 - D) ( Else - Crash ) + mplew.writeInt(nIncExp); + return mplew.getPacket(); + } + + private static byte[] GuildBoss_HealerMove(short nY) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GUILD_BOSS_HEALER_MOVE.getValue()); + mplew.writeShort(nY); //New Y Position + return mplew.getPacket(); + } + + + private static byte[] GuildBoss_PulleyStateChange(byte nState) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GUILD_BOSS_PULLEY_STATE_CHANGE.getValue()); + mplew.write(nState); + return mplew.getPacket(); + } + + private static byte[] Tournament__Tournament(byte nState, byte nSubState) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.TOURNAMENT.getValue()); + mplew.write(nState); + mplew.write(nSubState); + return mplew.getPacket(); + } + + private static byte[] Tournament__MatchTable(byte nState, byte nSubState) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.TOURNAMENT_MATCH_TABLE.getValue()); //Prompts CMatchTableDlg Modal + return mplew.getPacket(); + } + + private static byte[] Tournament__SetPrize(byte bSetPrize, byte bHasPrize,int nItemID1,int nItemID2) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.TOURNAMENT_SET_PRIZE.getValue()); + + //0 = "You have failed the set the prize. Please check the item number again." + //1 = "You have successfully set the prize." + mplew.write(bSetPrize); + + mplew.write(bHasPrize); + + if(bHasPrize != 0) + { + mplew.writeInt(nItemID1); + mplew.writeInt(nItemID2); + } + + return mplew.getPacket(); + } + + private static byte[] Tournament__UEW(byte nState) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.TOURNAMENT_UEW.getValue()); + + //Is this a bitflag o.o ? + //2 = "You have reached the finals by default." + //4 = "You have reached the semifinals by default." + //8 or 16 = "You have reached the round of %n by default." | Encodes nState as %n ?! + mplew.write(nState); + + return mplew.getPacket(); + } + +} From efbce82a8b415d7ad7dde16aa8c540ae2a9a9973 Mon Sep 17 00:00:00 2001 From: ronancpl Date: Wed, 28 Aug 2019 03:49:05 -0300 Subject: [PATCH 22/37] Pooled Io Write + EXP loss & Detached morph patch + Storages in World Fixed autocommit getting called early/unavailable in a few catch blocks, when trying to save player. Fixed the missing variable declaration in several quest scripts that were recently formatted. Reworked the EXP loss formula applied at a knock-out. The new formula follows past discussions in several MS forums. Fixed a deadlock issue related with party HP and party doors management. Refactored management of packets sent to client through an IoSession. New system no longer makes use of a synchronized statement when calling announce(packet), rather makes use of dedicated threads to send queued packets for the respective players. Fixed SP reset allowing increase of unexpected skills. Refactored storages, no longer instantiated as coupled with the character, rather instantiated in a map within the world object, with accountid as key. Reviewed usage of character objects of offline party members, that weren't being properly checked. Fixed some unexpected cases with buffs and morphs (within the enhanced buff system) making the latter show up as another morph figure. Added a "priority buff" perspective within the enhanced buff system, to let such priority items/skills take awareness over other buffs. (This would be vital for some quests, as the one reported in #514 ) Fixed EXP gains in certain scenarios showing up with less amount than the expected (due to float point operations). Fixed a critical bug that have emerged in a recent mount-skill update, issue happened due to an improper object initialization. Fixed mount information packet not being relayed to the player at world login time, rendering some quests not startable until the mob levels up. --- README.md | 8 +- docs/mychanges_ptbr.txt | 27 +- scripts/npc/2010009.js | 2 - scripts/npc/9977777.js | 1 + scripts/npc/credits.js | 2 +- scripts/quest/2124.js | 2 + scripts/quest/2126.js | 2 + scripts/quest/2127.js | 2 + scripts/quest/2186.js | 2 + scripts/quest/2251.js | 2 + scripts/quest/3382.js | 2 + scripts/quest/3454.js | 2 + scripts/quest/3507.js | 3 + scripts/quest/3523.js | 2 + scripts/quest/3524.js | 2 + scripts/quest/3525.js | 2 + scripts/quest/3526.js | 2 + scripts/quest/3527.js | 2 + scripts/quest/3539.js | 2 + sql/db_database.sql | 6 +- src/client/MapleCharacter.java | 259 +++++++++++++----- src/client/MapleClient.java | 33 ++- src/client/MapleMount.java | 4 + src/client/command/CommandsExecutor.java | 1 + .../command/commands/gm1/GotoCommand.java | 2 +- .../command/commands/gm2/JailCommand.java | 2 +- .../command/commands/gm2/SetSlotCommand.java | 54 ++++ .../command/commands/gm5/DebugCommand.java | 2 +- src/client/inventory/MapleInventory.java | 13 + .../MapleInventoryManipulator.java | 41 ++- src/client/processor/AssignSPProcessor.java | 45 +-- src/client/processor/StorageProcessor.java | 41 ++- src/constants/ScriptableNPCConstants.java | 2 +- src/constants/ServerConstants.java | 7 +- src/constants/skills/Aran.java | 1 + src/net/MapleServerHandler.java | 1 + src/net/server/Server.java | 43 ++- .../server/audit/locks/MonitoredLockType.java | 1 + .../channel/handlers/ChangeMapHandler.java | 2 +- .../handlers/ChangeMapSpecialHandler.java | 2 +- .../handlers/HiredMerchantRequest.java | 2 +- .../handlers/MonsterCarnivalHandler.java | 19 +- .../handlers/PartyOperationHandler.java | 2 +- .../handlers/PlayerInteractionHandler.java | 2 +- .../handlers/PlayerLoggedinHandler.java | 9 +- .../channel/handlers/UseCashItemHandler.java | 5 + .../listener/MatchCheckerCPQChallenge.java | 4 +- src/net/server/guild/MapleAlliance.java | 9 +- src/net/server/worker/TimeoutWorker.java | 30 ++ src/net/server/world/MapleParty.java | 19 +- src/net/server/world/MaplePartyCharacter.java | 3 + src/net/server/world/World.java | 128 ++++++--- .../announcer/MapleAnnouncerCoordinator.java | 83 ++++++ .../announcer/MapleAnnouncerEntryPool.java | 74 +++++ src/scripting/AbstractPlayerInteraction.java | 46 ++-- src/scripting/AbstractScriptManager.java | 1 - src/scripting/event/EventInstanceManager.java | 16 +- src/scripting/event/EventManager.java | 2 +- src/scripting/npc/NPCConversationManager.java | 22 +- .../portal/PortalPlayerInteraction.java | 2 +- src/scripting/portal/PortalScriptManager.java | 2 +- src/server/MapleStatEffect.java | 39 ++- src/server/MapleStorage.java | 53 ++-- src/server/life/MapleMonster.java | 2 +- src/server/life/MobSkill.java | 2 +- src/server/maps/MapMonitor.java | 1 - src/server/maps/MapleDoor.java | 1 - src/server/maps/MapleGenericPortal.java | 1 - src/server/maps/MapleMap.java | 1 - src/server/maps/MapleMapFactory.java | 3 +- src/server/maps/MapleMapPortal.java | 2 - src/server/{ => maps}/MaplePortal.java | 2 +- .../MaplePortalFactory.java} | 6 +- src/server/partyquest/MonsterCarnival.java | 20 +- src/tools/FilePrinter.java | 1 + src/tools/MaplePacketCreator.java | 5 +- wz/Quest.wz/Check.img.xml | 2 +- 77 files changed, 959 insertions(+), 293 deletions(-) create mode 100644 src/client/command/commands/gm2/SetSlotCommand.java create mode 100644 src/net/server/worker/TimeoutWorker.java create mode 100644 src/net/server/world/announcer/MapleAnnouncerCoordinator.java create mode 100644 src/net/server/world/announcer/MapleAnnouncerEntryPool.java rename src/server/{ => maps}/MaplePortal.java (98%) rename src/server/{PortalFactory.java => maps/MaplePortalFactory.java} (96%) diff --git a/README.md b/README.md index c03774e7fb..007d762561 100644 --- a/README.md +++ b/README.md @@ -25,13 +25,17 @@ Java 8 SDK & NetBeans bundle: https://www.oracle.com/technetwork/pt/java/javase/ **Important note about localhosts**: these executables are red-flagged by antivirus tools as __potentially malicious softwares__, this happens due to the reverse engineering methods that were applied onto these software artifacts. Those depicted here have been put to use for years already and posed no harm so far, so they are soundly assumed to be safe. - Latest localhost: https://hostr.co/SvnSKrGzXhG0 + Latest localhost: https://hostr.co/amuX5SLeeVZx The following list, in bottom-up chronological order, holds information regarding all changes that were applied from the starting localhost used in this development. Some lines have a link attached, that will lead you to a snapshot of the localhost at that version of the artifact. Naturally, later versions holds all previous changes along with the proposed changes. **Change log:** - * Fixed Monster Magnet crashing the caster when trying to pull bosses. Drawback: Dojo HPBar becomes unavailable. + * Cleared need for administrator privileges (OS) to play the game, credits to Ubaware. + + * Set a higher cap for AP assigning with AP Reset, credits to Ubaware. + + * Fixed Monster Magnet crashing the caster when trying to pull bosses. Drawback: Dojo HPBar becomes unavailable. https://hostr.co/SvnSKrGzXhG0 * Fixed some 'rn' problems with quest icons & removed "tab" from party leader changed message. https://hostr.co/tsYsQzzV6xT0 diff --git a/docs/mychanges_ptbr.txt b/docs/mychanges_ptbr.txt index 5109643785..75ea4cac4b 100644 --- a/docs/mychanges_ptbr.txt +++ b/docs/mychanges_ptbr.txt @@ -2083,4 +2083,29 @@ Ajustado frequência de loots de reatores para 200ms. Refatorado vários casos de erros em acessos a funções estáticas a partir de scripts, que passou a ocorrer após trocar de versão Java. Corrigido listas que mantém conteúdo dos mundos e canais esvaziando antes que os processos em execução do TimerManager terminem de executar, no momento do sinal de shutdown do servidor. Revisado update de quests para o jogador durante script de quests, problema permite movimento enquanto o mesmo ainda está falando com o NPC. -Revisado novamente os scripts de quest! Problema detectado envolvia incidências de iniciar e completar de quests com disposes na mesma estrutura status. \ No newline at end of file +Revisado novamente os scripts de quest! Problema detectado envolvia incidências de iniciar e completar de quests com disposes na mesma estrutura status. + +19 - 20 Agosto 2019, +Revisado autocommit antes da hora e falta de chamada a rollbacks quando ocorre exceção no método de salvar jogador na DB. +Corrigido quest scripts recém-formatados pelo caso dos updates de quest durante conversação com NPCs. +Revisado cálculo de perda de EXP em nocaute. +Corrigido caso de deadlock relacionado a party HP e manutenção de doors, ocorrendo devido a uso indevido de statLock antes de prtLock. + +22 - 23 Agosto 2019, +Revisado envio sequencial de pacotes pelo IoSession acoplado à conexão com o cliente. +Corrigido possibilidade de uso de SP Reset para aumentar skills imprevistas. +Adicionado permissão de drops de NX utilizando a mesma flag dos shops. +Adicionado comando para setar quantidade de slots em todos os inventários. + +24 Agosto 2019, +Refatorado objeto de MapleStorage, agora sendo gerado um objeto por conta, acoplado ao mundo que jogador pertence (não mais acoplado diretamente com objeto do jogador, jogador agora recebe uma visão deste objeto). + +26 - 27 Agosto 2019, +Revisado uso de objeto de jogador pelo MaplePartyCharacter, retirando acesso ao mesmo quando o jogador está desconectado (assim limpando retenção de múltiplos objetos de jogador offline, quando os mesmos se encontram em party). +Corrigido casos inesperados como Nimble Feet seguido de Morph fazendo o segundo atuar inesperadamente, aplicando outras imagens de morphs. +Corrigido buffs importantes para mecânicas do jogo sendo sobrescritas por possuir menores ganhos que outros. +Revisado diversos casos no código-fonte onde havia possibilidade de acesso ao objeto de jogador nulo a partir do MaplePartyCharacter (quando o jogador se encontra offline e está na party). +Corrigido caso de EXP ganho ocorrendo menor que o esperado, ao se usar diversos modificadores de ganhos. +Corrigido bug crítico na atualização recente relacionado a skill mounts, onde na inicialização dos mounts informações estariam sendo perdidas inesperadamente... +Corrigido informações de mount não sendo atualizado para o jogador assim que o mesmo loga, levando a certas quests com requerimento de mount não permitindo inicialização pelo lado-cliente. +Revisado sistema criado para manutenção de pacotes enviados através do IoSession, tal sistema agora atuando como uma "pool" ao invés de uma "factory". \ No newline at end of file diff --git a/scripts/npc/2010009.js b/scripts/npc/2010009.js index 3e01a7ae29..1675483490 100644 --- a/scripts/npc/2010009.js +++ b/scripts/npc/2010009.js @@ -22,14 +22,12 @@ var status; var choice; var guildName; -var partymembers; var allianceCost = 2000000; var increaseCost = 1000000; var allianceLimit = 5; function start() { - partymembers = cm.getPartyMembers(); status = -1; action(1,0,0); } diff --git a/scripts/npc/9977777.js b/scripts/npc/9977777.js index a02e7870f6..233382105d 100644 --- a/scripts/npc/9977777.js +++ b/scripts/npc/9977777.js @@ -278,6 +278,7 @@ function writeFeatureTab_Project() { addFeature("Protected many flaws with login management system."); addFeature("Developed a robust anti-exploit login coordinator."); addFeature("Revised uniqueness aspect of logged in accounts."); + addFeature("Developed pooling system for IoSession sent packets."); addFeature("Usage of HikariCP to improve DB connection calls."); addFeature("Usage of Java Threadpool to improve runnable calls."); addFeature("Developed many survey tools for content profiling."); diff --git a/scripts/npc/credits.js b/scripts/npc/credits.js index 3b2bb13796..d5ea8e323f 100644 --- a/scripts/npc/credits.js +++ b/scripts/npc/credits.js @@ -115,7 +115,7 @@ function writeAllServerStaffs() { role_cursor = []; var srvName = servers[i]; - eval("writeServerStaff_" + srvName)(); + this["writeServerStaff_" + srvName](); name_tree.push(name_cursor); role_tree.push(role_cursor); diff --git a/scripts/quest/2124.js b/scripts/quest/2124.js index 451b5f4131..a13e40968a 100644 --- a/scripts/quest/2124.js +++ b/scripts/quest/2124.js @@ -23,6 +23,8 @@ Author : Ronan Lana */ +var status = -1; + function end(mode, type, selection) { if (mode == -1) { qm.dispose(); diff --git a/scripts/quest/2126.js b/scripts/quest/2126.js index 451b5f4131..a13e40968a 100644 --- a/scripts/quest/2126.js +++ b/scripts/quest/2126.js @@ -23,6 +23,8 @@ Author : Ronan Lana */ +var status = -1; + function end(mode, type, selection) { if (mode == -1) { qm.dispose(); diff --git a/scripts/quest/2127.js b/scripts/quest/2127.js index 822ace8788..ced26e74c3 100644 --- a/scripts/quest/2127.js +++ b/scripts/quest/2127.js @@ -23,6 +23,8 @@ Author : Ronan Lana */ +var status = -1; + function end(mode, type, selection) { if (mode == -1) { qm.dispose(); diff --git a/scripts/quest/2186.js b/scripts/quest/2186.js index 56ca1e0a38..11ced316ea 100644 --- a/scripts/quest/2186.js +++ b/scripts/quest/2186.js @@ -3,6 +3,8 @@ Quest: Abel Glasses Quest */ +var status = -1; // thanks IxianMace for noticing missing status declaration + function end(mode, type, selection){ if (mode == -1) { qm.dispose(); diff --git a/scripts/quest/2251.js b/scripts/quest/2251.js index 0eea0dc779..e3e02b116f 100644 --- a/scripts/quest/2251.js +++ b/scripts/quest/2251.js @@ -5,6 +5,8 @@ Item: Recording Charm (4032399) */ +var status = -1; + function end(mode, type, selection) { if (mode == -1) { qm.dispose(); diff --git a/scripts/quest/3382.js b/scripts/quest/3382.js index ce732bbd29..c2814e3554 100644 --- a/scripts/quest/3382.js +++ b/scripts/quest/3382.js @@ -27,6 +27,8 @@ Quest ID: 3382 */ +var status = -1; + function end(mode, type, selection) { if (mode == -1) { qm.dispose(); diff --git a/scripts/quest/3454.js b/scripts/quest/3454.js index cf33327420..84f2c77bf4 100644 --- a/scripts/quest/3454.js +++ b/scripts/quest/3454.js @@ -27,6 +27,8 @@ Quest ID: 3454 */ +var status = -1; + function end(mode, type, selection) { if (mode == -1) { qm.dispose(); diff --git a/scripts/quest/3507.js b/scripts/quest/3507.js index 80f44994fa..f2ab5516af 100644 --- a/scripts/quest/3507.js +++ b/scripts/quest/3507.js @@ -1,3 +1,6 @@ + +var status = -1; + function end(mode, type, selection) { if (mode == -1) { qm.dispose(); diff --git a/scripts/quest/3523.js b/scripts/quest/3523.js index 1bca9087c8..46e47d819c 100644 --- a/scripts/quest/3523.js +++ b/scripts/quest/3523.js @@ -23,6 +23,8 @@ * In search for the lost memory - warrior */ +var status = -1; + function start(mode, type, selection) { if (mode == -1) { qm.dispose(); diff --git a/scripts/quest/3524.js b/scripts/quest/3524.js index 6fde502f1b..47fe08adc4 100644 --- a/scripts/quest/3524.js +++ b/scripts/quest/3524.js @@ -23,6 +23,8 @@ * In search for the lost memory - mage */ +var status = -1; + function start(mode, type, selection) { if (mode == -1) { qm.dispose(); diff --git a/scripts/quest/3525.js b/scripts/quest/3525.js index 319a71ae0a..9ec196c5c2 100644 --- a/scripts/quest/3525.js +++ b/scripts/quest/3525.js @@ -23,6 +23,8 @@ * In search for the lost memory - bowman */ +var status = -1; + function start(mode, type, selection) { if (mode == -1) { qm.dispose(); diff --git a/scripts/quest/3526.js b/scripts/quest/3526.js index 7601322390..0e7a4d32b8 100644 --- a/scripts/quest/3526.js +++ b/scripts/quest/3526.js @@ -23,6 +23,8 @@ * In search for the lost memory - thief */ +var status = -1; + function start(mode, type, selection) { if (mode == -1) { qm.dispose(); diff --git a/scripts/quest/3527.js b/scripts/quest/3527.js index 8b6c855857..902ebb3f05 100644 --- a/scripts/quest/3527.js +++ b/scripts/quest/3527.js @@ -23,6 +23,8 @@ * In search for the lost memory - pirate */ +var status = -1; + function start(mode, type, selection) { if (mode == -1) { qm.dispose(); diff --git a/scripts/quest/3539.js b/scripts/quest/3539.js index 8b6c855857..902ebb3f05 100644 --- a/scripts/quest/3539.js +++ b/scripts/quest/3539.js @@ -23,6 +23,8 @@ * In search for the lost memory - pirate */ +var status = -1; + function start(mode, type, selection) { if (mode == -1) { qm.dispose(); diff --git a/sql/db_database.sql b/sql/db_database.sql index d826dd75ee..d451b962e6 100644 --- a/sql/db_database.sql +++ b/sql/db_database.sql @@ -21400,7 +21400,8 @@ CREATE TABLE IF NOT EXISTS `skills` ( `skilllevel` int(11) NOT NULL DEFAULT '0', `masterlevel` int(11) NOT NULL DEFAULT '0', `expiration` bigint(20) NOT NULL DEFAULT '-1', - PRIMARY KEY (`id`) + PRIMARY KEY (`id`), + UNIQUE INDEX `skillpair` (`skillid`, `characterid`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `specialcashitems` ( @@ -21456,6 +21457,9 @@ ALTER TABLE `dueyitems` ALTER TABLE `famelog` ADD CONSTRAINT `famelog_ibfk_1` FOREIGN KEY (`characterid`) REFERENCES `characters` (`id`) ON DELETE CASCADE; +ALTER TABLE `skills` + ADD CONSTRAINT `skills_chrid_fk` FOREIGN KEY (`characterid`) REFERENCES `characters` (`id`) ON DELETE CASCADE; # thanks Shavit + /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/src/client/MapleCharacter.java b/src/client/MapleCharacter.java index 39c7454865..2d177138c2 100644 --- a/src/client/MapleCharacter.java +++ b/src/client/MapleCharacter.java @@ -22,7 +22,6 @@ */ package client; -import server.minigame.MapleRockPaperScissor; import java.awt.Point; import java.lang.ref.WeakReference; import java.sql.Connection; @@ -56,6 +55,8 @@ import java.util.regex.Pattern; import net.server.PlayerBuffValueHolder; import net.server.PlayerCoolDownValueHolder; import net.server.Server; +import net.server.audit.locks.MonitoredLockType; +import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import net.server.coordinator.MapleInviteCoordinator; import net.server.guild.MapleAlliance; import net.server.guild.MapleGuild; @@ -68,11 +69,11 @@ import net.server.world.PartyOperation; import net.server.world.World; import scripting.AbstractPlayerInteraction; import scripting.event.EventInstanceManager; +import scripting.item.ItemScriptManager; import server.CashShop; import server.MapleItemInformationProvider; import server.MapleItemInformationProvider.ScriptedItem; import server.MapleMarriage; -import server.MaplePortal; import server.MapleShop; import server.MapleStatEffect; import server.MapleStorage; @@ -84,23 +85,28 @@ import server.events.RescueGaga; import server.events.gm.MapleFitness; import server.events.gm.MapleOla; import server.life.MapleMonster; +import server.life.MaplePlayerNPC; import server.life.MobSkill; +import server.life.MobSkillFactory; +import server.maps.FieldLimit; import server.maps.MapleHiredMerchant; import server.maps.MapleDoor; import server.maps.MapleDragon; import server.maps.MapleMap; import server.maps.MapleMapEffect; import server.maps.MapleMapManager; +import server.maps.MapleMapItem; import server.maps.MapleMapObject; import server.maps.MapleMapObjectType; import server.maps.MapleMiniGame; import server.maps.MapleMiniGame.MiniGameResult; -import server.life.MaplePlayerNPC; import server.maps.MaplePlayerShop; import server.maps.MaplePlayerShopItem; +import server.maps.MaplePortal; import server.maps.MapleSummon; import server.maps.SavedLocation; import server.maps.SavedLocationType; +import server.minigame.MapleRockPaperScissor; import server.partyquest.AriantColiseum; import server.partyquest.MonsterCarnival; import server.partyquest.MonsterCarnivalParty; @@ -162,14 +168,7 @@ import constants.skills.Shadower; import constants.skills.Sniper; import constants.skills.Swordsman; import constants.skills.ThunderBreaker; -import scripting.item.ItemScriptManager; -import server.life.MobSkillFactory; -import server.maps.MapleMapItem; -import net.server.audit.locks.MonitoredLockType; -import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import org.apache.mina.util.ConcurrentHashSet; -import scripting.quest.QuestActionManager; -import server.maps.FieldLimit; public class MapleCharacter extends AbstractMapleCharacterObject { private static final MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); @@ -1583,7 +1582,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } List partyMembers = new LinkedList<>(); - for(MapleCharacter mc : (exPartyMembers != null) ? exPartyMembers : this.getPartyMembers()) { + for(MapleCharacter mc : (exPartyMembers != null) ? exPartyMembers : this.getPartyMembersOnline()) { if(mc.isLoggedinWorld()) { partyMembers.add(mc); } @@ -2605,7 +2604,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public void dispel() { - if(!(ServerConstants.USE_UNDISPEL_HOLY_SHIELD && this.isActiveBuffedValue(Bishop.HOLY_SHIELD))) { + if(!(ServerConstants.USE_UNDISPEL_HOLY_SHIELD && this.hasActiveBuff(Bishop.HOLY_SHIELD))) { List mbsvhList = getAllStatups(); for (MapleBuffStatValueHolder mbsvh : mbsvhList) { if (mbsvh.effect.isSkill()) { @@ -2701,7 +2700,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { public void giveDebuff(final MapleDisease disease, MobSkill skill) { if (!hasDisease(disease) && getDiseasesSize() < 2) { if (!(disease == MapleDisease.SEDUCE || disease == MapleDisease.STUN)) { - if (isActiveBuffedValue(Bishop.HOLY_SHIELD)) { + if (hasActiveBuff(Bishop.HOLY_SHIELD)) { return; } } @@ -3480,17 +3479,44 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } } + public boolean hasActiveBuff(int sourceid) { + LinkedList allBuffs; + + effLock.lock(); + chrLock.lock(); + try { + allBuffs = new LinkedList<>(effects.values()); + } finally { + chrLock.unlock(); + effLock.unlock(); + } + + for (MapleBuffStatValueHolder mbsvh : allBuffs) { + if (mbsvh.effect.getBuffSourceId() == sourceid) { + return true; + } + } + return false; + } + private List> getActiveStatupsFromSourceid(int sourceid) { // already under effLock & chrLock List> ret = new ArrayList<>(); - + List> singletonStatups = new ArrayList<>(); for(Entry bel : buffEffects.get(sourceid).entrySet()) { MapleBuffStat mbs = bel.getKey(); MapleBuffStatValueHolder mbsvh = effects.get(bel.getKey()); + Pair p; if(mbsvh != null) { - ret.add(new Pair<>(mbs, mbsvh.value)); + p = new Pair<>(mbs, mbsvh.value); } else { - ret.add(new Pair<>(mbs, 0)); + p = new Pair<>(mbs, 0); + } + + if (!isSingletonStatup(mbs)) { // thanks resinate, Egg Daddy for pointing out morph issues when updating it along with other statups + ret.add(p); + } else { + singletonStatups.add(p); } } @@ -3501,6 +3527,17 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } }); + if (!singletonStatups.isEmpty()) { + Collections.sort(singletonStatups, new Comparator>() { + @Override + public int compare(Pair p1, Pair p2) { + return p1.getLeft().compareTo(p2.getLeft()); + } + }); + + ret.addAll(singletonStatups); + } + return ret; } @@ -3776,12 +3813,29 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public boolean cancelEffect(MapleStatEffect effect, boolean overwrite, long startTime) { + boolean ret; + effLock.lock(); try { - return cancelEffect(effect, overwrite, startTime, true); + ret = cancelEffect(effect, overwrite, startTime, true); } finally { effLock.unlock(); } + + if (effect.isMagicDoor() && ret) { + prtLock.lock(); + effLock.lock(); + try { + if (!hasBuffFromSourceid(Priest.MYSTIC_DOOR)) { + MapleDoor.attemptRemoveDoor(this); + } + } finally { + effLock.unlock(); + prtLock.unlock(); + } + } + + return ret; } private static MapleStatEffect getEffectFromBuffSource(Map buffSource) { @@ -3882,9 +3936,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { buffstats = extractLeastRelevantStatEffectsIfFull(effect); } - if (effect.isMagicDoor()) { - MapleDoor.attemptRemoveDoor(this); - } else if (effect.isMapChair()) { + if (effect.isMapChair()) { stopChairTask(); } @@ -4163,6 +4215,44 @@ public class MapleCharacter extends AbstractMapleCharacterObject { return topologicalSortEffects(buffEffects); } + private List>> propagatePriorityBuffEffectUpdates(Set retrievedStats) { + List>> priorityUpdateEffects = new LinkedList<>(); + Map yokeStats = new LinkedHashMap<>(); + + // priority buffsources: override buffstats for the client to perceive those as "currently buffed" + Set mbsvhList = new LinkedHashSet<>(); + for (MapleBuffStatValueHolder mbsvh : getAllStatups()) { + mbsvhList.add(mbsvh); + } + + for (MapleBuffStatValueHolder mbsvh : mbsvhList) { + MapleStatEffect mse = mbsvh.effect; + int buffSourceId = mse.getBuffSourceId(); + if (isPriorityBuffSourceid(buffSourceId) && !hasActiveBuff(buffSourceId)) { + for (Pair ps : mse.getStatups()) { + MapleBuffStat mbs = ps.getLeft(); + if (retrievedStats.contains(mbs)) { + MapleBuffStatValueHolder mbsvhe = effects.get(mbs); + + // this shouldn't even be null... + //if (mbsvh != null) { + yokeStats.put(mbsvh, mbsvhe.effect); + //} + } + } + } + } + + for (Entry e : yokeStats.entrySet()) { + MapleBuffStatValueHolder mbsvhPriority = e.getKey(); + MapleStatEffect mseActive = e.getValue(); + + priorityUpdateEffects.add(new Pair<>(mseActive.getBuffSourceId(), new Pair<>(mbsvhPriority.effect, mbsvhPriority.startTime))); + } + + return priorityUpdateEffects; + } + private void propagateBuffEffectUpdates(Map> retrievedEffects, Set retrievedStats, Set removedStats) { cancelInactiveBuffStats(retrievedStats, removedStats); if (retrievedStats.isEmpty()) { @@ -4251,6 +4341,18 @@ public class MapleCharacter extends AbstractMapleCharacterObject { activeStatups.clear(); } + List>> priorityEffects = propagatePriorityBuffEffectUpdates(retrievedStats); + for(Pair> lmse: priorityEffects) { + Pair msel = lmse.getRight(); + + for(Pair statup : getActiveStatupsFromSourceid(lmse.getLeft())) { + activeStatups.add(statup); + } + + msel.getLeft().updateBuffEffect(this, activeStatups, msel.getRight()); + activeStatups.clear(); + } + if (this.isRidingBattleship()) { List> statups = new ArrayList<>(1); statups.add(new Pair<>(MapleBuffStat.MONSTER_RIDING, 0)); @@ -4299,6 +4401,18 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } } + private static boolean isPriorityBuffSourceid(int sourceid) { + switch(sourceid) { + case -2022631: + case -2022632: + case -2022633: + return true; + + default: + return false; + } + } + private void addItemEffectHolderCount(MapleBuffStat stat) { Byte val = buffEffectsCount.get(stat); if (val != null) { @@ -4454,6 +4568,18 @@ public class MapleCharacter extends AbstractMapleCharacterObject { addItemEffectHolderCount(statup.getKey()); } + // should also propagate update from buffs shared with priority sourceids + Set updated = appliedStatups.keySet(); + for (MapleBuffStatValueHolder mbsvh : this.getAllStatups()) { + if (isPriorityBuffSourceid(mbsvh.effect.getBuffSourceId())) { + for (Pair p : mbsvh.effect.getStatups()) { + if (updated.contains(p.getLeft())) { + retrievedStats.add(p.getLeft()); + } + } + } + } + if(!isSilent) { addItemEffectHolder(sourceid, expirationtime, appliedStatups); for (Entry statup : toDeploy.entrySet()) { @@ -5361,14 +5487,17 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } } - public List getPartyMembers() { + public List getPartyMembersOnline() { List list = new LinkedList<>(); prtLock.lock(); try { if(party != null) { - for(MaplePartyCharacter partyMembers: party.getMembers()) { - list.add(partyMembers.getPlayer()); + for(MaplePartyCharacter mpc: party.getMembers()) { + MapleCharacter mc = mpc.getPlayer(); + if (mc != null) { + list.add(mc); + } } } } finally { @@ -5385,11 +5514,13 @@ public class MapleCharacter extends AbstractMapleCharacterObject { prtLock.lock(); try { if(party != null) { - for(MaplePartyCharacter partyMembers: party.getMembers()) { - MapleCharacter chr = partyMembers.getPlayer(); - MapleMap chrMap = chr.getMap(); - if(chrMap != null && chrMap.hashCode() == thisMapHash && chr.isLoggedinWorld()) { - list.add(chr); + for(MaplePartyCharacter mpc: party.getMembers()) { + MapleCharacter chr = mpc.getPlayer(); + if (chr != null) { + MapleMap chrMap = chr.getMap(); + if(chrMap != null && chrMap.hashCode() == thisMapHash && chr.isLoggedinWorld()) { + list.add(chr); + } } } } @@ -5405,10 +5536,13 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public boolean isPartyMember(int cid) { - for(MapleCharacter mpcu: getPartyMembers()) { - if(mpcu.getId() == cid) { - return true; + prtLock.lock(); + try { + if(party != null) { + return party.getMemberById(cid) != null; } + } finally { + prtLock.unlock(); } return false; @@ -5988,26 +6122,6 @@ public class MapleCharacter extends AbstractMapleCharacterObject { dropMessage(1, "Your guild already reached the maximum capacity of players."); } } - - public boolean isActiveBuffedValue(int skillid) { - LinkedList allBuffs; - - effLock.lock(); - chrLock.lock(); - try { - allBuffs = new LinkedList<>(effects.values()); - } finally { - chrLock.unlock(); - effLock.unlock(); - } - - for (MapleBuffStatValueHolder mbsvh : allBuffs) { - if (mbsvh.effect.isSkill() && mbsvh.effect.getSourceId() == skillid) { - return true; - } - } - return false; - } private boolean canBuyback(int fee, boolean usingMesos) { return (usingMesos ? this.getMeso() : cashshop.getCash(1)) >= fee; @@ -7313,7 +7427,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { rs.close(); ps.close(); ret.buddylist.loadFromDb(charid); - ret.storage = MapleStorage.loadOrCreateFromDB(ret.accountid, ret.world); + ret.storage = wserv.getAccountStorage(ret.accountid); int startHp = ret.hp, startMp = ret.mp; ret.reapplyLocalStats(); @@ -7428,8 +7542,10 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public MapleMount mount(int id, int skillid) { - maplemount = new MapleMount(this, id, skillid); - return maplemount; + MapleMount mount = maplemount; + mount.setItemId(id); + mount.setSkillId(skillid); + return mount; } private void playerDead() { @@ -7467,22 +7583,22 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } else if (getJob() != MapleJob.BEGINNER) { //Hmm... if (!FieldLimit.NO_EXP_DECREASE.check(getMap().getFieldLimit())) { // thanks Conrad for noticing missing FieldLimit check int XPdummy = ExpTable.getExpNeededForLevel(getLevel()); - if (getMap().isTown()) { + + if (getMap().isTown()) { // thanks MindLove, SIayerMonkey, HaItsNotOver for noting players only lose 1% on town maps XPdummy /= 100; - } - if (XPdummy == ExpTable.getExpNeededForLevel(getLevel())) { - if (getLuk() <= 100 && getLuk() > 8) { - XPdummy *= (200 - getLuk()) / 2000; - } else if (getLuk() < 8) { + } else { + if (getLuk() < 50) { // thanks Taiketo, Quit, Fishanelli for noting player EXP loss are fixed, 50-LUK threshold XPdummy /= 10; } else { XPdummy /= 20; } } - if (getExp() > XPdummy) { + + int curExp = getExp(); + if (curExp > XPdummy) { loseExp(XPdummy, false, false); } else { - loseExp(getExp(), false, false); + loseExp(curExp, false, false); } } } @@ -7792,6 +7908,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } private void updateLocalStats() { + prtLock.lock(); effLock.lock(); statWlock.lock(); try { @@ -7809,6 +7926,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } finally { statWlock.unlock(); effLock.unlock(); + prtLock.unlock(); } } @@ -8447,8 +8565,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { ItemFactory.INVENTORY.saveItems(itemsWithType, id, con); - deleteWhereCharacterId(con, "DELETE FROM skills WHERE characterid = ?"); - ps = con.prepareStatement("INSERT INTO skills (characterid, skillid, skilllevel, masterlevel, expiration) VALUES (?, ?, ?, ?, ?)"); + ps = con.prepareStatement("REPLACE INTO skills (characterid, skillid, skilllevel, masterlevel, expiration) VALUES (?, ?, ?, ?, ?)"); ps.setInt(1, id); for (Entry skill : skills.entrySet()) { ps.setInt(2, skill.getKey().getId()); @@ -8590,10 +8707,6 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } - con.commit(); - con.setAutoCommit(true); - - if (cashshop != null) { cashshop.save(con); } @@ -8603,6 +8716,9 @@ public class MapleCharacter extends AbstractMapleCharacterObject { usedStorage = false; } + con.commit(); + con.setAutoCommit(true); // only commit after finishing all "con" usages, thanks Zygon + } catch (SQLException | RuntimeException t) { FilePrinter.printError(FilePrinter.SAVE_CHAR, t, "Error saving " + name + " Level: " + level + " Job: " + job.getId()); try { @@ -8612,6 +8728,11 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } } catch (Exception e) { FilePrinter.printError(FilePrinter.SAVE_CHAR, e, "Error saving " + name + " Level: " + level + " Job: " + job.getId()); + try { + con.rollback(); // thanks Zygon + } catch (SQLException se) { + FilePrinter.printError(FilePrinter.SAVE_CHAR, se, "Error trying to rollback " + name); + } } finally { try { con.setAutoCommit(true); @@ -9923,7 +10044,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { if (!this.isHidden() || client.getPlayer().gmLevel() > 1) { client.announce(MaplePacketCreator.spawnPlayerMapObject(client, this, false)); - if (buffEffects.containsKey(getJobMapChair(job))) { // mustn't effLock, chrLock this function + if (buffEffects.containsKey(getJobMapChair(job))) { // mustn't effLock, chrLock sendSpawnData client.announce(MaplePacketCreator.giveForeignChairSkillEffect(id)); } } diff --git a/src/client/MapleClient.java b/src/client/MapleClient.java index 77e84e3397..363fac19f5 100644 --- a/src/client/MapleClient.java +++ b/src/client/MapleClient.java @@ -47,8 +47,6 @@ import java.util.concurrent.locks.Lock; import jdk.nashorn.api.scripting.NashornScriptEngine; import tools.*; -import javax.script.ScriptEngine; - import net.server.Server; import net.server.coordinator.MapleSessionCoordinator; import net.server.coordinator.MapleSessionCoordinator.AntiMulticlientResult; @@ -63,6 +61,7 @@ import net.server.world.World; import org.apache.mina.core.session.IoSession; +import net.server.world.announcer.MapleAnnouncerCoordinator; import client.inventory.MapleInventoryType; import constants.GameConstants; import constants.ServerConstants; @@ -74,7 +73,6 @@ import scripting.npc.NPCScriptManager; import scripting.quest.QuestActionManager; import scripting.quest.QuestScriptManager; import server.life.MapleMonster; -import server.MapleTrade; import server.ThreadManager; import server.maps.*; import server.quest.MapleQuest; @@ -85,7 +83,7 @@ import net.server.coordinator.MapleLoginBypassCoordinator; public class MapleClient { - public static final int LOGIN_NOTLOGGEDIN = 0; + public static final int LOGIN_NOTLOGGEDIN = 0; public static final int LOGIN_SERVER_TRANSITION = 1; public static final int LOGIN_LOGGEDIN = 2; public static final String CLIENT_KEY = "CLIENT"; @@ -96,7 +94,8 @@ public class MapleClient { private MapleAESOFB send; private MapleAESOFB receive; private final IoSession session; - private MapleCharacter player; + private MapleCharacter player; + private MapleAnnouncerCoordinator announcer = MapleAnnouncerCoordinator.getInstance(); private int channel = 1; private int accId = -4; private boolean loggedIn = false; @@ -122,12 +121,13 @@ public class MapleClient { private final Lock lock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CLIENT, true); private final Lock encoderLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CLIENT_ENCODER, true); private static final Lock loginLocks[] = new Lock[200]; // thanks Masterrulax & try2hack for pointing out a bottleneck issue here - private Calendar tempBanCalendar; + private Calendar tempBanCalendar; private int votePoints; private int voteTime = -1; private int visibleWorlds; private long lastNpcClick; private long sessionId; + private long lastPacket = System.currentTimeMillis(); private int lang = 0; static { @@ -135,6 +135,14 @@ public class MapleClient { loginLocks[i] = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CLIENT_LOGIN, true); } } + + public void updateLastPacket() { + lastPacket = System.currentTimeMillis(); + } + + public long getLastPacket() { + return lastPacket; + } public MapleClient(MapleAESOFB send, MapleAESOFB receive, IoSession session) { this.send = send; @@ -877,9 +885,9 @@ public class MapleClient { MapleMap map = player.getMap(); final MapleParty party = player.getParty(); final int idz = player.getId(); - final MaplePartyCharacter chrp = new MaplePartyCharacter(player); if (party != null) { + final MaplePartyCharacter chrp = new MaplePartyCharacter(player); chrp.setOnline(false); wserv.updateParty(party.getId(), PartyOperation.LOG_ONOFF, chrp); if (party.getLeader().getId() == idz && map != null) { @@ -1135,6 +1143,13 @@ public class MapleClient { public void setWorld(int world) { this.world = world; + + World wserv = Server.getInstance().getWorld(world); + if (wserv != null) { + this.announcer = wserv.getAnnouncerCoordinator(); + } else { + this.announcer = MapleAnnouncerCoordinator.getInstance(); + } } public void pongReceived() { @@ -1459,8 +1474,8 @@ public class MapleClient { } } - public synchronized void announce(final byte[] packet) {//MINA CORE IS A FUCKING BITCH AND I HATE IT <3 - session.write(packet); + public void announce(final byte[] packet) { // thanks GitGud for noticing an opportunity for improvement by overcoming "synchronized announce" + announcer.append(session, packet); } public void announceHint(String msg, int length) { diff --git a/src/client/MapleMount.java b/src/client/MapleMount.java index 52f4bd1e3a..e7d07cd9ff 100644 --- a/src/client/MapleMount.java +++ b/src/client/MapleMount.java @@ -107,6 +107,10 @@ public class MapleMount { public void setItemId(int newitemid) { this.itemid = newitemid; } + + public void setSkillId(int newskillid) { + this.skillid = newskillid; + } public void setActive(boolean set) { this.active = set; diff --git a/src/client/command/CommandsExecutor.java b/src/client/command/CommandsExecutor.java index 547f21c771..3728dd4a5a 100644 --- a/src/client/command/CommandsExecutor.java +++ b/src/client/command/CommandsExecutor.java @@ -254,6 +254,7 @@ public class CommandsExecutor { addCommand("drop", 2, ItemDropCommand.class); addCommand("level", 2, LevelCommand.class); addCommand("levelpro", 2, LevelProCommand.class); + addCommand("setslot", 2, SetSlotCommand.class); addCommand("setstat", 2, SetStatCommand.class); addCommand("maxstat", 2, MaxStatCommand.class); addCommand("maxskill", 2, MaxSkillCommand.class); diff --git a/src/client/command/commands/gm1/GotoCommand.java b/src/client/command/commands/gm1/GotoCommand.java index dcd3b76264..a5f1163b10 100644 --- a/src/client/command/commands/gm1/GotoCommand.java +++ b/src/client/command/commands/gm1/GotoCommand.java @@ -30,7 +30,7 @@ import constants.GameConstants; import java.util.ArrayList; import java.util.Collections; import net.server.Server; -import server.MaplePortal; +import server.maps.MaplePortal; import server.maps.FieldLimit; import server.maps.MapleMap; import server.maps.MapleMapManager; diff --git a/src/client/command/commands/gm2/JailCommand.java b/src/client/command/commands/gm2/JailCommand.java index afea582f87..3d15a23f06 100644 --- a/src/client/command/commands/gm2/JailCommand.java +++ b/src/client/command/commands/gm2/JailCommand.java @@ -26,7 +26,7 @@ package client.command.commands.gm2; import client.command.Command; import client.MapleClient; import client.MapleCharacter; -import server.MaplePortal; +import server.maps.MaplePortal; import server.maps.MapleMap; public class JailCommand extends Command { diff --git a/src/client/command/commands/gm2/SetSlotCommand.java b/src/client/command/commands/gm2/SetSlotCommand.java new file mode 100644 index 0000000000..06e4b46a17 --- /dev/null +++ b/src/client/command/commands/gm2/SetSlotCommand.java @@ -0,0 +1,54 @@ +/* + This file is part of the HeavenMS MapleStory Server, commands OdinMS-based + Copyleft (L) 2016 - 2019 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* + @Author: Ronan +*/ +package client.command.commands.gm2; + +import client.*; +import client.command.Command; + +public class SetSlotCommand extends Command { + { + setDescription(""); + } + + @Override + public void execute(MapleClient c, String[] params) { + MapleCharacter player = c.getPlayer(); + if (params.length < 1) { + player.yellowMessage("Syntax: !setslot "); + return; + } + + int slots = (Integer.parseInt(params[0]) / 4) * 4; + for (int i = 1; i < 5; i++) { + int curSlots = player.getSlots(i); + if (slots <= -curSlots) { + continue; + } + + player.gainSlots(i, slots - curSlots, true); + } + + player.yellowMessage("Slots updated."); + } +} diff --git a/src/client/command/commands/gm5/DebugCommand.java b/src/client/command/commands/gm5/DebugCommand.java index bb2cab3d6b..a05b51ce04 100644 --- a/src/client/command/commands/gm5/DebugCommand.java +++ b/src/client/command/commands/gm5/DebugCommand.java @@ -27,7 +27,7 @@ import client.command.Command; import client.MapleClient; import client.MapleCharacter; import net.server.Server; -import server.MaplePortal; +import server.maps.MaplePortal; import server.TimerManager; import server.life.MapleMonster; import server.life.SpawnPoint; diff --git a/src/client/inventory/MapleInventory.java b/src/client/inventory/MapleInventory.java index 7255677ddc..eb2db975bd 100644 --- a/src/client/inventory/MapleInventory.java +++ b/src/client/inventory/MapleInventory.java @@ -83,6 +83,19 @@ public class MapleInventory implements Iterable { public void setSlotLimit(int newLimit) { lock.lock(); try { + if (newLimit < slotLimit) { + List toRemove = new LinkedList<>(); + for (Item it : list()) { + if (it.getPosition() > newLimit) { + toRemove.add(it.getPosition()); + } + } + + for (Short slot : toRemove) { + removeSlot(slot); + } + } + slotLimit = (byte) newLimit; } finally { lock.unlock(); diff --git a/src/client/inventory/manipulator/MapleInventoryManipulator.java b/src/client/inventory/manipulator/MapleInventoryManipulator.java index cb88ca7419..5a9247af51 100644 --- a/src/client/inventory/manipulator/MapleInventoryManipulator.java +++ b/src/client/inventory/manipulator/MapleInventoryManipulator.java @@ -683,9 +683,27 @@ public class MapleInventoryManipulator { c.announce(MaplePacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(2, source, src)))); chr.equipChanged(); } + + private static boolean isDisappearingItemDrop(Item it) { + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + if (ii.isDropRestricted(it.getItemId())) { + return true; + } else if (ii.isCash(it.getItemId())) { + if (ServerConstants.USE_ENFORCE_UNMERCHABLE_CASH) { // thanks Ari for noticing cash drops not available server-side + return true; + } else if (ItemConstants.isPet(it.getItemId()) && ServerConstants.USE_ENFORCE_UNMERCHABLE_PET) { + return true; + } + } else if (isDroppedItemRestricted(it)) { + return true; + } else if (ItemConstants.isWeddingRing(it.getItemId())) { + return true; + } + + return false; + } public static void drop(MapleClient c, MapleInventoryType type, short src, short quantity) { - MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); if (src < 0) { type = MapleInventoryType.EQUIPPED; } @@ -698,14 +716,21 @@ public class MapleInventoryManipulator { return; } int itemId = source.getItemId(); - if (ItemConstants.isPet(itemId)) { - return; - } MapleMap map = chr.getMap(); if ((!ItemConstants.isRechargeable(itemId) && source.getQuantity() < quantity) || quantity < 0) { return; } + + int petid = source.getPetId(); + if (petid > -1) { + int petIdx = chr.getPetIndex(petid); + if(petIdx > -1) { + MaplePet pet = chr.getPet(petIdx); + chr.unequipPet(pet, true); + } + } + Point dropPos = new Point(chr.getPosition()); if (quantity < source.getQuantity() && !ItemConstants.isRechargeable(itemId)) { Item target = source.copy(); @@ -721,11 +746,9 @@ public class MapleInventoryManipulator { NewYearCardRecord.removeAllNewYearCard(false, chr); c.getAbstractPlayerInteraction().removeAll(4301000); } - } else if (ItemConstants.isWeddingRing(source.getItemId())) { - map.disappearingItemDrop(chr, chr, target, dropPos); } - if (ii.isDropRestricted(target.getItemId()) || ii.isCash(target.getItemId()) || isDroppedItemRestricted(target)) { + if (isDisappearingItemDrop(target)) { map.disappearingItemDrop(chr, chr, target, dropPos); } else { map.spawnItemDrop(chr, chr, target, dropPos, true, true); @@ -754,11 +777,9 @@ public class MapleInventoryManipulator { NewYearCardRecord.removeAllNewYearCard(false, chr); c.getAbstractPlayerInteraction().removeAll(4301000); } - } else if (ItemConstants.isWeddingRing(source.getItemId())) { - map.disappearingItemDrop(chr, chr, source, dropPos); } - if (ii.isDropRestricted(itemId) || ii.isCash(itemId) || isDroppedItemRestricted(source)) { + if (isDisappearingItemDrop(source)) { map.disappearingItemDrop(chr, chr, source, dropPos); } else { map.spawnItemDrop(chr, chr, source, dropPos, true, true); diff --git a/src/client/processor/AssignSPProcessor.java b/src/client/processor/AssignSPProcessor.java index a5a4e8ca98..835c8369f3 100644 --- a/src/client/processor/AssignSPProcessor.java +++ b/src/client/processor/AssignSPProcessor.java @@ -40,31 +40,42 @@ import tools.MaplePacketCreator; */ public class AssignSPProcessor { + public static boolean canSPAssign(MapleClient c, int skillid) { + if (skillid == Aran.HIDDEN_FULL_DOUBLE || skillid == Aran.HIDDEN_FULL_TRIPLE || skillid == Aran.HIDDEN_OVER_DOUBLE || skillid == Aran.HIDDEN_OVER_TRIPLE) { + c.announce(MaplePacketCreator.enableActions()); + return false; + } + + MapleCharacter player = c.getPlayer(); + if ((!GameConstants.isPqSkillMap(player.getMapId()) && GameConstants.isPqSkill(skillid)) || (!player.isGM() && GameConstants.isGMSkills(skillid)) || (!GameConstants.isInJobTree(skillid, player.getJob().getId()) && !player.isGM())) { + AutobanFactory.PACKET_EDIT.alert(player, "tried to packet edit in distributing sp."); + FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to use skill " + skillid + " without it being in their job."); + + final MapleClient client = c; + ThreadManager.getInstance().newTask(new Runnable() { + @Override + public void run() { + client.disconnect(true, false); + } + }); + + return false; + } + + return true; + } + public static void SPAssignAction(MapleClient c, int skillid) { c.lockClient(); try { - if (skillid == Aran.HIDDEN_FULL_DOUBLE || skillid == Aran.HIDDEN_FULL_TRIPLE || skillid == Aran.HIDDEN_OVER_DOUBLE || skillid == Aran.HIDDEN_OVER_TRIPLE) { - c.announce(MaplePacketCreator.enableActions()); + if (!canSPAssign(c, skillid)) { return; } - + MapleCharacter player = c.getPlayer(); int remainingSp = player.getRemainingSps()[GameConstants.getSkillBook(skillid/10000)]; boolean isBeginnerSkill = false; - if ((!GameConstants.isPqSkillMap(player.getMapId()) && GameConstants.isPqSkill(skillid)) || (!player.isGM() && GameConstants.isGMSkills(skillid)) || (!GameConstants.isInJobTree(skillid, player.getJob().getId()) && !player.isGM())) { - AutobanFactory.PACKET_EDIT.alert(player, "tried to packet edit in distributing sp."); - FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to use skill " + skillid + " without it being in their job."); - - final MapleClient client = c; - ThreadManager.getInstance().newTask(new Runnable() { - @Override - public void run() { - client.disconnect(true, false); - } - }); - - return; - } + if (skillid % 10000000 > 999 && skillid % 10000000 < 1003) { int total = 0; for (int i = 0; i < 3; i++) { diff --git a/src/client/processor/StorageProcessor.java b/src/client/processor/StorageProcessor.java index b2f5f4aa0e..d465d184f7 100644 --- a/src/client/processor/StorageProcessor.java +++ b/src/client/processor/StorageProcessor.java @@ -45,6 +45,7 @@ import tools.data.input.SeekableLittleEndianAccessor; public class StorageProcessor { public static void storageAction(SeekableLittleEndianAccessor slea, MapleClient c) { + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); MapleCharacter chr = c.getPlayer(); MapleStorage storage = chr.getStorage(); byte mode = slea.readByte(); @@ -69,7 +70,7 @@ public class StorageProcessor { slot = storage.getSlot(MapleInventoryType.getByType(type), slot); Item item = storage.getItem(slot); if (item != null) { - if (MapleItemInformationProvider.getInstance().isPickupRestricted(item.getItemId()) && chr.haveItemWithId(item.getItemId(), true)) { + if (ii.isPickupRestricted(item.getItemId()) && chr.haveItemWithId(item.getItemId(), true)) { c.announce(MaplePacketCreator.getStorageError((byte) 0x0C)); return; } @@ -83,13 +84,20 @@ public class StorageProcessor { } if (MapleInventoryManipulator.checkSpace(c, item.getItemId(), item.getQuantity(), item.getOwner())) { - item = storage.takeOut(slot);//actually the same but idc - String itemName = MapleItemInformationProvider.getInstance().getName(item.getItemId()); - FilePrinter.print(FilePrinter.STORAGE + c.getAccountName() + ".txt", c.getPlayer().getName() + " took out " + item.getQuantity() + " " + itemName + " (" + item.getItemId() + ")"); - chr.setUsedStorage(); - MapleKarmaManipulator.toggleKarmaFlagToUntradeable(item); - MapleInventoryManipulator.addFromDrop(c, item, false); - storage.sendTakenOut(c, item.getInventoryType()); + if (storage.takeOut(item)) { + chr.setUsedStorage(); + + MapleKarmaManipulator.toggleKarmaFlagToUntradeable(item); + MapleInventoryManipulator.addFromDrop(c, item, false); + + String itemName = ii.getName(item.getItemId()); + FilePrinter.print(FilePrinter.STORAGE + c.getAccountName() + ".txt", c.getPlayer().getName() + " took out " + item.getQuantity() + " " + itemName + " (" + item.getItemId() + ")"); + + storage.sendTakenOut(c, item.getInventoryType()); + } else { + c.announce(MaplePacketCreator.enableActions()); + return; + } } else { c.announce(MaplePacketCreator.getStorageError((byte) 0x0A)); } @@ -149,11 +157,14 @@ public class StorageProcessor { MapleKarmaManipulator.toggleKarmaFlagToUntradeable(item); item.setQuantity(quantity); - storage.store(item); - storage.sendStored(c, ItemConstants.getInventoryType(itemId)); - String itemName = MapleItemInformationProvider.getInstance().getName(item.getItemId()); - FilePrinter.print(FilePrinter.STORAGE + c.getAccountName() + ".txt", c.getPlayer().getName() + " stored " + item.getQuantity() + " " + itemName + " (" + item.getItemId() + ")"); + + storage.store(item); // inside a critical section, "!(storage.isFull())" is still in effect... chr.setUsedStorage(); + + String itemName = ii.getName(item.getItemId()); + FilePrinter.print(FilePrinter.STORAGE + c.getAccountName() + ".txt", c.getPlayer().getName() + " stored " + item.getQuantity() + " " + itemName + " (" + item.getItemId() + ")"); + + storage.sendStored(c, ItemConstants.getInventoryType(itemId)); } } else if (mode == 6) { // arrange items if(ServerConstants.USE_STORAGE_ITEM_SORT) storage.arrangeItems(c); @@ -178,14 +189,14 @@ public class StorageProcessor { } storage.setMeso(storageMesos - meso); chr.gainMeso(meso, false, true, false); - FilePrinter.print(FilePrinter.STORAGE + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + (meso > 0 ? " took out " : " stored ") + Math.abs(meso) + " mesos"); chr.setUsedStorage(); + FilePrinter.print(FilePrinter.STORAGE + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + (meso > 0 ? " took out " : " stored ") + Math.abs(meso) + " mesos"); + storage.sendMeso(c); } else { c.announce(MaplePacketCreator.enableActions()); return; } - storage.sendMeso(c); - } else if (mode == 8) {// close + } else if (mode == 8) {// close... unless the player decides to enter cash shop! storage.close(); } } finally { diff --git a/src/constants/ScriptableNPCConstants.java b/src/constants/ScriptableNPCConstants.java index 14c27aaf1e..eac4db3caf 100644 --- a/src/constants/ScriptableNPCConstants.java +++ b/src/constants/ScriptableNPCConstants.java @@ -16,7 +16,7 @@ import tools.Pair; public class ScriptableNPCConstants { public static final Set> SCRIPTABLE_NPCS = new HashSet>(){{ - add(new Pair<>(9200000, "Cody")); + //add(new Pair<>(9200000, "Cody")); add(new Pair<>(9001105, "Grandpa Moon Bunny")); }}; diff --git a/src/constants/ServerConstants.java b/src/constants/ServerConstants.java index bfc9936848..c3887e84e3 100644 --- a/src/constants/ServerConstants.java +++ b/src/constants/ServerConstants.java @@ -93,8 +93,8 @@ public class ServerConstants { public static final boolean USE_ENFORCE_JOB_LEVEL_RANGE = false;//Caps the player level on the minimum required to advance their current jobs. public static final boolean USE_ENFORCE_JOB_SP_RANGE = false; //Caps the player SP level on the total obtainable by their current jobs. After changing jobs, missing SP will be retrieved. public static final boolean USE_ENFORCE_ITEM_SUGGESTION = false;//Forces the Owl of Minerva and the Cash Shop to always display the defined item array instead of those featured by the players. - public static final boolean USE_ENFORCE_UNMERCHABLE_CASH = true;//Forces players to not sell CASH items via merchants. - public static final boolean USE_ENFORCE_UNMERCHABLE_PET = false; //Forces players to not sell pets via merchants. (since non-named pets gets dirty name and other possible DB-related issues) + public static final boolean USE_ENFORCE_UNMERCHABLE_CASH = true;//Forces players to not sell CASH items via merchants, drops of it disappears. + public static final boolean USE_ENFORCE_UNMERCHABLE_PET = true; //Forces players to not sell pets via merchants, drops of it disappears. (since non-named pets gets dirty name and other possible DB-related issues) public static final boolean USE_ENFORCE_MERCHANT_SAVE = true; //Forces automatic DB save on merchant owners, at every item movement on shop. public static final boolean USE_ENFORCE_MDOOR_POSITION = false; //Forces mystic door to be spawned near spawnpoints. public static final boolean USE_SPAWN_CLEAN_MDOOR = false; //Makes mystic doors to be spawned without deploy animation. This clears disconnecting issues that may happen when trying to cancel doors a couple seconds after deployment. @@ -309,6 +309,9 @@ public class ServerConstants { public static final int BUYBACK_RETURN_MINUTES = 1; //Sets the maximum amount of time the player can wait before decide to buyback. public static final int BUYBACK_COOLDOWN_MINUTES = 7; //Sets the time the player must wait before using buyback again. + // Login timeout by shavit + public static long TIMEOUT_DURATION = 3600000L; // Kicks clients who don't send any packet to the game server in due time (in millisseconds). + //Event End Timestamp public static final long EVENT_END_TIMESTAMP = 1428897600000L; diff --git a/src/constants/skills/Aran.java b/src/constants/skills/Aran.java index 7a61ceeddb..7a78c8ff69 100644 --- a/src/constants/skills/Aran.java +++ b/src/constants/skills/Aran.java @@ -35,6 +35,7 @@ public class Aran { public static final int FREEZE_STANDING = 21121003; public static final int SNOW_CHARGE = 21111005; public static final int HEROS_WILL = 21121008; + public static final int HIGH_DEFENSE = 21120004; public static final int BODY_PRESSURE = 21101003; public static final int COMBO_DRAIN = 21100005; public static final int COMBO_SMASH = 21100004; diff --git a/src/net/MapleServerHandler.java b/src/net/MapleServerHandler.java index 58a43e75ed..6c9e4c2021 100644 --- a/src/net/MapleServerHandler.java +++ b/src/net/MapleServerHandler.java @@ -198,6 +198,7 @@ public class MapleServerHandler extends IoHandlerAdapter { FilePrinter.printError(FilePrinter.PACKET_HANDLER + packetHandler.getClass().getName() + ".txt", t, "Error for " + (client.getPlayer() == null ? "" : "player ; " + client.getPlayer() + " on map ; " + client.getPlayer().getMapId() + " - ") + "account ; " + client.getAccountName() + "\r\n" + slea.toString()); //client.announce(MaplePacketCreator.enableActions());//bugs sometimes } + client.updateLastPacket(); } } diff --git a/src/net/server/Server.java b/src/net/server/Server.java index d61f84c94c..5093c45445 100644 --- a/src/net/server/Server.java +++ b/src/net/server/Server.java @@ -54,6 +54,7 @@ import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import net.MapleServerHandler; import net.mina.MapleCodecFactory; import net.server.channel.Channel; +import net.server.coordinator.MapleSessionCoordinator; import net.server.guild.MapleAlliance; import net.server.guild.MapleGuild; import net.server.guild.MapleGuildCharacter; @@ -70,6 +71,7 @@ import net.server.worker.RankingLoginWorker; import net.server.worker.ReleaseLockWorker; import net.server.worker.RespawnWorker; import net.server.world.World; +import net.server.world.announcer.MapleAnnouncerCoordinator; import org.apache.mina.core.buffer.IoBuffer; import org.apache.mina.core.buffer.SimpleBufferAllocator; @@ -94,7 +96,6 @@ import constants.GameConstants; import constants.OpcodeConstants; import constants.ServerConstants; import java.util.TimeZone; -import net.server.coordinator.MapleSessionCoordinator; import server.CashShop.CashItemFactory; import server.MapleSkillbookInformationProvider; import server.ThreadManager; @@ -949,12 +950,17 @@ public class Server { System.exit(0); } + MapleAnnouncerCoordinator.getInstance().init(); + System.out.println(); + if(ServerConstants.USE_FAMILY_SYSTEM) { timeToTake = System.currentTimeMillis(); MapleFamily.loadAllFamilies(); System.out.println("Families loaded in " + ((System.currentTimeMillis() - timeToTake) / 1000.0) + " seconds\r\n"); } - + + System.out.println(); + acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 30); acceptor.setHandler(new MapleServerHandler()); try { @@ -964,7 +970,7 @@ public class Server { } System.out.println("Listening on port 8484\r\n\r\n"); - + System.out.println("HeavenMS is now online.\r\n"); online = true; @@ -1446,6 +1452,11 @@ public class Server { } finally { lgnWLock.unlock(); } + + for (World wserv : this.getWorlds()) { + wserv.clearAccountCharacterView(accountid); + wserv.unregisterAccountStorage(accountid); + } } */ @@ -1708,6 +1719,32 @@ public class Server { return gmLevel; } + public void loadAccountStorages(MapleClient c) { + int accountId = c.getAccID(); + Set accWorlds = new HashSet<>(); + lgnWLock.lock(); + try { + Set chars = accountChars.get(accountId); + + for (Integer cid : chars) { + Integer worldid = worldChars.get(cid); + if (worldid != null) { + accWorlds.add(worldid); + } + } + } finally { + lgnWLock.unlock(); + } + + List worldList = this.getWorlds(); + for (Integer worldid : accWorlds) { + if (worldid < worldList.size()) { + World wserv = worldList.get(worldid); + wserv.registerAccountStorage(accountId); + } + } + } + private static String getRemoteIp(IoSession session) { return MapleSessionCoordinator.getSessionRemoteAddress(session); } diff --git a/src/net/server/audit/locks/MonitoredLockType.java b/src/net/server/audit/locks/MonitoredLockType.java index 4d0a8bd7e6..b1662d04c7 100644 --- a/src/net/server/audit/locks/MonitoredLockType.java +++ b/src/net/server/audit/locks/MonitoredLockType.java @@ -36,6 +36,7 @@ public enum MonitoredLockType { CHARACTER_STA, CLIENT, CLIENT_ENCODER, + CLIENT_SESSION, CLIENT_LOGIN, BOOK, ITEM, diff --git a/src/net/server/channel/handlers/ChangeMapHandler.java b/src/net/server/channel/handlers/ChangeMapHandler.java index f12e865ac7..6e9658b424 100644 --- a/src/net/server/channel/handlers/ChangeMapHandler.java +++ b/src/net/server/channel/handlers/ChangeMapHandler.java @@ -30,7 +30,7 @@ import client.MapleCharacter; import client.MapleClient; import client.inventory.MapleInventoryType; import client.inventory.manipulator.MapleInventoryManipulator; -import server.MaplePortal; +import server.maps.MaplePortal; import server.MapleTrade; import server.maps.MapleMap; import tools.FilePrinter; diff --git a/src/net/server/channel/handlers/ChangeMapSpecialHandler.java b/src/net/server/channel/handlers/ChangeMapSpecialHandler.java index fdafc0d709..1c1f6368df 100644 --- a/src/net/server/channel/handlers/ChangeMapSpecialHandler.java +++ b/src/net/server/channel/handlers/ChangeMapSpecialHandler.java @@ -23,7 +23,7 @@ package net.server.channel.handlers; import client.MapleClient; import net.AbstractMaplePacketHandler; -import server.MaplePortal; +import server.maps.MaplePortal; import server.MapleTrade; import server.MapleTrade.TradeResult; import tools.MaplePacketCreator; diff --git a/src/net/server/channel/handlers/HiredMerchantRequest.java b/src/net/server/channel/handlers/HiredMerchantRequest.java index ab3a75e6e1..19e7f4dc35 100644 --- a/src/net/server/channel/handlers/HiredMerchantRequest.java +++ b/src/net/server/channel/handlers/HiredMerchantRequest.java @@ -29,7 +29,7 @@ import client.MapleClient; import constants.GameConstants; import java.awt.Point; import net.AbstractMaplePacketHandler; -import server.MaplePortal; +import server.maps.MaplePortal; import server.maps.MapleMapObject; import server.maps.MapleMapObjectType; import server.maps.MaplePlayerShop; diff --git a/src/net/server/channel/handlers/MonsterCarnivalHandler.java b/src/net/server/channel/handlers/MonsterCarnivalHandler.java index 9c5aaace66..31b48abee1 100644 --- a/src/net/server/channel/handlers/MonsterCarnivalHandler.java +++ b/src/net/server/channel/handlers/MonsterCarnivalHandler.java @@ -101,16 +101,19 @@ public final class MonsterCarnivalHandler extends AbstractMaplePacketHandler { final MapleDisease dis = skill.getDisease(); MapleParty enemies = c.getPlayer().getParty().getEnemy(); if (skill.targetsAll) { - int chanceAcerto = 0; + int hitChance = 0; if (dis.getDisease() == 121 || dis.getDisease() == 122 || dis.getDisease() == 125 || dis.getDisease() == 126) { - chanceAcerto = (int) (Math.random() * 100); + hitChance = (int) (Math.random() * 100); } - if (chanceAcerto <= 80) { - for (MaplePartyCharacter chrS : enemies.getPartyMembers()) { - if (dis == null) { - chrS.getPlayer().dispel(); - } else { - chrS.getPlayer().giveDebuff(dis, skill.getSkill()); + if (hitChance <= 80) { + for (MaplePartyCharacter mpc : enemies.getPartyMembers()) { + MapleCharacter mc = mpc.getPlayer(); + if (mc != null) { + if (dis == null) { + mc.dispel(); + } else { + mc.giveDebuff(dis, skill.getSkill()); + } } } } diff --git a/src/net/server/channel/handlers/PartyOperationHandler.java b/src/net/server/channel/handlers/PartyOperationHandler.java index 17a8cd1da6..fcc1ba9da8 100644 --- a/src/net/server/channel/handlers/PartyOperationHandler.java +++ b/src/net/server/channel/handlers/PartyOperationHandler.java @@ -53,7 +53,7 @@ public final class PartyOperationHandler extends AbstractMaplePacketHandler { } case 2: { // leave/disband if (party != null) { - List partymembers = player.getPartyMembers(); + List partymembers = player.getPartyMembersOnline(); MapleParty.leaveParty(party, c); player.updatePartySearchAvailability(true); diff --git a/src/net/server/channel/handlers/PlayerInteractionHandler.java b/src/net/server/channel/handlers/PlayerInteractionHandler.java index 463dcb4f18..9daa2e91bd 100644 --- a/src/net/server/channel/handlers/PlayerInteractionHandler.java +++ b/src/net/server/channel/handlers/PlayerInteractionHandler.java @@ -34,7 +34,7 @@ import constants.ServerConstants; import net.AbstractMaplePacketHandler; import server.MapleItemInformationProvider; -import server.MaplePortal; +import server.maps.MaplePortal; import server.MapleTrade; import constants.GameConstants; import server.maps.FieldLimit; diff --git a/src/net/server/channel/handlers/PlayerLoggedinHandler.java b/src/net/server/channel/handlers/PlayerLoggedinHandler.java index e41ecce646..ba04ceb46f 100644 --- a/src/net/server/channel/handlers/PlayerLoggedinHandler.java +++ b/src/net/server/channel/handlers/PlayerLoggedinHandler.java @@ -53,6 +53,7 @@ import client.MapleDisease; import client.MapleFamily; import client.MapleFamilyEntry; import client.MapleKeyBinding; +import client.MapleMount; import client.SkillFactory; import client.inventory.Equip; import client.inventory.Item; @@ -352,8 +353,14 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { if (newcomer) { for(MaplePet pet : player.getPets()) { - if(pet != null) + if(pet != null) { wserv.registerPetHunger(player, player.getPetIndex(pet)); + } + } + + MapleMount mount = player.getMount(); // thanks Ari for noticing a scenario where Silver Mane quest couldn't be started + if (mount.getItemId() != 0) { + player.announce(MaplePacketCreator.updateMount(player.getId(), mount, false)); } player.reloadQuestExpirations(); diff --git a/src/net/server/channel/handlers/UseCashItemHandler.java b/src/net/server/channel/handlers/UseCashItemHandler.java index c821c80020..4be8c93fc0 100644 --- a/src/net/server/channel/handlers/UseCashItemHandler.java +++ b/src/net/server/channel/handlers/UseCashItemHandler.java @@ -36,6 +36,7 @@ import client.inventory.ModifyInventory; import client.inventory.manipulator.MapleInventoryManipulator; import client.inventory.manipulator.MapleKarmaManipulator; import client.processor.AssignAPProcessor; +import client.processor.AssignSPProcessor; import client.processor.DueyProcessor; import constants.GameConstants; import constants.ItemConstants; @@ -156,6 +157,10 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler { if (itemId > 5050000) { int SPTo = slea.readInt(); + if (!AssignSPProcessor.canSPAssign(c, SPTo)) { // exploit found thanks to Arnah + return; + } + int SPFrom = slea.readInt(); Skill skillSPTo = SkillFactory.getSkill(SPTo); Skill skillSPFrom = SkillFactory.getSkill(SPFrom); diff --git a/src/net/server/coordinator/matchchecker/listener/MatchCheckerCPQChallenge.java b/src/net/server/coordinator/matchchecker/listener/MatchCheckerCPQChallenge.java index b0c9cf0738..8941dcc587 100644 --- a/src/net/server/coordinator/matchchecker/listener/MatchCheckerCPQChallenge.java +++ b/src/net/server/coordinator/matchchecker/listener/MatchCheckerCPQChallenge.java @@ -71,7 +71,9 @@ public class MatchCheckerCPQChallenge implements MatchCheckerListenerRecipe { List chrMembers = new LinkedList<>(); for (MaplePartyCharacter mpc : chr.getParty().getMembers()) { - chrMembers.add(mpc); + if (mpc.isOnline()) { + chrMembers.add(mpc); + } } if (message.contentEquals("cpq1")) { diff --git a/src/net/server/guild/MapleAlliance.java b/src/net/server/guild/MapleAlliance.java index dffd7a3c27..2a696b4b38 100644 --- a/src/net/server/guild/MapleAlliance.java +++ b/src/net/server/guild/MapleAlliance.java @@ -91,8 +91,13 @@ public class MapleAlliance { List mcl = new LinkedList<>(); for(MaplePartyCharacter mpc: party.getMembers()) { - if(mpc.getPlayer().getGuildRank() == 1 && mpc.getPlayer().getMapId() == party.getLeader().getPlayer().getMapId()) - mcl.add(mpc.getPlayer()); + MapleCharacter chr = mpc.getPlayer(); + if (chr != null) { + MapleCharacter lchr = party.getLeader().getPlayer(); + if (chr.getGuildRank() == 1 && lchr != null && chr.getMapId() == lchr.getMapId()) { + mcl.add(chr); + } + } } if(!mcl.isEmpty() && !mcl.get(0).isPartyLeader()) { diff --git a/src/net/server/worker/TimeoutWorker.java b/src/net/server/worker/TimeoutWorker.java new file mode 100644 index 0000000000..6a23f441e8 --- /dev/null +++ b/src/net/server/worker/TimeoutWorker.java @@ -0,0 +1,30 @@ +package net.server.worker; + +import client.MapleCharacter; +import constants.ServerConstants; +import net.server.world.World; +import tools.FilePrinter; + +import java.util.Collection; + +/** + * + * @author Shavit + */ +public class TimeoutWorker extends BaseWorker implements Runnable { + @Override + public void run() { + long time = System.currentTimeMillis(); + Collection chars = wserv.getPlayerStorage().getAllCharacters(); + for(MapleCharacter chr : chars) { + if(time - chr.getClient().getLastPacket() > ServerConstants.TIMEOUT_DURATION) { + FilePrinter.print(FilePrinter.DCS + chr.getClient().getAccountName(), chr.getName() + " auto-disconnected due to inactivity."); + chr.getClient().disconnect(true, chr.getCashShop().isOpened()); + } + } + } + + public TimeoutWorker(World world) { + super(world); + } +} diff --git a/src/net/server/world/MapleParty.java b/src/net/server/world/MapleParty.java index 728cfbe4a4..13dadd62cf 100644 --- a/src/net/server/world/MapleParty.java +++ b/src/net/server/world/MapleParty.java @@ -144,6 +144,23 @@ public class MapleParty { lock.unlock(); } } + + public List getPartyMembersOnline() { + lock.lock(); + try { + List ret = new LinkedList<>(); + + for (MaplePartyCharacter mpc : members) { + if (mpc.isOnline()) { + ret.add(mpc); + } + } + + return ret; + } finally { + lock.unlock(); + } + } // used whenever entering PQs: will draw every party member that can attempt a target PQ while ingnoring those unfit. public Collection getEligibleMembers() { @@ -452,7 +469,7 @@ public class MapleParty { if (expelled != null) { MapleCharacter emc = expelled.getPlayer(); if(emc != null) { - List partyMembers = emc.getPartyMembers(); + List partyMembers = emc.getPartyMembersOnline(); MapleMap map = emc.getMap(); if(map != null) map.removePartyMember(emc); diff --git a/src/net/server/world/MaplePartyCharacter.java b/src/net/server/world/MaplePartyCharacter.java index 2d0f677925..cf08d9568e 100644 --- a/src/net/server/world/MaplePartyCharacter.java +++ b/src/net/server/world/MaplePartyCharacter.java @@ -82,6 +82,9 @@ public class MaplePartyCharacter { public void setOnline(boolean online) { this.online = online; + if (!online) { + this.character = null; // thanks Feras for noticing offline party members retaining whole character object unnecessarily + } } public int getMapId() { diff --git a/src/net/server/world/World.java b/src/net/server/world/World.java index 05572d68cc..e1179c403f 100644 --- a/src/net/server/world/World.java +++ b/src/net/server/world/World.java @@ -60,12 +60,32 @@ import java.util.WeakHashMap; import java.util.concurrent.ScheduledFuture; import scripting.event.EventInstanceManager; +import server.MapleStorage; import server.TimerManager; +import server.maps.AbstractMapleMapObject; import server.maps.MapleHiredMerchant; import server.maps.MapleMap; +import server.maps.MapleMiniDungeon; +import server.maps.MapleMiniDungeonInfo; import server.maps.MaplePlayerShop; import server.maps.MaplePlayerShopItem; -import server.maps.AbstractMapleMapObject; +import net.server.PlayerStorage; +import net.server.Server; +import net.server.audit.LockCollector; +import net.server.audit.locks.MonitoredLockType; +import net.server.audit.locks.MonitoredReentrantLock; +import net.server.audit.locks.MonitoredReentrantReadWriteLock; +import net.server.audit.locks.factory.MonitoredReentrantLockFactory; +import net.server.channel.Channel; +import net.server.channel.CharacterIdChannelPair; +import net.server.coordinator.MapleInviteCoordinator; +import net.server.coordinator.MapleInviteCoordinator.InviteResult; +import net.server.coordinator.MapleInviteCoordinator.InviteType; +import net.server.coordinator.MapleMatchCheckerCoordinator; +import net.server.coordinator.MaplePartySearchCoordinator; +import net.server.guild.MapleGuild; +import net.server.guild.MapleGuildCharacter; +import net.server.guild.MapleGuildSummary; import net.server.worker.CharacterAutosaverWorker; import net.server.worker.FamilyDailyResetWorker; import net.server.worker.FishingWorker; @@ -76,30 +96,13 @@ import net.server.worker.PartySearchWorker; import net.server.worker.PetFullnessWorker; import net.server.worker.ServerMessageWorker; import net.server.worker.TimedMapObjectWorker; +import net.server.worker.TimeoutWorker; import net.server.worker.WeddingReservationWorker; -import net.server.PlayerStorage; -import net.server.Server; -import net.server.audit.LockCollector; -import net.server.channel.Channel; -import net.server.channel.CharacterIdChannelPair; -import net.server.guild.MapleGuild; -import net.server.guild.MapleGuildCharacter; -import net.server.guild.MapleGuildSummary; +import net.server.world.announcer.MapleAnnouncerCoordinator; import tools.DatabaseConnection; import tools.MaplePacketCreator; import tools.Pair; import tools.packets.Fishing; -import net.server.audit.locks.MonitoredLockType; -import net.server.audit.locks.MonitoredReentrantLock; -import net.server.audit.locks.MonitoredReentrantReadWriteLock; -import net.server.audit.locks.factory.MonitoredReentrantLockFactory; -import net.server.coordinator.MapleInviteCoordinator; -import net.server.coordinator.MapleInviteCoordinator.InviteResult; -import net.server.coordinator.MapleInviteCoordinator.InviteType; -import net.server.coordinator.MapleMatchCheckerCoordinator; -import net.server.coordinator.MaplePartySearchCoordinator; -import server.maps.MapleMiniDungeon; -import server.maps.MapleMiniDungeonInfo; /** * @@ -122,12 +125,14 @@ public class World { private PlayerStorage players = new PlayerStorage(); private MapleMatchCheckerCoordinator matchChecker = new MapleMatchCheckerCoordinator(); private MaplePartySearchCoordinator partySearch = new MaplePartySearchCoordinator(); + private MapleAnnouncerCoordinator announcer = new MapleAnnouncerCoordinator(); private final ReentrantReadWriteLock chnLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.WORLD_CHANNELS, true); private ReadLock chnRLock = chnLock.readLock(); private WriteLock chnWLock = chnLock.writeLock(); private Map> accountChars = new HashMap<>(); + private Map accountStorages = new HashMap<>(); private MonitoredReentrantLock accountCharsLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.WORLD_CHARS, true); private Set queuedGuilds = new HashSet<>(); @@ -178,6 +183,7 @@ public class World { private ScheduledFuture mapOwnershipSchedule; private ScheduledFuture fishingSchedule; private ScheduledFuture partySearchSchedule; + private ScheduledFuture timeoutSchedule; public World(int world, int flag, String eventmsg, int exprate, int droprate, int bossdroprate, int mesorate, int questrate, int travelrate, int fishingrate) { this.id = world; @@ -211,12 +217,15 @@ public class World { mapOwnershipSchedule = tman.register(new MapOwnershipWorker(this), 20 * 1000, 20 * 1000); fishingSchedule = tman.register(new FishingWorker(this), 10 * 1000, 10 * 1000); partySearchSchedule = tman.register(new PartySearchWorker(this), 10 * 1000, 10 * 1000); + timeoutSchedule = tman.register(new TimeoutWorker(this), 10 * 1000, 10 * 1000); if(ServerConstants.USE_FAMILY_SYSTEM) { long timeLeft = Server.getTimeLeftForNextDay(); FamilyDailyResetWorker.resetEntitlementUsage(this); tman.register(new FamilyDailyResetWorker(this), 24 * 60 * 60 * 1000, timeLeft); } + + announcer.init(); } public int getChannelsSize() { @@ -440,6 +449,41 @@ public class World { } } + public void clearAccountCharacterView(Integer accountId) { + accountCharsLock.lock(); + try { + SortedMap accChars = accountChars.remove(accountId); + if (accChars != null) { + accChars.clear(); + } + } finally { + accountCharsLock.unlock(); + } + } + + public void registerAccountStorage(Integer accountId) { + MapleStorage storage = MapleStorage.loadOrCreateFromDB(accountId, this.id); + accountCharsLock.lock(); + try { + accountStorages.put(accountId, storage); + } finally { + accountCharsLock.unlock(); + } + } + + public void unregisterAccountStorage(Integer accountId) { + accountCharsLock.lock(); + try { + accountStorages.remove(accountId); + } finally { + accountCharsLock.unlock(); + } + } + + public MapleStorage getAccountStorage(Integer accountId) { + return accountStorages.get(accountId); + } + private static List>> getSortedAccountCharacterView(Map> map) { List>> list = new ArrayList<>(map.size()); for(Entry> e : map.entrySet()) { @@ -512,6 +556,10 @@ public class World { public MaplePartySearchCoordinator getPartySearchCoordinator() { return partySearch; } + + public MapleAnnouncerCoordinator getAnnouncerCoordinator() { + return announcer; + } public void addPlayer(MapleCharacter chr) { players.addPlayer(chr); @@ -909,7 +957,7 @@ public class World { chr.setParty(party); chr.setMPC(partychar); } - chr.getClient().announce(MaplePacketCreator.updateParty(chr.getClient().getChannel(), party, operation, target)); + chr.announce(MaplePacketCreator.updateParty(chr.getClient().getChannel(), party, operation, target)); } } switch (operation) { @@ -917,7 +965,7 @@ public class World { case EXPEL: MapleCharacter chr = getPlayerStorage().getCharacterById(target.getId()); if (chr != null) { - chr.getClient().announce(MaplePacketCreator.updateParty(chr.getClient().getChannel(), party, operation, target)); + chr.announce(MaplePacketCreator.updateParty(chr.getClient().getChannel(), party, operation, target)); chr.setParty(null); chr.setMPC(null); } @@ -948,25 +996,25 @@ public class World { break; case CHANGE_LEADER: MapleCharacter mc = party.getLeader().getPlayer(); - MapleCharacter newLeader = target.getPlayer(); - - EventInstanceManager eim = mc.getEventInstance(); - - if(eim != null && eim.isEventLeader(mc)) { - eim.changedLeader(newLeader); - } else { - int oldLeaderMapid = mc.getMapId(); - - if (MapleMiniDungeonInfo.isDungeonMap(oldLeaderMapid)) { - if (oldLeaderMapid != newLeader.getMapId()) { - MapleMiniDungeon mmd = newLeader.getClient().getChannelServer().getMiniDungeon(oldLeaderMapid); - if(mmd != null) { - mmd.close(); + if (mc != null) { + EventInstanceManager eim = mc.getEventInstance(); + + if(eim != null && eim.isEventLeader(mc)) { + eim.changedLeader(target); + } else { + int oldLeaderMapid = mc.getMapId(); + + if (MapleMiniDungeonInfo.isDungeonMap(oldLeaderMapid)) { + if (oldLeaderMapid != target.getMapId()) { + MapleMiniDungeon mmd = mc.getClient().getChannelServer().getMiniDungeon(oldLeaderMapid); + if(mmd != null) { + mmd.close(); + } } } } + party.setLeader(target); } - party.setLeader(target); break; default: System.out.println("Unhandled updateParty operation " + operation.name()); @@ -2114,9 +2162,15 @@ public class World { partySearchSchedule = null; } + if(timeoutSchedule != null) { + timeoutSchedule.cancel(false); + timeoutSchedule = null; + } + players.disconnectAll(); players = null; + announcer.shutdown(); clearWorldData(); System.out.println("Finished shutting down world " + id + "\r\n"); } diff --git a/src/net/server/world/announcer/MapleAnnouncerCoordinator.java b/src/net/server/world/announcer/MapleAnnouncerCoordinator.java new file mode 100644 index 0000000000..92cb1d0d00 --- /dev/null +++ b/src/net/server/world/announcer/MapleAnnouncerCoordinator.java @@ -0,0 +1,83 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2019 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.world.announcer; + +import java.util.concurrent.ConcurrentLinkedQueue; +import org.apache.mina.core.session.IoSession; +import net.server.world.announcer.MapleAnnouncerEntryPool.SessionPacket; + +/** + * + * @author Ronan + */ +public class MapleAnnouncerCoordinator { + + private static final MapleAnnouncerCoordinator instance = new MapleAnnouncerCoordinator(); + + public static MapleAnnouncerCoordinator getInstance() { // world-agnostic Announcer coordinator + return instance; + } + + private MapleAnnouncerEntryPool pool = new MapleAnnouncerEntryPool(); + private ConcurrentLinkedQueue queue = new ConcurrentLinkedQueue<>(); + private Thread t; + + public void append(IoSession io, byte[] packet) { + queue.offer(pool.getSessionPacket(io, packet)); + } + + public void init() { + final Runnable r = new Runnable() { + @Override + public void run() { + while (!Thread.interrupted()) { + try { + SessionPacket p = queue.poll(); + if (p != null) { + IoSession session = p.getSession(); + byte[] packet = p.getPacket(); + + session.write(packet); + pool.returnSessionPacket(p); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } + }; + + t = new Thread(r); + t.start(); + } + + public void shutdown() { + t.interrupt(); + try { + t.join(); + } catch (InterruptedException ie) { + ie.printStackTrace(); + } + + queue.clear(); + pool.shutdown(); + } + +} diff --git a/src/net/server/world/announcer/MapleAnnouncerEntryPool.java b/src/net/server/world/announcer/MapleAnnouncerEntryPool.java new file mode 100644 index 0000000000..8193373223 --- /dev/null +++ b/src/net/server/world/announcer/MapleAnnouncerEntryPool.java @@ -0,0 +1,74 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2019 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.world.announcer; + +import java.util.concurrent.ConcurrentLinkedQueue; +import org.apache.mina.core.session.IoSession; + +/** + * + * @author Ronan + */ +public class MapleAnnouncerEntryPool { + + private ConcurrentLinkedQueue instancedPairs = new ConcurrentLinkedQueue<>(); + private final static int initialCount = 20000; // initial length of the instanced pool + + public MapleAnnouncerEntryPool() { + for (int i = 0; i < initialCount; i++) { + instancedPairs.offer(new SessionPacket()); + } + } + + public class SessionPacket { + + private IoSession session; + private byte[] packet; + + public IoSession getSession() { + return session; + } + + public byte[] getPacket() { + return packet; + } + + } + + public SessionPacket getSessionPacket(IoSession session, byte[] packet) { + SessionPacket sp = instancedPairs.poll(); + if (sp == null) { + sp = new SessionPacket(); + } + + sp.session = session; + sp.packet = packet; + return sp; + } + + public void returnSessionPacket(SessionPacket sp) { + instancedPairs.offer(sp); + } + + public void shutdown() { + instancedPairs.clear(); + } + +} diff --git a/src/scripting/AbstractPlayerInteraction.java b/src/scripting/AbstractPlayerInteraction.java index 1aea538343..6c51a4183d 100644 --- a/src/scripting/AbstractPlayerInteraction.java +++ b/src/scripting/AbstractPlayerInteraction.java @@ -139,28 +139,15 @@ public class AbstractPlayerInteraction { } public void warpParty(int id, int portalId, int fromMinId, int fromMaxId) { - for (MapleCharacter mc : getPartyMembers()) { - if(mc.getMapId() >= fromMinId && mc.getMapId() <= fromMaxId) { - mc.changeMap(id, portalId); + for (MapleCharacter mc : this.getPlayer().getPartyMembersOnline()) { + if (mc.isLoggedinWorld()) { + if(mc.getMapId() >= fromMinId && mc.getMapId() <= fromMaxId) { + mc.changeMap(id, portalId); + } } } } - public List getPartyMembers() { - if (getPlayer().getParty() == null) { - return null; - } - List chars = new LinkedList<>(); - for (Channel channel : Server.getInstance().getChannelsFromWorld(getPlayer().getWorld())) { - for (MapleCharacter chr : channel.getPartyMembers(getPlayer().getParty())) { - if (chr != null) { - chars.add(chr); - } - } - } - return chars; - } - public MapleMap getWarpMap(int map) { return getPlayer().getWarpMap(map); } @@ -804,9 +791,14 @@ public class AbstractPlayerInteraction { removeAll(id); return; } - for (MaplePartyCharacter chr : getParty().getMembers()) { - if (chr != null && chr.isOnline() && chr.getPlayer().getClient() != null){ - removeAll(id, chr.getPlayer().getClient()); + for (MaplePartyCharacter mpc : getParty().getMembers()) { + if (mpc == null || !mpc.isOnline()) { + continue; + } + + MapleCharacter chr = mpc.getPlayer(); + if (chr != null && chr.getClient() != null){ + removeAll(id, chr.getClient()); } } } @@ -837,9 +829,14 @@ public class AbstractPlayerInteraction { if(instance) { for(MaplePartyCharacter member: party.getMembers()) { - if(member == null || !member.isOnline() || member.getPlayer().getEventInstance() == null){ + if(member == null || !member.isOnline()){ size--; - } + } else { + MapleCharacter chr = member.getPlayer(); + if(chr != null && chr.getEventInstance() == null) { + size--; + } + } } } @@ -849,6 +846,9 @@ public class AbstractPlayerInteraction { continue; } MapleCharacter player = member.getPlayer(); + if(player == null) { + continue; + } if(instance && player.getEventInstance() == null){ continue; // They aren't in the instance, don't give EXP. } diff --git a/src/scripting/AbstractScriptManager.java b/src/scripting/AbstractScriptManager.java index beacea5784..a2b2ce6d8e 100644 --- a/src/scripting/AbstractScriptManager.java +++ b/src/scripting/AbstractScriptManager.java @@ -31,7 +31,6 @@ import javax.script.*; import constants.ServerConstants; import jdk.nashorn.api.scripting.NashornScriptEngine; -import jdk.nashorn.api.scripting.NashornScriptEngineFactory; import tools.FilePrinter; /** diff --git a/src/scripting/event/EventInstanceManager.java b/src/scripting/event/EventInstanceManager.java index bce4b556da..109c4f4b40 100644 --- a/src/scripting/event/EventInstanceManager.java +++ b/src/scripting/event/EventInstanceManager.java @@ -21,7 +21,6 @@ */ package scripting.event; -import tools.Pair; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; @@ -39,7 +38,7 @@ import net.server.audit.locks.MonitoredReentrantReadWriteLock; import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import net.server.world.MapleParty; import net.server.world.MaplePartyCharacter; -import server.MaplePortal; +import server.maps.MaplePortal; import server.TimerManager; import server.MapleStatEffect; import server.expeditions.MapleExpedition; @@ -67,6 +66,7 @@ import server.ThreadManager; import server.life.MapleLifeFactory; import server.life.MapleNPC; import tools.MaplePacketCreator; +import tools.Pair; /** * @@ -366,9 +366,13 @@ public class EventInstanceManager { } public void registerParty(MapleParty party, MapleMap map) { - for (MaplePartyCharacter pc : party.getEligibleMembers()) { - MapleCharacter c = map.getCharacterById(pc.getId()); - registerPlayer(c); + for (MaplePartyCharacter mpc : party.getEligibleMembers()) { + if (mpc.isOnline()) { // thanks resinate + MapleCharacter chr = map.getCharacterById(mpc.getId()); + if (chr != null) { + registerPlayer(chr); + } + } } } @@ -468,7 +472,7 @@ public class EventInstanceManager { } catch (ScriptException | NoSuchMethodException ex) {} // optional } - public synchronized void changedLeader(final MapleCharacter ldr) { + public synchronized void changedLeader(final MaplePartyCharacter ldr) { try { invokeScriptFunction("changedLeader", EventInstanceManager.this, ldr); } catch (ScriptException | NoSuchMethodException ex) { diff --git a/src/scripting/event/EventManager.java b/src/scripting/event/EventManager.java index c2f89d3a55..bee4ba6e52 100644 --- a/src/scripting/event/EventManager.java +++ b/src/scripting/event/EventManager.java @@ -759,7 +759,7 @@ public class EventManager { return(new ArrayList<>()); } try { - Object p = iv.invokeFunction("getEligibleParty", party.getPartyMembers()); + Object p = iv.invokeFunction("getEligibleParty", party.getPartyMembersOnline()); if(p != null) { List lmpc; diff --git a/src/scripting/npc/NPCConversationManager.java b/src/scripting/npc/NPCConversationManager.java index c84b5e2517..c659335e00 100644 --- a/src/scripting/npc/NPCConversationManager.java +++ b/src/scripting/npc/NPCConversationManager.java @@ -684,8 +684,7 @@ public class NPCConversationManager extends AbstractPlayerInteraction { map = cs.getMapFactory().getMap(980000100 + 100 * field); mapExit = cs.getMapFactory().getMap(980000000); for (MaplePartyCharacter mpc : c.getPlayer().getParty().getMembers()) { - final MapleCharacter mc; - mc = ps.getCharacterById(mpc.getId()); + final MapleCharacter mc = ps.getCharacterById(mpc.getId()); if (mc != null) { mc.setChallenged(false); mc.changeMap(map, map.getPortal(0)); @@ -780,11 +779,15 @@ public class NPCConversationManager extends AbstractPlayerInteraction { PlayerStorage ps = c.getChannelServer().getPlayerStorage(); for (MaplePartyCharacter mpc : getPlayer().getParty().getMembers()) { MapleCharacter mc = ps.getCharacterById(mpc.getId()); - mc.setMonsterCarnival(null); + if (mc != null) { + mc.setMonsterCarnival(null); + } } for (MaplePartyCharacter mpc : challenger.getParty().getMembers()) { MapleCharacter mc = ps.getCharacterById(mpc.getId()); - mc.setMonsterCarnival(null); + if (mc != null) { + mc.setMonsterCarnival(null); + } } } catch (NullPointerException npe) { warpoutCPQLobby(lobbyMap); @@ -826,11 +829,15 @@ public class NPCConversationManager extends AbstractPlayerInteraction { PlayerStorage ps = c.getChannelServer().getPlayerStorage(); for (MaplePartyCharacter mpc : getPlayer().getParty().getMembers()) { MapleCharacter mc = ps.getCharacterById(mpc.getId()); - mc.setMonsterCarnival(null); + if (mc != null) { + mc.setMonsterCarnival(null); + } } for (MaplePartyCharacter mpc : challenger.getParty().getMembers()) { MapleCharacter mc = ps.getCharacterById(mpc.getId()); - mc.setMonsterCarnival(null); + if (mc != null) { + mc.setMonsterCarnival(null); + } } } catch (NullPointerException npe) { warpoutCPQLobby(lobbyMap); @@ -905,8 +912,7 @@ public class NPCConversationManager extends AbstractPlayerInteraction { mapExit = cs.getMapFactory().getMap(980030000); map = cs.getMapFactory().getMap(980031000 + 1000 * field); for (MaplePartyCharacter mpc : c.getPlayer().getParty().getMembers()) { - final MapleCharacter mc; - mc = ps.getCharacterById(mpc.getId()); + final MapleCharacter mc = ps.getCharacterById(mpc.getId()); if (mc != null) { mc.setChallenged(false); mc.changeMap(map, map.getPortal(0)); diff --git a/src/scripting/portal/PortalPlayerInteraction.java b/src/scripting/portal/PortalPlayerInteraction.java index 15b770555e..e878d20822 100644 --- a/src/scripting/portal/PortalPlayerInteraction.java +++ b/src/scripting/portal/PortalPlayerInteraction.java @@ -27,7 +27,7 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import scripting.AbstractPlayerInteraction; -import server.MaplePortal; +import server.maps.MaplePortal; import server.quest.MapleQuest; import tools.DatabaseConnection; import tools.MaplePacketCreator; diff --git a/src/scripting/portal/PortalScriptManager.java b/src/scripting/portal/PortalScriptManager.java index fb2717034e..137291e6e2 100644 --- a/src/scripting/portal/PortalScriptManager.java +++ b/src/scripting/portal/PortalScriptManager.java @@ -35,7 +35,7 @@ import javax.script.ScriptEngine; import javax.script.ScriptEngineFactory; import javax.script.ScriptEngineManager; import javax.script.ScriptException; -import server.MaplePortal; +import server.maps.MaplePortal; import tools.FilePrinter; public class PortalScriptManager { diff --git a/src/server/MapleStatEffect.java b/src/server/MapleStatEffect.java index a0c2dbac47..19cf04b4ca 100644 --- a/src/server/MapleStatEffect.java +++ b/src/server/MapleStatEffect.java @@ -21,7 +21,6 @@ */ package server; -import client.inventory.manipulator.MapleInventoryManipulator; import java.awt.Point; import java.awt.Rectangle; import java.util.ArrayList; @@ -40,6 +39,7 @@ import server.maps.MapleMap; import server.maps.MapleMapObject; import server.maps.MapleMapObjectType; import server.maps.MapleMist; +import server.maps.MaplePortal; import server.maps.MapleSummon; import server.maps.SummonMovementType; import tools.ArrayMap; @@ -55,6 +55,7 @@ import client.SkillFactory; import client.inventory.Item; import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; +import client.inventory.manipulator.MapleInventoryManipulator; import client.status.MonsterStatus; import client.status.MonsterStatusEffect; import constants.ItemConstants; @@ -1004,21 +1005,26 @@ public class MapleStatEffect { } } if (isShadowClaw()) { - int projectile = 0; MapleInventory use = applyto.getInventory(MapleInventoryType.USE); - for (int i = 1; i <= use.getSlotLimit(); i++) { // impose order... - Item item = use.getItem((short) i); - if (item != null) { - if (ItemConstants.isThrowingStar(item.getItemId()) && item.getQuantity() >= 200) { - projectile = item.getItemId(); - break; + use.lockInventory(); + try { + Item projectile = null; + for (int i = 1; i <= use.getSlotLimit(); i++) { // impose order... + Item item = use.getItem((short) i); + if (item != null) { + if (ItemConstants.isThrowingStar(item.getItemId()) && item.getQuantity() >= 200) { + projectile = item; + break; + } } } - } - if (projectile == 0) { - return false; - } else { - MapleInventoryManipulator.removeById(applyto.getClient(), MapleInventoryType.USE, projectile, 200, false, true); + if (projectile == null) { + return false; + } else { + MapleInventoryManipulator.removeFromSlot(applyto.getClient(), MapleInventoryType.USE, projectile.getPosition(), (short) 200, false, true); + } + } finally { + use.unlockInventory(); } } SummonMovementType summonMovementType = getSummonMovementType(); @@ -1125,8 +1131,11 @@ public class MapleStatEffect { } else if (cureDebuffs.size() > 0) { // by Drago-Dragohe4rt for (final MapleDisease debuff : cureDebuffs) { if (applyfrom.getParty() != null) { - for (MaplePartyCharacter chrs : applyfrom.getParty().getPartyMembers()) { - chrs.getPlayer().dispelDebuff(debuff); + for (MaplePartyCharacter mpc : applyfrom.getParty().getPartyMembers()) { + MapleCharacter chr = mpc.getPlayer(); + if (chr != null) { + chr.dispelDebuff(debuff); + } } } else { applyfrom.dispelDebuff(debuff); diff --git a/src/server/MapleStorage.java b/src/server/MapleStorage.java index 18d8c0edbb..b8efcadb5d 100644 --- a/src/server/MapleStorage.java +++ b/src/server/MapleStorage.java @@ -58,13 +58,12 @@ public class MapleStorage { private int meso; private byte slots; private Map> typeItems = new HashMap<>(); - private List items; + private List items = new LinkedList<>(); private Lock lock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.STORAGE, true); private MapleStorage(int id, byte slots, int meso) { this.id = id; this.slots = slots; - this.items = new LinkedList<>(); this.meso = meso; } @@ -119,15 +118,20 @@ public class MapleStorage { return slots; } - public synchronized boolean gainSlots(int slots) { - slots += this.slots; + public boolean gainSlots(int slots) { + lock.lock(); + try { + slots += this.slots; + + if (slots <= 48) { + this.slots = (byte) slots; + return true; + } - if (slots <= 48) { - this.slots = (byte) slots; - return true; + return false; + } finally { + lock.unlock(); } - - return false; } public void saveToDB(Connection con) { @@ -160,29 +164,33 @@ public class MapleStorage { } } - public Item takeOut(byte slot) { - Item ret; - + public boolean takeOut(Item item) { lock.lock(); try { - ret = items.remove(slot); + boolean ret = items.remove(item); - MapleInventoryType type = ret.getInventoryType(); + MapleInventoryType type = item.getInventoryType(); typeItems.put(type, new ArrayList<>(filterItems(type))); + + return ret; } finally { lock.unlock(); } - - return ret; } - public void store(Item item) { + public boolean store(Item item) { lock.lock(); try { + if (isFull()) { // thanks Optimist for noticing unrestricted amount of insertions here + return false; + } + items.add(item); MapleInventoryType type = item.getInventoryType(); typeItems.put(type, new ArrayList<>(filterItems(type))); + + return true; } finally { lock.unlock(); } @@ -196,7 +204,7 @@ public class MapleStorage { lock.unlock(); } } - + private List filterItems(MapleInventoryType type) { List storageItems = getItems(); List ret = new LinkedList<>(); @@ -208,7 +216,7 @@ public class MapleStorage { } return ret; } - + public byte getSlot(MapleInventoryType type, byte slot) { lock.lock(); try { @@ -225,7 +233,7 @@ public class MapleStorage { lock.unlock(); } } - + public void sendStorage(MapleClient c, int npcId) { if (c.getPlayer().getLevel() < 15){ c.getPlayer().dropMessage(1, "You may only use the storage once you have reached level 15."); @@ -287,7 +295,7 @@ public class MapleStorage { for (MapleInventoryType type : MapleInventoryType.values()) { typeItems.put(type, new ArrayList<>(items)); } - + c.announce(MaplePacketCreator.arrangeStorage(slots, items)); } finally { lock.unlock(); @@ -353,7 +361,7 @@ public class MapleStorage { lock.unlock(); } } - + public void close() { lock.lock(); try { @@ -362,4 +370,5 @@ public class MapleStorage { lock.unlock(); } } + } \ No newline at end of file diff --git a/src/server/life/MapleMonster.java b/src/server/life/MapleMonster.java index aef8cb8b50..48a4563342 100644 --- a/src/server/life/MapleMonster.java +++ b/src/server/life/MapleMonster.java @@ -703,7 +703,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { exp = Integer.MIN_VALUE; } - return (int) exp; + return (int) Math.round(exp); // operations on float point are not point-precise... thanks IxianMace for noticing -1 EXP gains } private void giveExpToCharacter(MapleCharacter attacker, Float personalExp, Float partyExp, boolean white, boolean hasPartySharers) { diff --git a/src/server/life/MobSkill.java b/src/server/life/MobSkill.java index 55c6e6436d..db3c18ffcd 100644 --- a/src/server/life/MobSkill.java +++ b/src/server/life/MobSkill.java @@ -331,7 +331,7 @@ public class MobSkill { if (lt != null && rb != null && skill) { int i = 0; for (MapleCharacter character : getPlayersInRange(monster, player)) { - if (!character.isActiveBuffedValue(2321005)) { // holy shield + if (!character.hasActiveBuff(2321005)) { // holy shield if (disease.equals(MapleDisease.SEDUCE)) { if (i < 10) { character.giveDebuff(MapleDisease.SEDUCE, this); diff --git a/src/server/maps/MapMonitor.java b/src/server/maps/MapMonitor.java index 7dc08243f7..0243aa5784 100644 --- a/src/server/maps/MapMonitor.java +++ b/src/server/maps/MapMonitor.java @@ -22,7 +22,6 @@ package server.maps; import java.util.concurrent.ScheduledFuture; -import server.MaplePortal; import server.TimerManager; public class MapMonitor { diff --git a/src/server/maps/MapleDoor.java b/src/server/maps/MapleDoor.java index abbb4c79e7..19533145ce 100644 --- a/src/server/maps/MapleDoor.java +++ b/src/server/maps/MapleDoor.java @@ -25,7 +25,6 @@ import java.awt.Point; import java.util.Collection; import tools.Pair; -import server.MaplePortal; import client.MapleCharacter; import constants.ServerConstants; diff --git a/src/server/maps/MapleGenericPortal.java b/src/server/maps/MapleGenericPortal.java index be8b169c87..cd0d6856a3 100644 --- a/src/server/maps/MapleGenericPortal.java +++ b/src/server/maps/MapleGenericPortal.java @@ -26,7 +26,6 @@ import client.MapleCharacter; import constants.GameConstants; import java.awt.Point; import scripting.portal.PortalScriptManager; -import server.MaplePortal; import tools.MaplePacketCreator; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.MonitoredReentrantLock; diff --git a/src/server/maps/MapleMap.java b/src/server/maps/MapleMap.java index e7503d2275..d8bdb16aec 100644 --- a/src/server/maps/MapleMap.java +++ b/src/server/maps/MapleMap.java @@ -68,7 +68,6 @@ import net.server.channel.Channel; import net.server.world.World; import scripting.map.MapScriptManager; import server.MapleItemInformationProvider; -import server.MaplePortal; import server.MapleStatEffect; import server.TimerManager; import server.events.gm.MapleCoconut; diff --git a/src/server/maps/MapleMapFactory.java b/src/server/maps/MapleMapFactory.java index 0c37f54d6e..55b3f2ba71 100644 --- a/src/server/maps/MapleMapFactory.java +++ b/src/server/maps/MapleMapFactory.java @@ -35,7 +35,6 @@ import provider.MapleData; import provider.MapleDataProvider; import provider.MapleDataProviderFactory; import provider.MapleDataTool; -import server.PortalFactory; import server.life.AbstractLoadedMapleLife; import server.life.MapleLifeFactory; import server.life.MapleMonster; @@ -163,7 +162,7 @@ public class MapleMapFactory { map.setFieldLimit(MapleDataTool.getInt(infoData.getChildByPath("fieldLimit"), 0)); map.setMobInterval((short) MapleDataTool.getInt(infoData.getChildByPath("createMobInterval"), 5000)); - PortalFactory portalFactory = new PortalFactory(); + MaplePortalFactory portalFactory = new MaplePortalFactory(); for (MapleData portal : mapData.getChildByPath("portal")) { map.addPortal(portalFactory.makePortal(MapleDataTool.getInt(portal.getChildByPath("pt")), portal)); } diff --git a/src/server/maps/MapleMapPortal.java b/src/server/maps/MapleMapPortal.java index 5e73f96258..b06f99b489 100644 --- a/src/server/maps/MapleMapPortal.java +++ b/src/server/maps/MapleMapPortal.java @@ -21,8 +21,6 @@ */ package server.maps; -import server.MaplePortal; - public class MapleMapPortal extends MapleGenericPortal { public MapleMapPortal() { super(MaplePortal.MAP_PORTAL); diff --git a/src/server/MaplePortal.java b/src/server/maps/MaplePortal.java similarity index 98% rename from src/server/MaplePortal.java rename to src/server/maps/MaplePortal.java index 23ff66043b..1cc9af4e41 100644 --- a/src/server/MaplePortal.java +++ b/src/server/maps/MaplePortal.java @@ -19,7 +19,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package server; +package server.maps; import java.awt.Point; import client.MapleClient; diff --git a/src/server/PortalFactory.java b/src/server/maps/MaplePortalFactory.java similarity index 96% rename from src/server/PortalFactory.java rename to src/server/maps/MaplePortalFactory.java index fdb59939bd..816a1f09a3 100644 --- a/src/server/PortalFactory.java +++ b/src/server/maps/MaplePortalFactory.java @@ -19,7 +19,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package server; +package server.maps; import java.awt.Point; @@ -28,10 +28,10 @@ import provider.MapleDataTool; import server.maps.MapleGenericPortal; import server.maps.MapleMapPortal; -public class PortalFactory { +public class MaplePortalFactory { private int nextDoorPortal; - public PortalFactory() { + public MaplePortalFactory() { nextDoorPortal = 0x80; } diff --git a/src/server/partyquest/MonsterCarnival.java b/src/server/partyquest/MonsterCarnival.java index 76630bb3dc..b86a3632c5 100644 --- a/src/server/partyquest/MonsterCarnival.java +++ b/src/server/partyquest/MonsterCarnival.java @@ -28,7 +28,7 @@ public class MonsterCarnival { private ScheduledFuture timer, effectTimer, respawnTask; private long startTime = 0; private int summonsR = 0, summonsB = 0, room = 0; - private MapleCharacter leader1, leader2, Grupo1, Grupo2; + private MapleCharacter leader1, leader2, team1, team2; private int redCP, blueCP, redTotalCP, blueTotalCP, redTimeupCP, blueTimeupCP; private boolean cpq1; @@ -60,7 +60,7 @@ public class MonsterCarnival { if (p1.getLeader().getId() == mc.getId()) { leader1 = mc; } - Grupo1 = mc; + team1 = mc; } } for (MaplePartyCharacter mpc : p2.getMembers()) { @@ -74,15 +74,21 @@ public class MonsterCarnival { if (p2.getLeader().getId() == mc.getId()) { leader2 = mc; } - Grupo2 = mc; + team2 = mc; } } - if (Grupo1 == null || Grupo2 == null) { - for (MaplePartyCharacter mpc : p2.getMembers()) { - mpc.getPlayer().dropMessage(5, LanguageConstants.getMessage(mpc.getPlayer(), LanguageConstants.CPQError)); + if (team1 == null || team2 == null) { + for (MaplePartyCharacter mpc : p1.getMembers()) { + MapleCharacter chr = mpc.getPlayer(); + if (chr != null) { + chr.dropMessage(5, LanguageConstants.getMessage(chr, LanguageConstants.CPQError)); + } } for (MaplePartyCharacter mpc : p2.getMembers()) { - mpc.getPlayer().dropMessage(5, LanguageConstants.getMessage(mpc.getPlayer(), LanguageConstants.CPQError)); + MapleCharacter chr = mpc.getPlayer(); + if (chr != null) { + chr.dropMessage(5, LanguageConstants.getMessage(chr, LanguageConstants.CPQError)); + } } return; } diff --git a/src/tools/FilePrinter.java b/src/tools/FilePrinter.java index b24c80ec8a..6d18b80eaa 100644 --- a/src/tools/FilePrinter.java +++ b/src/tools/FilePrinter.java @@ -50,6 +50,7 @@ public class FilePrinter { DELETED_CHAR = "players/deletedchars/", UNHANDLED_EVENT = "game/DoesNotExist.txt", SESSION = "players/Sessions.txt", + DCS = "game/disconnections/", EXPLOITS = "game/exploits/", STORAGE = "game/storage/", PACKET_LOGS = "game/packetlogs/", diff --git a/src/tools/MaplePacketCreator.java b/src/tools/MaplePacketCreator.java index 33adc01c24..6aefe95607 100644 --- a/src/tools/MaplePacketCreator.java +++ b/src/tools/MaplePacketCreator.java @@ -702,7 +702,8 @@ public class MaplePacketCreator { */ public static byte[] getAuthSuccess(MapleClient c) { Server.getInstance().loadAccountCharacters(c); // locks the login session until data is recovered from the cache or the DB. - + Server.getInstance().loadAccountStorages(c); + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.LOGIN_STATUS.getValue()); mplew.writeInt(0); @@ -8216,7 +8217,7 @@ public class MaplePacketCreator { mplew.writeInt(exp); return mplew.getPacket(); } - + public static byte[] spawnDragon(MapleDragon dragon) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.SPAWN_DRAGON.getValue()); diff --git a/wz/Quest.wz/Check.img.xml b/wz/Quest.wz/Check.img.xml index dda18b6107..4fe628a422 100644 --- a/wz/Quest.wz/Check.img.xml +++ b/wz/Quest.wz/Check.img.xml @@ -24238,7 +24238,7 @@ - + From 82d6d6d757e04736ab7212f522dd79f18854faa2 Mon Sep 17 00:00:00 2001 From: ronancpl Date: Fri, 30 Aug 2019 00:44:05 -0300 Subject: [PATCH 23/37] Io write Update Removed usage of busy loop in handling sent packets. --- src/client/MapleClient.java | 17 ++-- src/net/server/Server.java | 2 - .../server/audit/locks/MonitoredLockType.java | 1 + src/net/server/world/World.java | 9 -- .../announcer/MapleAnnouncerCoordinator.java | 83 ------------------- .../announcer/MapleAnnouncerEntryPool.java | 74 ----------------- 6 files changed, 8 insertions(+), 178 deletions(-) delete mode 100644 src/net/server/world/announcer/MapleAnnouncerCoordinator.java delete mode 100644 src/net/server/world/announcer/MapleAnnouncerEntryPool.java diff --git a/src/client/MapleClient.java b/src/client/MapleClient.java index 363fac19f5..415a87b722 100644 --- a/src/client/MapleClient.java +++ b/src/client/MapleClient.java @@ -61,7 +61,6 @@ import net.server.world.World; import org.apache.mina.core.session.IoSession; -import net.server.world.announcer.MapleAnnouncerCoordinator; import client.inventory.MapleInventoryType; import constants.GameConstants; import constants.ServerConstants; @@ -95,7 +94,6 @@ public class MapleClient { private MapleAESOFB receive; private final IoSession session; private MapleCharacter player; - private MapleAnnouncerCoordinator announcer = MapleAnnouncerCoordinator.getInstance(); private int channel = 1; private int accId = -4; private boolean loggedIn = false; @@ -120,6 +118,7 @@ public class MapleClient { private final Semaphore actionsSemaphore = new Semaphore(7); private final Lock lock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CLIENT, true); private final Lock encoderLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CLIENT_ENCODER, true); + private final Lock announcerLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CLIENT_ANNOUNCER, true); private static final Lock loginLocks[] = new Lock[200]; // thanks Masterrulax & try2hack for pointing out a bottleneck issue here private Calendar tempBanCalendar; private int votePoints; @@ -1143,13 +1142,6 @@ public class MapleClient { public void setWorld(int world) { this.world = world; - - World wserv = Server.getInstance().getWorld(world); - if (wserv != null) { - this.announcer = wserv.getAnnouncerCoordinator(); - } else { - this.announcer = MapleAnnouncerCoordinator.getInstance(); - } } public void pongReceived() { @@ -1475,7 +1467,12 @@ public class MapleClient { } public void announce(final byte[] packet) { // thanks GitGud for noticing an opportunity for improvement by overcoming "synchronized announce" - announcer.append(session, packet); + announcerLock.lock(); + try { + session.write(packet); + } finally { + announcerLock.unlock(); + } } public void announceHint(String msg, int length) { diff --git a/src/net/server/Server.java b/src/net/server/Server.java index 5093c45445..723e52b1cb 100644 --- a/src/net/server/Server.java +++ b/src/net/server/Server.java @@ -71,7 +71,6 @@ import net.server.worker.RankingLoginWorker; import net.server.worker.ReleaseLockWorker; import net.server.worker.RespawnWorker; import net.server.world.World; -import net.server.world.announcer.MapleAnnouncerCoordinator; import org.apache.mina.core.buffer.IoBuffer; import org.apache.mina.core.buffer.SimpleBufferAllocator; @@ -950,7 +949,6 @@ public class Server { System.exit(0); } - MapleAnnouncerCoordinator.getInstance().init(); System.out.println(); if(ServerConstants.USE_FAMILY_SYSTEM) { diff --git a/src/net/server/audit/locks/MonitoredLockType.java b/src/net/server/audit/locks/MonitoredLockType.java index b1662d04c7..64eed9e9f9 100644 --- a/src/net/server/audit/locks/MonitoredLockType.java +++ b/src/net/server/audit/locks/MonitoredLockType.java @@ -35,6 +35,7 @@ public enum MonitoredLockType { CHARACTER_EVT, CHARACTER_STA, CLIENT, + CLIENT_ANNOUNCER, CLIENT_ENCODER, CLIENT_SESSION, CLIENT_LOGIN, diff --git a/src/net/server/world/World.java b/src/net/server/world/World.java index e1179c403f..ddf1e8f7fd 100644 --- a/src/net/server/world/World.java +++ b/src/net/server/world/World.java @@ -98,7 +98,6 @@ import net.server.worker.ServerMessageWorker; import net.server.worker.TimedMapObjectWorker; import net.server.worker.TimeoutWorker; import net.server.worker.WeddingReservationWorker; -import net.server.world.announcer.MapleAnnouncerCoordinator; import tools.DatabaseConnection; import tools.MaplePacketCreator; import tools.Pair; @@ -125,7 +124,6 @@ public class World { private PlayerStorage players = new PlayerStorage(); private MapleMatchCheckerCoordinator matchChecker = new MapleMatchCheckerCoordinator(); private MaplePartySearchCoordinator partySearch = new MaplePartySearchCoordinator(); - private MapleAnnouncerCoordinator announcer = new MapleAnnouncerCoordinator(); private final ReentrantReadWriteLock chnLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.WORLD_CHANNELS, true); private ReadLock chnRLock = chnLock.readLock(); @@ -224,8 +222,6 @@ public class World { FamilyDailyResetWorker.resetEntitlementUsage(this); tman.register(new FamilyDailyResetWorker(this), 24 * 60 * 60 * 1000, timeLeft); } - - announcer.init(); } public int getChannelsSize() { @@ -557,10 +553,6 @@ public class World { return partySearch; } - public MapleAnnouncerCoordinator getAnnouncerCoordinator() { - return announcer; - } - public void addPlayer(MapleCharacter chr) { players.addPlayer(chr); } @@ -2170,7 +2162,6 @@ public class World { players.disconnectAll(); players = null; - announcer.shutdown(); clearWorldData(); System.out.println("Finished shutting down world " + id + "\r\n"); } diff --git a/src/net/server/world/announcer/MapleAnnouncerCoordinator.java b/src/net/server/world/announcer/MapleAnnouncerCoordinator.java deleted file mode 100644 index 92cb1d0d00..0000000000 --- a/src/net/server/world/announcer/MapleAnnouncerCoordinator.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - This file is part of the HeavenMS MapleStory Server - Copyleft (L) 2016 - 2019 RonanLana - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation version 3 as published by - the Free Software Foundation. You may not use, modify or distribute - this program under any other version of the GNU Affero General Public - License. - - 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 Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ -package net.server.world.announcer; - -import java.util.concurrent.ConcurrentLinkedQueue; -import org.apache.mina.core.session.IoSession; -import net.server.world.announcer.MapleAnnouncerEntryPool.SessionPacket; - -/** - * - * @author Ronan - */ -public class MapleAnnouncerCoordinator { - - private static final MapleAnnouncerCoordinator instance = new MapleAnnouncerCoordinator(); - - public static MapleAnnouncerCoordinator getInstance() { // world-agnostic Announcer coordinator - return instance; - } - - private MapleAnnouncerEntryPool pool = new MapleAnnouncerEntryPool(); - private ConcurrentLinkedQueue queue = new ConcurrentLinkedQueue<>(); - private Thread t; - - public void append(IoSession io, byte[] packet) { - queue.offer(pool.getSessionPacket(io, packet)); - } - - public void init() { - final Runnable r = new Runnable() { - @Override - public void run() { - while (!Thread.interrupted()) { - try { - SessionPacket p = queue.poll(); - if (p != null) { - IoSession session = p.getSession(); - byte[] packet = p.getPacket(); - - session.write(packet); - pool.returnSessionPacket(p); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - } - }; - - t = new Thread(r); - t.start(); - } - - public void shutdown() { - t.interrupt(); - try { - t.join(); - } catch (InterruptedException ie) { - ie.printStackTrace(); - } - - queue.clear(); - pool.shutdown(); - } - -} diff --git a/src/net/server/world/announcer/MapleAnnouncerEntryPool.java b/src/net/server/world/announcer/MapleAnnouncerEntryPool.java deleted file mode 100644 index 8193373223..0000000000 --- a/src/net/server/world/announcer/MapleAnnouncerEntryPool.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - This file is part of the HeavenMS MapleStory Server - Copyleft (L) 2016 - 2019 RonanLana - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation version 3 as published by - the Free Software Foundation. You may not use, modify or distribute - this program under any other version of the GNU Affero General Public - License. - - 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 Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ -package net.server.world.announcer; - -import java.util.concurrent.ConcurrentLinkedQueue; -import org.apache.mina.core.session.IoSession; - -/** - * - * @author Ronan - */ -public class MapleAnnouncerEntryPool { - - private ConcurrentLinkedQueue instancedPairs = new ConcurrentLinkedQueue<>(); - private final static int initialCount = 20000; // initial length of the instanced pool - - public MapleAnnouncerEntryPool() { - for (int i = 0; i < initialCount; i++) { - instancedPairs.offer(new SessionPacket()); - } - } - - public class SessionPacket { - - private IoSession session; - private byte[] packet; - - public IoSession getSession() { - return session; - } - - public byte[] getPacket() { - return packet; - } - - } - - public SessionPacket getSessionPacket(IoSession session, byte[] packet) { - SessionPacket sp = instancedPairs.poll(); - if (sp == null) { - sp = new SessionPacket(); - } - - sp.session = session; - sp.packet = packet; - return sp; - } - - public void returnSessionPacket(SessionPacket sp) { - instancedPairs.offer(sp); - } - - public void shutdown() { - instancedPairs.clear(); - } - -} From ab756a1f5af41d668da5ae3ab91dcf482c06f5bf Mon Sep 17 00:00:00 2001 From: ronancpl Date: Fri, 30 Aug 2019 00:47:29 -0300 Subject: [PATCH 24/37] Update mychanges_ptbr.txt --- docs/mychanges_ptbr.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/mychanges_ptbr.txt b/docs/mychanges_ptbr.txt index 75ea4cac4b..0d0e91ac33 100644 --- a/docs/mychanges_ptbr.txt +++ b/docs/mychanges_ptbr.txt @@ -2108,4 +2108,7 @@ Revisado diversos casos no código-fonte onde havia possibilidade de acesso ao o Corrigido caso de EXP ganho ocorrendo menor que o esperado, ao se usar diversos modificadores de ganhos. Corrigido bug crítico na atualização recente relacionado a skill mounts, onde na inicialização dos mounts informações estariam sendo perdidas inesperadamente... Corrigido informações de mount não sendo atualizado para o jogador assim que o mesmo loga, levando a certas quests com requerimento de mount não permitindo inicialização pelo lado-cliente. -Revisado sistema criado para manutenção de pacotes enviados através do IoSession, tal sistema agora atuando como uma "pool" ao invés de uma "factory". \ No newline at end of file +Revisado sistema criado para manutenção de pacotes enviados através do IoSession, tal sistema agora atuando como uma "pool" ao invés de uma "factory". + +29 Agosto 2019, +Revisado uso de loop em espera ocupada no sistema de manutenção de pacotes enviados. Em geral, threads que solicitam anúncio de pacotes não necessitam evitar esperar até que cada pacote seja enviado. \ No newline at end of file From da2395cc3a770b9fe4dc772f8890ec87a2ee7669 Mon Sep 17 00:00:00 2001 From: BHB88 <48196552+BHB88@users.noreply.github.com> Date: Fri, 13 Sep 2019 14:17:28 +1000 Subject: [PATCH 25/37] Add Aran High Defense functionality (#512) * Add High Defense functionality * Use proper morph models --- src/constants/skills/Aran.java | 1 + src/net/server/channel/handlers/TakeDamageHandler.java | 6 ++++++ src/server/MapleStatEffect.java | 8 ++++---- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/constants/skills/Aran.java b/src/constants/skills/Aran.java index 7a78c8ff69..923807c632 100644 --- a/src/constants/skills/Aran.java +++ b/src/constants/skills/Aran.java @@ -47,6 +47,7 @@ public class Aran { public static final int HIDDEN_FULL_TRIPLE = 21110008; public static final int SMART_KNOCKBACK = 21111001; public static final int OVER_SWING = 21120002; + public static final int HIGH_DEFENSE = 21120004; public static final int COMBO_TEMPEST = 21120006; public static final int COMBO_BARRIER = 21120007; public static final int HIDDEN_OVER_DOUBLE = 21120009; diff --git a/src/net/server/channel/handlers/TakeDamageHandler.java b/src/net/server/channel/handlers/TakeDamageHandler.java index c1a4cb0ee2..6d34fdb595 100644 --- a/src/net/server/channel/handlers/TakeDamageHandler.java +++ b/src/net/server/channel/handlers/TakeDamageHandler.java @@ -240,6 +240,12 @@ public final class TakeDamageHandler extends AbstractMaplePacketHandler { if (achilles != 0 && achilles1 != null) { damage *= (achilles1.getEffect(achilles).getX() / 1000.0); } + + Skill highDef = SkillFactory.getSkill(Aran.HIGH_DEFENSE); + int hdLevel = chr.getSkillLevel(highDef); + if (highDef != null && hdLevel > 0) { + damage *= (highDef.getEffect(hdLevel).getX() / 1000.0); + } } Integer mesoguard = chr.getBuffedValue(MapleBuffStat.MESOGUARD); if (chr.getBuffedValue(MapleBuffStat.MAGIC_GUARD) != null && mpattack == 0) { diff --git a/src/server/MapleStatEffect.java b/src/server/MapleStatEffect.java index 19cf04b4ca..f82b076579 100644 --- a/src/server/MapleStatEffect.java +++ b/src/server/MapleStatEffect.java @@ -1774,10 +1774,10 @@ public class MapleStatEffect { } private int getMorph(MapleCharacter chr) { - if (morphId % 10 == 0) { - return morphId + chr.getGender(); - } - return morphId + 100 * chr.getGender(); + if (morphId == 1000 || morphId == 1001 || morphId == 1003) { // morph skill + return chr.getGender() == 0 ? morphId : morphId + 100; + } + return morphId; } private SummonMovementType getSummonMovementType() { From 259c2e5ba19c915a9aff59a23aaf3fdace810d29 Mon Sep 17 00:00:00 2001 From: Ubaware Date: Thu, 12 Sep 2019 21:25:16 -0700 Subject: [PATCH 26/37] Fix for daily timers. Minor family fixes. Server code to change guild leader. (#513) --- sql/db_database.sql | 3 ++ src/client/MapleCharacter.java | 2 +- src/client/MapleFamily.java | 2 + src/net/server/Server.java | 2 +- .../channel/handlers/FamilyAddHandler.java | 2 + src/net/server/guild/MapleGuild.java | 21 +++++++++ .../handlers/login/DeleteCharHandler.java | 44 ++++++++++++++++++- .../server/worker/FamilyDailyResetWorker.java | 2 +- src/tools/MaplePacketCreator.java | 12 ++++- 9 files changed, 85 insertions(+), 5 deletions(-) diff --git a/sql/db_database.sql b/sql/db_database.sql index d451b962e6..7bd871eec7 100644 --- a/sql/db_database.sql +++ b/sql/db_database.sql @@ -21456,6 +21456,9 @@ ALTER TABLE `dueyitems` ALTER TABLE `famelog` ADD CONSTRAINT `famelog_ibfk_1` FOREIGN KEY (`characterid`) REFERENCES `characters` (`id`) ON DELETE CASCADE; + +ALTER TABLE `family_character` + ADD CONSTRAINT `family_character_ibfk_1` FOREIGN KEY (`cid`) REFERENCES `characters` (`id`) ON DELETE CASCADE; ALTER TABLE `skills` ADD CONSTRAINT `skills_chrid_fk` FOREIGN KEY (`characterid`) REFERENCES `characters` (`id`) ON DELETE CASCADE; # thanks Shavit diff --git a/src/client/MapleCharacter.java b/src/client/MapleCharacter.java index 2d177138c2..8c8411e99f 100644 --- a/src/client/MapleCharacter.java +++ b/src/client/MapleCharacter.java @@ -7577,7 +7577,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { break; } } - if (possesed > 0) { + if (possesed > 0 && !GameConstants.isDojo(getMapId())) { message("You have used a safety charm, so your EXP points have not been decreased."); MapleInventoryManipulator.removeById(client, ItemConstants.getInventoryType(charmID[i]), charmID[i], 1, true, false); } else if (getJob() != MapleJob.BEGINNER) { //Hmm... diff --git a/src/client/MapleFamily.java b/src/client/MapleFamily.java index 781ec33d69..e87e417991 100644 --- a/src/client/MapleFamily.java +++ b/src/client/MapleFamily.java @@ -203,9 +203,11 @@ public class MapleFamily { jobID = rs.getInt("job"); } else { FilePrinter.printError(FilePrinter.FAMILY_ERROR, "Could not load character information of " + cid + " in loadAllFamilies(). (RECORD DOES NOT EXIST)"); + continue; } } catch(SQLException e) { FilePrinter.printError(FilePrinter.FAMILY_ERROR, e, "Could not load character information of " + cid + " in loadAllFamilies(). (SQL ERROR)"); + continue; } int familyid = rsEntries.getInt("familyid"); int seniorid = rsEntries.getInt("seniorid"); diff --git a/src/net/server/Server.java b/src/net/server/Server.java index 723e52b1cb..9efc1f5155 100644 --- a/src/net/server/Server.java +++ b/src/net/server/Server.java @@ -535,7 +535,7 @@ public class Server { public static long getTimeLeftForNextDay() { Calendar nextDay = Calendar.getInstance(); nextDay.add(Calendar.DAY_OF_MONTH, 1); - nextDay.set(Calendar.HOUR, 0); + nextDay.set(Calendar.HOUR_OF_DAY, 0); nextDay.set(Calendar.MINUTE, 0); nextDay.set(Calendar.SECOND, 0); diff --git a/src/net/server/channel/handlers/FamilyAddHandler.java b/src/net/server/channel/handlers/FamilyAddHandler.java index 1e22dc46a2..a7638e401d 100644 --- a/src/net/server/channel/handlers/FamilyAddHandler.java +++ b/src/net/server/channel/handlers/FamilyAddHandler.java @@ -46,6 +46,8 @@ public final class FamilyAddHandler extends AbstractMaplePacketHandler { MapleCharacter chr = c.getPlayer(); if(addChr == null) { c.announce(MaplePacketCreator.sendFamilyMessage(65, 0)); + } else if(addChr == chr) { //only possible through packet editing/client editing i think? + c.announce(MaplePacketCreator.enableActions()); } else if(addChr.getMap() != chr.getMap() || (addChr.isHidden()) && chr.gmLevel() < addChr.gmLevel()) { c.announce(MaplePacketCreator.sendFamilyMessage(69, 0)); } else if(addChr.getLevel() <= 10) { diff --git a/src/net/server/guild/MapleGuild.java b/src/net/server/guild/MapleGuild.java index dca74c4825..fd767f6c9c 100644 --- a/src/net/server/guild/MapleGuild.java +++ b/src/net/server/guild/MapleGuild.java @@ -30,6 +30,7 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; +import java.util.Comparator; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; @@ -307,6 +308,18 @@ public class MapleGuild { } } + public void broadcastInfoChanged() { + PlayerStorage ps = Server.getInstance().getWorld(world).getPlayerStorage(); + + for (MapleGuildCharacter mgc : getMembers()) { + MapleCharacter chr = ps.getCharacterById(mgc.getId()); + if (chr == null || !chr.isLoggedinWorld()) continue; + + byte[] packet = MaplePacketCreator.showGuildInfo(chr); + chr.announce(packet); + } + } + public void broadcast(final byte[] packet) { broadcast(packet, -1, BCOp.NONE); } @@ -567,6 +580,14 @@ public class MapleGuild { } membersLock.lock(); + members.sort(new Comparator() { + @Override + public int compare(MapleGuildCharacter t, MapleGuildCharacter o) { + if(t.getGuildRank() <= 1 && o.getGuildRank() > 1) return -1; + else if(t.getGuildRank() > 1 && o.getGuildRank() <= 1) return 1; + else return 0; + } + }); try { this.broadcast(MaplePacketCreator.changeRank(mgc)); } finally { diff --git a/src/net/server/handlers/login/DeleteCharHandler.java b/src/net/server/handlers/login/DeleteCharHandler.java index 5220c9ea3a..ef066d107d 100644 --- a/src/net/server/handlers/login/DeleteCharHandler.java +++ b/src/net/server/handlers/login/DeleteCharHandler.java @@ -21,8 +21,16 @@ */ package net.server.handlers.login; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + import client.MapleClient; +import client.MapleFamily; import net.AbstractMaplePacketHandler; +import net.server.Server; +import tools.DatabaseConnection; import tools.FilePrinter; import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; @@ -34,11 +42,45 @@ public final class DeleteCharHandler extends AbstractMaplePacketHandler { String pic = slea.readMapleAsciiString(); int cid = slea.readInt(); if (c.checkPic(pic)) { + //check for family, guild leader, pending marriage, world transfer + try (Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("SELECT `world`, `guildid`, `guildrank`, `familyId` FROM characters WHERE id = ?"); + PreparedStatement ps2 = con.prepareStatement("SELECT COUNT(*) as rowcount FROM worldtransfers WHERE `characterid` = ? AND completionTime IS NULL")) { + ps.setInt(1, cid); + ResultSet rs = ps.executeQuery(); + if(!rs.next()) throw new SQLException("Character record does not exist."); + int world = rs.getInt("world"); + int guildId = rs.getInt("guildid"); + int guildRank = rs.getInt("guildrank"); + int familyId = rs.getInt("familyId"); + if(guildId != 0 && guildRank <= 1) { + c.announce(MaplePacketCreator.deleteCharResponse(cid, 0x16)); + return; + } else if(familyId != -1) { + MapleFamily family = Server.getInstance().getWorld(world).getFamily(familyId); + if(family != null && family.getTotalMembers() > 1) { + c.announce(MaplePacketCreator.deleteCharResponse(cid, 0x1D)); + return; + } + } + rs.close(); + ps2.setInt(1, cid); + rs = ps2.executeQuery(); + rs.next(); + if(rs.getInt("rowcount") > 0) { + c.announce(MaplePacketCreator.deleteCharResponse(cid, 0x1A)); + return; + } + } catch(SQLException e) { + e.printStackTrace(); + c.announce(MaplePacketCreator.deleteCharResponse(cid, 0x09)); + return; + } if(c.deleteCharacter(cid, c.getAccID())) { FilePrinter.print(FilePrinter.DELETED_CHAR + c.getAccountName() + ".txt", c.getAccountName() + " deleted CID: " + cid); c.announce(MaplePacketCreator.deleteCharResponse(cid, 0)); } else { - c.announce(MaplePacketCreator.deleteCharResponse(cid, 0x14)); + c.announce(MaplePacketCreator.deleteCharResponse(cid, 0x09)); } } else { c.announce(MaplePacketCreator.deleteCharResponse(cid, 0x14)); diff --git a/src/net/server/worker/FamilyDailyResetWorker.java b/src/net/server/worker/FamilyDailyResetWorker.java index 28f32d8f91..92dc8e2672 100644 --- a/src/net/server/worker/FamilyDailyResetWorker.java +++ b/src/net/server/worker/FamilyDailyResetWorker.java @@ -29,7 +29,7 @@ public class FamilyDailyResetWorker implements Runnable { public static void resetEntitlementUsage(World world) { Calendar resetTime = Calendar.getInstance(); resetTime.add(Calendar.MINUTE, 1); // to make sure that we're in the "next day", since this is called at midnight - resetTime.set(Calendar.HOUR, 0); + resetTime.set(Calendar.HOUR_OF_DAY, 0); resetTime.set(Calendar.MINUTE, 0); resetTime.set(Calendar.SECOND, 0); resetTime.set(Calendar.MILLISECOND, 0); diff --git a/src/tools/MaplePacketCreator.java b/src/tools/MaplePacketCreator.java index 6aefe95607..7258b2720c 100644 --- a/src/tools/MaplePacketCreator.java +++ b/src/tools/MaplePacketCreator.java @@ -2721,7 +2721,17 @@ public class MaplePacketCreator { } /** - * state 0 = del ok state 12 = invalid bday state 14 = incorrect pic + * State : + * 0x00 = success + * 0x06 = Trouble logging into the game? + * 0x09 = Unknown error + * 0x0A = Could not be processed due to too many connection requests to the server. + * 0x12 = invalid bday + * 0x14 = incorrect pic + * 0x16 = Cannot delete a guild master. + * 0x18 = Cannot delete a character with a pending wedding. + * 0x1A = Cannot delete a character with a pending world transfer. + * 0x1D = Cannot delete a character that has a family. * * @param cid * @param state From e169971384fa59e5bb2eb4cf279852b674269d4a Mon Sep 17 00:00:00 2001 From: ronancpl Date: Fri, 13 Sep 2019 03:04:44 -0300 Subject: [PATCH 27/37] Knights' Seal & I. MaxHP + Adherent mob status + Script point-warps Fixed Seal skill not working for Blaze Wizard. Added a check against Seal skill on bosses. Reviewed improper usage of "random spawn point arrival" at several warps on scripts. Refactored CPQ modules fetching players from the channel storage, this should be unneeded after a recent update on the player object from MPC. Added door objects as a visible map object for the player server-side view component. Fixed a few scenarios where mobs would unexpectedly show up impervious to mob status. Fixed scenario where a player wouldn't receive disease informations from other players after changing maps. Fixed some magic-type skills (such as Magic Claw or Freeze) not displaying damage value for other players when the player is within melee-range from the mob. Added check for whether a given quest is scripted before trying to find the script. Fixed registering items onto MTS leading to loss of a few of its properties (expiration, item level, etc). Fixed "Improved MaxHP" skill gains not working for Thunderbreakers. Refactored pet autopot to also apply on HP/MP consumption by items/skills. Added portal sound effect on Mystic Doors. --- docs/issues.txt | 8 +- docs/mychanges_ptbr.txt | 26 ++- scripts/event/BalrogBattle.js | 1 + scripts/event/GuardianNex.js | 2 +- scripts/event/Puppeteer.js | 2 +- scripts/event/RockSpirit.js | 2 +- scripts/event/RockSpiritVIP.js | 2 +- scripts/npc/1052007.js | 2 +- scripts/npc/1052008.js | 2 +- scripts/npc/1052009.js | 2 +- scripts/npc/1052010.js | 2 +- scripts/npc/1052012.js | 2 +- scripts/npc/1061018.js | 2 +- scripts/npc/1072002.js | 2 +- scripts/npc/1090000.js | 2 +- scripts/npc/2013001.js | 2 +- scripts/npc/2030000.js | 2 +- scripts/npc/2040045.js | 2 +- scripts/npc/2081010.js | 2 +- scripts/npc/2083002.js | 2 +- scripts/npc/2091005.js | 2 +- scripts/npc/2091005_old.js | 2 +- scripts/npc/2111000.js | 2 +- scripts/npc/2111003.js | 2 +- scripts/npc/2112003.js | 2 +- scripts/npc/2112004.js | 2 +- scripts/npc/2112005.js | 8 +- scripts/npc/2112006.js | 8 +- scripts/npc/2112011.js | 2 +- scripts/npc/2133001.js | 4 +- scripts/npc/2133002.js | 2 +- scripts/npc/2133004.js | 2 +- scripts/npc/9000001.js | 2 +- scripts/npc/9000021.js | 2 +- scripts/npc/9010022.js | 4 +- scripts/npc/9010022_old.js | 4 +- scripts/npc/9060000.js | 2 +- scripts/npc/9120003.js | 2 +- scripts/npc/9120015.js | 2 +- scripts/npc/9120200.js | 4 +- scripts/npc/9270033.js | 2 +- scripts/npc/9977777.js | 2 +- scripts/npc/ThiefPassword.js | 2 +- scripts/portal/MC2revive.js | 7 +- scripts/portal/MD_drakeroom.js | 4 +- scripts/portal/MD_error.js | 4 +- scripts/portal/MD_golem.js | 4 +- scripts/portal/MD_high.js | 4 +- scripts/portal/MD_mushroom.js | 4 +- scripts/portal/MD_pig.js | 4 +- scripts/portal/MD_protect.js | 4 +- scripts/portal/MD_rabbit.js | 4 +- scripts/portal/MD_remember.js | 4 +- scripts/portal/MD_roundTable.js | 4 +- scripts/portal/MD_sand.js | 4 +- scripts/portal/MD_treasure.js | 4 +- scripts/portal/NextMap.js | 2 +- scripts/portal/Pinkin.js | 2 +- scripts/portal/Populatus00.js | 2 +- scripts/portal/gaga_success.js | 2 +- scripts/portal/jnr6_out.js | 2 +- scripts/portal/skyrom.js | 2 +- scripts/portal/stageBogo.js | 2 +- scripts/quest/2568.js | 2 +- scripts/quest/3933.js | 2 +- scripts/reactor/2200001.js | 2 +- sql/db_database.sql | 5 + src/client/AbstractCharacterListener.java | 1 + src/client/AbstractMapleCharacterObject.java | 11 +- src/client/MapleCharacter.java | 103 +++++++--- src/client/MapleFamily.java | 6 +- src/client/SkillFactory.java | 4 +- src/client/processor/AssignAPProcessor.java | 3 +- src/client/processor/FredrickProcessor.java | 1 - src/client/processor/PetAutopotProcessor.java | 178 ++++++++++++++++++ src/constants/ServerConstants.java | 2 +- src/constants/skills/Aran.java | 1 - src/constants/skills/Swordsman.java | 31 --- src/constants/skills/Warrior.java | 1 + src/net/server/Server.java | 20 +- .../handlers/AbstractDealDamageHandler.java | 12 +- .../handlers/AllianceOperationHandler.java | 6 +- .../handlers/CloseRangeDamageHandler.java | 2 +- .../channel/handlers/EnterMTSHandler.java | 16 ++ .../server/channel/handlers/MTSHandler.java | 101 ++++++---- .../channel/handlers/MagicDamageHandler.java | 10 +- .../channel/handlers/MoveLifeHandler.java | 1 - .../channel/handlers/PetAutoPotHandler.java | 140 +------------- .../handlers/PlayerLoggedinHandler.java | 7 +- .../handlers/PlayerMapTransitionHandler.java | 18 ++ .../channel/handlers/TakeDamageHandler.java | 2 +- src/net/server/guild/MapleGuild.java | 10 +- src/net/server/world/MapleParty.java | 4 +- src/scripting/AbstractScriptManager.java | 4 +- src/scripting/event/EventManager.java | 8 +- src/scripting/event/EventScriptManager.java | 12 +- src/scripting/map/MapScriptManager.java | 77 +++----- src/scripting/npc/NPCConversationManager.java | 33 ++-- src/scripting/npc/NPCScriptManager.java | 10 +- src/scripting/portal/PortalScriptManager.java | 63 ++----- src/scripting/quest/QuestScriptManager.java | 59 +++--- .../reactor/ReactorActionManager.java | 6 +- .../reactor/ReactorScriptManager.java | 1 - src/server/MapleStatEffect.java | 7 + src/server/life/MapleMonster.java | 10 + src/server/maps/MapleDoor.java | 3 + src/server/maps/MapleDoorObject.java | 2 + src/server/maps/MapleMap.java | 23 ++- src/server/partyquest/MonsterCarnival.java | 25 ++- src/server/quest/MapleQuest.java | 14 +- .../quest/requirements/ScriptRequirement.java | 53 ++++++ src/tools/FilePrinter.java | 1 + wz/Quest.wz/Check.img.xml | 2 +- wz/Quest.wz/QuestInfo.img.xml | 2 +- wz/String.wz/Consume.img.xml | 2 +- 115 files changed, 783 insertions(+), 540 deletions(-) create mode 100644 src/client/processor/PetAutopotProcessor.java delete mode 100644 src/constants/skills/Swordsman.java create mode 100644 src/server/quest/requirements/ScriptRequirement.java diff --git a/docs/issues.txt b/docs/issues.txt index b0d48368cb..56f339dda6 100644 --- a/docs/issues.txt +++ b/docs/issues.txt @@ -12,9 +12,8 @@ Known issues: - Dragon Roar doesn't show the stun effect to players. - Cygnus job 'Final Attack' skills not functional. - Steal skill doesn't deduct the loot from the drop pool from a mob. -- Using Shark Wave with Transformation on female thunderbreakers will cause consecutive attacks to proc immediately. - Snipe will show much higher damage value than actually applicable to the attacker. -- Some monster status such as freeze and weapon/magic reflect doesn't behave properly in certain scenarios. Freeze seems to not work on mobs with low OID or are starters from server boot time. +- Some monster status such as weapon/magic reflect doesn't behave properly in certain scenarios. - On low-end connections, things such as command summoning a player that is currently logging in (already visible to other players) may cause the player to freeze, consequently freezing the account as well since the server-side disconnection doesn't happen. - Reportedly, there are cases where mob positions fail to sync between player's client-view. - Visual equip EXP watch value will present stuttering for early levels requirement (EXP needed less than 100), and requirement at level 200 will not progress at all due to the level cap in client. @@ -32,14 +31,13 @@ Missing features list: --------------------------- ** Others ** -- Family system - MTS --------------------------- --------------------------- ** Quest ** -- Family & Medal quests. +- Medal quests. --------------------------- @@ -50,7 +48,7 @@ Missing features list: --------------------------- ** Packet issues & advanced PQs ** -- Mystic Doors (won't deploy players properly is some situations, only destination map matches). +- Mystic Doors (won't deploy players properly in some situations, only destination map matches). - Nett's Pyramid Party Quest --------------------------- diff --git a/docs/mychanges_ptbr.txt b/docs/mychanges_ptbr.txt index 0d0e91ac33..a0a39b884b 100644 --- a/docs/mychanges_ptbr.txt +++ b/docs/mychanges_ptbr.txt @@ -2111,4 +2111,28 @@ Corrigido informações de mount não sendo atualizado para o jogador assim que Revisado sistema criado para manutenção de pacotes enviados através do IoSession, tal sistema agora atuando como uma "pool" ao invés de uma "factory". 29 Agosto 2019, -Revisado uso de loop em espera ocupada no sistema de manutenção de pacotes enviados. Em geral, threads que solicitam anúncio de pacotes não necessitam evitar esperar até que cada pacote seja enviado. \ No newline at end of file +Revisado uso de loop em espera ocupada no sistema de manutenção de pacotes enviados. Em geral, threads que solicitam anúncio de pacotes não necessitam evitar esperar até que cada pacote seja enviado. + +30 Agosto 2019, +Corrigido skill Seal não atuando devidamente para Blaze Wizard. +Corrigido skill Seal atuando em bosses. +Refatorado funções ainda utilizando invocável desabstraindo o mesmo, assim evitando múltiplos casts de tipo ao decorrer da busca pelo motor de scripts. + +02 - 03 Setembro 2019, +Revisado pontos de spawn usados em warps em vários scripts do servidor. +Refatorado métodos da CPQ buscando jogadores pelo storage de canais. Não deveria mais haver necessidade já que a partir de uma atualização recente membros offline contém objeto de jogador nulo, e ao reentrar o MPC já assume o novo objeto de jogador. + +05 - 06 Setembro 2019, +Adicionado doors em mapas de cidade como objetos visíveis em campo. +Corrigido aplicação de status de mobs, onde em várias ocasiões os mobs poderiam parecer inafetáveis aos mesmos. + +07 Setembro 2019, +Corrigido jogador não recebendo informações de debuffs em outros jogadores ao trocar de mapas. + +10 - 12 Setembro 2019, +Corrigido algumas skills de tipo "mágico", que não usam cargas, não mostrando dano para outros jogadores quando golpe ocorre suficientemente perto. +Adicionado checagem por evidência de disponibilidade de scripts em quests. +Corrigido inscrição de itens no MTS levando a certos atributos de itens sendo perdidos no processo. +Adicionado ganho de MaxHP extra da skill para Thunderbreakers, em ambos casos de aumento de nível e de MaxHP usando AP. +Refatorado ação de autopots, permitindo o mesmo a agir imediatamente após detecção de perda suficiente de HP/MP ao usar itens ou skills. +Adicionado efeito sonoro de portal ao atravessar Mystic Door. \ No newline at end of file diff --git a/scripts/event/BalrogBattle.js b/scripts/event/BalrogBattle.js index ad2122ebe0..499d793ec3 100644 --- a/scripts/event/BalrogBattle.js +++ b/scripts/event/BalrogBattle.js @@ -245,6 +245,7 @@ function monsterKilled(mob, eim) { eim.clearPQ(); eim.dispatchUpdateQuestMobCount(bossMobId, entryMap); + eim.dispatchUpdateQuestMobCount(9101003, entryMap); // thanks Atoot for noticing quest not getting updated after boss kill mob.getMap().broadcastBalrogVictory(eim.getLeader().getName()); } else { if(count == 1) { diff --git a/scripts/event/GuardianNex.js b/scripts/event/GuardianNex.js index 982ee33b59..360e414543 100644 --- a/scripts/event/GuardianNex.js +++ b/scripts/event/GuardianNex.js @@ -24,7 +24,7 @@ function respawn(eim){} function playerEntry(eim, player){ var cave = eim.getMapInstance(eventMap + 10 * eim.getIntProperty("nex")); - player.changeMap(cave); + player.changeMap(cave, 1); } function scheduledTimeout(eim){ diff --git a/scripts/event/Puppeteer.js b/scripts/event/Puppeteer.js index 35baa8c0dc..0fd8898cb6 100644 --- a/scripts/event/Puppeteer.js +++ b/scripts/event/Puppeteer.js @@ -24,7 +24,7 @@ function respawn(eim){} function playerEntry(eim, player){ var cave = eim.getMapInstance(eventMap); - player.changeMap(cave); + player.changeMap(cave, 1); } function scheduledTimeout(eim){ diff --git a/scripts/event/RockSpirit.js b/scripts/event/RockSpirit.js index 149ced9bd1..9bd0726582 100644 --- a/scripts/event/RockSpirit.js +++ b/scripts/event/RockSpirit.js @@ -63,7 +63,7 @@ function respawn(eim) { function playerEntry(eim, player) { var amplifierMap = eim.getMapInstance(entryMap.getId()); - player.changeMap(amplifierMap); + player.changeMap(amplifierMap, 1); eim.schedule("timeOut", timer); } diff --git a/scripts/event/RockSpiritVIP.js b/scripts/event/RockSpiritVIP.js index 0d2ecba425..60085fb57d 100644 --- a/scripts/event/RockSpiritVIP.js +++ b/scripts/event/RockSpiritVIP.js @@ -63,7 +63,7 @@ function respawn(eim) { function playerEntry(eim, player) { var amplifierMap = eim.getMapInstance(entryMap.getId()); - player.changeMap(amplifierMap); + player.changeMap(amplifierMap, 1); eim.schedule("timeOut", timer); } diff --git a/scripts/npc/1052007.js b/scripts/npc/1052007.js index 8636978a81..27a0f1a4d6 100644 --- a/scripts/npc/1052007.js +++ b/scripts/npc/1052007.js @@ -66,7 +66,7 @@ function action(mode, type, selection) { ticketSelection = selection; if (ticketSelection > -1) { cm.gainItem(4031035 + ticketSelection, -1); - cm.warp(103000897 + (ticketSelection * 3)); + cm.warp(103000897 + (ticketSelection * 3), "st00"); // thanks IxianMace for noticing a few scripts having misplaced warp SP's hasTicket = false; cm.dispose(); return; diff --git a/scripts/npc/1052008.js b/scripts/npc/1052008.js index 33176a4bf1..095fd671cf 100644 --- a/scripts/npc/1052008.js +++ b/scripts/npc/1052008.js @@ -28,6 +28,6 @@ function start() { cm.gainItem(4031039,1); else cm.gainItem(4020000 + ((Math.random()*5)|0), 1); - cm.warp(103000100); + cm.warp(103000100, 0); cm.dispose(); } \ No newline at end of file diff --git a/scripts/npc/1052009.js b/scripts/npc/1052009.js index 6a83c44ff1..f1de2aab88 100644 --- a/scripts/npc/1052009.js +++ b/scripts/npc/1052009.js @@ -28,6 +28,6 @@ function start() { cm.gainItem(4031040,1); else cm.gainItem(prizes[parseInt(Math.random() * prizes.length)],1); - cm.warp(103000100); + cm.warp(103000100, 0); cm.dispose(); } \ No newline at end of file diff --git a/scripts/npc/1052010.js b/scripts/npc/1052010.js index 4e072e4822..7f75e4c2ad 100644 --- a/scripts/npc/1052010.js +++ b/scripts/npc/1052010.js @@ -28,6 +28,6 @@ function start() { cm.gainItem(4031041,1); else cm.gainItem(prizes[parseInt(Math.random() * prizes.length)],1); - cm.warp(103000100); + cm.warp(103000100, 0); cm.dispose(); } \ No newline at end of file diff --git a/scripts/npc/1052012.js b/scripts/npc/1052012.js index 8c03fb6da3..bb683cac66 100644 --- a/scripts/npc/1052012.js +++ b/scripts/npc/1052012.js @@ -53,7 +53,7 @@ function action(mode, type, selection) { cm.sendOk("Oh, you don't have the money, right? Sorry, I can't let you in."); } else { cm.gainMeso(-5000); - cm.warp(193000000); + cm.warp(193000000, "out00"); } cm.dispose(); diff --git a/scripts/npc/1061018.js b/scripts/npc/1061018.js index 1fd6b88c23..a603b7044b 100644 --- a/scripts/npc/1061018.js +++ b/scripts/npc/1061018.js @@ -28,7 +28,7 @@ function action(mode, type, selection) { } } else if(status == 1){ if(cm.getEventInstance().isEventCleared()) { - cm.warp(cm.getMapId() == 105100300 ? 105100301 : 105100401); + cm.warp(cm.getMapId() == 105100300 ? 105100301 : 105100401, 0); } else { cm.warp(105100100); } diff --git a/scripts/npc/1072002.js b/scripts/npc/1072002.js index dad871dbfa..3f2ed5c98e 100644 --- a/scripts/npc/1072002.js +++ b/scripts/npc/1072002.js @@ -69,7 +69,7 @@ function action(mode, type, selection) { cm.gainItem(4031010, -1); cm.sendOk("You will have to collect me #b30 #t4031013##k. Good luck.") } else if (status == 4) { - cm.warp(108000100); + cm.warp(108000100, 0); cm.dispose(); } else { diff --git a/scripts/npc/1090000.js b/scripts/npc/1090000.js index 60b573219d..a15d3b3a3d 100644 --- a/scripts/npc/1090000.js +++ b/scripts/npc/1090000.js @@ -222,7 +222,7 @@ function action(mode, type, selection) { cm.sendOk("All the training maps are currently in use. Please try again later."); cm.dispose(); } else { - cm.warp(map); + cm.warp(map, 0); cm.dispose(); return; } diff --git a/scripts/npc/2013001.js b/scripts/npc/2013001.js index 5ee0327ee6..699dd060bb 100644 --- a/scripts/npc/2013001.js +++ b/scripts/npc/2013001.js @@ -278,7 +278,7 @@ function action(mode, type, selection) { if(cm.getMap().countMonsters() > 0) { cm.sendNext("This is the hidden room of the tower. After eliminating all monsters on this room, talk to me to gain access to the treasure room, leaving the center tower access behind."); } else { - cm.warp(920011100); + cm.warp(920011100, "st00"); } break; } diff --git a/scripts/npc/2030000.js b/scripts/npc/2030000.js index 77b591c37b..fc7dd3e484 100644 --- a/scripts/npc/2030000.js +++ b/scripts/npc/2030000.js @@ -33,7 +33,7 @@ var status = 0; function start() { if(cm.haveItem(4031450, 1)) { - cm.warp(921100100); + cm.warp(921100100, 1); cm.dispose(); return; } diff --git a/scripts/npc/2040045.js b/scripts/npc/2040045.js index 228077ff59..01f546487b 100644 --- a/scripts/npc/2040045.js +++ b/scripts/npc/2040045.js @@ -54,7 +54,7 @@ function action(mode, type, selection) { cm.sendYesNo("Would you like to leave the bonus stage?"); } else { - cm.warp(922011100); + cm.warp(922011100, "st00"); cm.dispose(); } } diff --git a/scripts/npc/2081010.js b/scripts/npc/2081010.js index 0b564e2398..019a545276 100644 --- a/scripts/npc/2081010.js +++ b/scripts/npc/2081010.js @@ -44,7 +44,7 @@ function action(mode, type, selection){ } else if(status == 1) { - cm.warp(exitMap); + cm.warp(exitMap, "st00"); cm.dispose(); } } diff --git a/scripts/npc/2083002.js b/scripts/npc/2083002.js index 14328826c0..c7cbd07632 100644 --- a/scripts/npc/2083002.js +++ b/scripts/npc/2083002.js @@ -34,7 +34,7 @@ function action(mode, type, selection) { cm.dispose(); else { if(cm.getMapId() > 240050400) cm.warp(240050600); - else cm.warp(240040700); + else cm.warp(240040700, "out00"); cm.dispose(); } diff --git a/scripts/npc/2091005.js b/scripts/npc/2091005.js index 24cf9806cc..57ad24c0ce 100644 --- a/scripts/npc/2091005.js +++ b/scripts/npc/2091005.js @@ -330,7 +330,7 @@ function action(mode, type, selection) { cm.sendYesNo("So, you're giving up? You're really going to leave?"); } else { if (mode == 1) { - cm.warp(925020002); + cm.warp(925020002, "st00"); } cm.dispose(); return; diff --git a/scripts/npc/2091005_old.js b/scripts/npc/2091005_old.js index ffaae970cf..028204db39 100644 --- a/scripts/npc/2091005_old.js +++ b/scripts/npc/2091005_old.js @@ -225,7 +225,7 @@ function action(mode, type, selection) { cm.sendAcceptDecline("So, you're giving up? You're really going to leave?"); } else { if (mode == 1) { - cm.warp(925020002); + cm.warp(925020002, "st00"); } cm.dispose(); } diff --git a/scripts/npc/2111000.js b/scripts/npc/2111000.js index 2a40b90e32..3ae1c9dba4 100644 --- a/scripts/npc/2111000.js +++ b/scripts/npc/2111000.js @@ -30,7 +30,7 @@ */ function start() { if(cm.isQuestStarted(3310) && !cm.haveItem(4031709, 1)) { - cm.warp(926120100); + cm.warp(926120100, "out00"); } else { cm.sendNext("Alchemy....and Alchemist.....both of them are important. But more importantly, it is the Magatia that tolerate everything. The honor of Magatia should be protected by me."); } diff --git a/scripts/npc/2111003.js b/scripts/npc/2111003.js index 948460a2b3..aa22675e67 100644 --- a/scripts/npc/2111003.js +++ b/scripts/npc/2111003.js @@ -33,7 +33,7 @@ function start() { if(cm.isQuestStarted(3335) && !cm.haveItem(4031695, 1)) { - cm.warp(926120300); + cm.warp(926120300, "out00"); cm.dispose(); } else { cm.sendOk("Emotion that I feel is real? Or just illusion coming from mechanical error?"); diff --git a/scripts/npc/2112003.js b/scripts/npc/2112003.js index bbf907d813..10a4fda4d8 100644 --- a/scripts/npc/2112003.js +++ b/scripts/npc/2112003.js @@ -50,7 +50,7 @@ function action(mode, type, selection) { if(status == 0) { cm.sendYesNo("We must keep fighting to save Romeo, please keep your pace. If you are not feeling so well to continue, your companions and I will understand... So, are you going to retreat?"); } else if(status == 1) { - cm.warp(926110700); + cm.warp(926110700, 0); cm.dispose(); } } else { diff --git a/scripts/npc/2112004.js b/scripts/npc/2112004.js index 02b02a895a..44da2246da 100644 --- a/scripts/npc/2112004.js +++ b/scripts/npc/2112004.js @@ -50,7 +50,7 @@ function action(mode, type, selection) { if(status == 0) { cm.sendYesNo("We must keep fighting to save Juliet, please keep your pace. If you are not feeling so well to continue, your companions and I will understand... So, are you going to retreat?"); } else if(status == 1) { - cm.warp(926100700); + cm.warp(926100700, 0); cm.dispose(); } } else { diff --git a/scripts/npc/2112005.js b/scripts/npc/2112005.js index 29860dce6b..14de113793 100644 --- a/scripts/npc/2112005.js +++ b/scripts/npc/2112005.js @@ -93,7 +93,7 @@ function action(mode, type, selection) { cm.sendYesNo("We must keep fighting to save Romeo, please keep your pace. If you are not feeling so well to continue, your companions and I will understand... So, are you going to retreat?"); } } else { - cm.warp(926110700); + cm.warp(926110700, 0); cm.dispose(); } } else { @@ -111,15 +111,15 @@ function action(mode, type, selection) { if(cm.canHold(4001160)) { cm.gainItem(4001160, 1); - if(eim.getIntProperty("normalClear") == 1) cm.warp(926110600); - else cm.warp(926110500); + if(eim.getIntProperty("normalClear") == 1) cm.warp(926110600, 0); + else cm.warp(926110500, 0); } else { cm.sendOk("Make sure you have a space on your ETC inventory."); } cm.dispose(); } else { - cm.warp(926110600); + cm.warp(926110600, 0); cm.dispose(); } } diff --git a/scripts/npc/2112006.js b/scripts/npc/2112006.js index 3ab1911949..2a1ad0c222 100644 --- a/scripts/npc/2112006.js +++ b/scripts/npc/2112006.js @@ -93,7 +93,7 @@ function action(mode, type, selection) { cm.sendYesNo("We must keep fighting to save Juliet, please keep your pace. If you are not feeling so well to continue, your companions and I will understand... So, are you going to retreat?"); } } else { - cm.warp(926100700); + cm.warp(926100700, 0); cm.dispose(); } } else { @@ -111,15 +111,15 @@ function action(mode, type, selection) { if(cm.canHold(4001159)) { cm.gainItem(4001159, 1); - if(eim.getIntProperty("normalClear") == 1) cm.warp(926100600); - else cm.warp(926100500); + if(eim.getIntProperty("normalClear") == 1) cm.warp(926100600, 0); + else cm.warp(926100500, 0); } else { cm.sendOk("Make sure you have a space on your ETC inventory."); } cm.dispose(); } else { - cm.warp(926100600); + cm.warp(926100600, 0); cm.dispose(); } } diff --git a/scripts/npc/2112011.js b/scripts/npc/2112011.js index 4e3b223f7d..e6f2cc19e9 100644 --- a/scripts/npc/2112011.js +++ b/scripts/npc/2112011.js @@ -51,7 +51,7 @@ function action(mode, type, selection) { } else { if(!cm.isQuestCompleted(7770)) cm.completeQuest(7770); - cm.warp(926110600); + cm.warp(926110600, 0); cm.dispose(); } } diff --git a/scripts/npc/2133001.js b/scripts/npc/2133001.js index 74a85d579e..d288555334 100644 --- a/scripts/npc/2133001.js +++ b/scripts/npc/2133001.js @@ -92,10 +92,10 @@ function action(mode, type, selection) { cm.gainItem(4001169, -20); cm.getEventInstance().warpEventTeam(930000500); } else { - cm.warp(930000800); + cm.warp(930000800, 0); } } else { - cm.warp(930000800); + cm.warp(930000800, 0); } cm.dispose(); diff --git a/scripts/npc/2133002.js b/scripts/npc/2133002.js index 1804c49b10..59c3d759cc 100644 --- a/scripts/npc/2133002.js +++ b/scripts/npc/2133002.js @@ -19,7 +19,7 @@ function action(mode, type, selection) { cm.removeAll(4001163); cm.removeAll(4001169); cm.removeAll(2270004); - cm.warp(930000800); + cm.warp(930000800, 0); cm.dispose(); } } \ No newline at end of file diff --git a/scripts/npc/2133004.js b/scripts/npc/2133004.js index 4affde77cf..ef0d283fe3 100644 --- a/scripts/npc/2133004.js +++ b/scripts/npc/2133004.js @@ -25,7 +25,7 @@ function action(mode, type, selection) { } } else if(status == 1) { if (!cm.haveItem(4001163)) { - cm.warp(930000800); + cm.warp(930000800, 0); } else { cm.getEventInstance().warpEventTeam(930000600); } diff --git a/scripts/npc/9000001.js b/scripts/npc/9000001.js index 55eaf9a278..c0501bf004 100644 --- a/scripts/npc/9000001.js +++ b/scripts/npc/9000001.js @@ -59,7 +59,7 @@ function action(mode, type, selection) { cm.divideTeams(); cm.getEvent().minusLimit(); - cm.warp(cm.getEvent().getMapId()); + cm.warp(cm.getEvent().getMapId(), 0); cm.dispose(); } else { cm.sendNext("Either the event has not been started, you already have the #bScroll of Secrets#k, or you have already participated in this event within the last 24 hours. Please try again later!"); diff --git a/scripts/npc/9000021.js b/scripts/npc/9000021.js index c6d7bbc9d3..b2dd15c369 100644 --- a/scripts/npc/9000021.js +++ b/scripts/npc/9000021.js @@ -55,7 +55,7 @@ function action(mode, type, selection) { cm.sendOk("Very well. Remember, there you can assemble a team or take on the fightings on your own, it's up to you. Good luck!"); } else if(status == 4) { cm.getPlayer().saveLocation("BOSSPQ"); - cm.warp(970030000); + cm.warp(970030000, "out00"); cm.dispose(); } } diff --git a/scripts/npc/9010022.js b/scripts/npc/9010022.js index a7c160e6e4..f4718a16d4 100644 --- a/scripts/npc/9010022.js +++ b/scripts/npc/9010022.js @@ -71,10 +71,10 @@ function action(mode, type, selection) { cm.warp(980030000, 3); break; case 5: - cm.warp(926010000); + cm.warp(926010000, 4); break; case 6: - cm.warp(910320000); + cm.warp(910320000, 2); break; } cm.dispose(); diff --git a/scripts/npc/9010022_old.js b/scripts/npc/9010022_old.js index d62b2984b5..8a9e49bdbf 100644 --- a/scripts/npc/9010022_old.js +++ b/scripts/npc/9010022_old.js @@ -66,10 +66,10 @@ function action(mode, type, selection) { cm.warp(980030000, 3); break; case 5: - cm.warp(926010000); + cm.warp(926010000, 4); break; case 6: - cm.warp(910320000); + cm.warp(910320000, 2); break; } cm.dispose(); diff --git a/scripts/npc/9060000.js b/scripts/npc/9060000.js index 4181d1e6ec..aeb86ff6f5 100644 --- a/scripts/npc/9060000.js +++ b/scripts/npc/9060000.js @@ -45,7 +45,7 @@ function action(mode, type, selection){ if (completed) { cm.getEventInstance().clearPQ(); } else { - cm.warp(923010100); + cm.warp(923010100, 0); } cm.dispose(); diff --git a/scripts/npc/9120003.js b/scripts/npc/9120003.js index fb3e89c5e8..fb08eed273 100644 --- a/scripts/npc/9120003.js +++ b/scripts/npc/9120003.js @@ -49,7 +49,7 @@ function action(mode, type, selection) { cm.sendOk("Please check and see if you have " + price + " mesos to enter this place."); else { cm.gainMeso(-price); - cm.warp(801000100 + 100 * cm.getPlayer().getGender()); + cm.warp(801000100 + 100 * cm.getPlayer().getGender(), "out00"); } cm.dispose(); } diff --git a/scripts/npc/9120015.js b/scripts/npc/9120015.js index bb0a9642d0..f5846c1ac1 100644 --- a/scripts/npc/9120015.js +++ b/scripts/npc/9120015.js @@ -50,7 +50,7 @@ function action(mode, type, selection) { cm.dispose(); } } else { - cm.warp(801040000); + cm.warp(801040000, "in00"); cm.dispose(); } } diff --git a/scripts/npc/9120200.js b/scripts/npc/9120200.js index 4d9bb231ad..e517b07837 100644 --- a/scripts/npc/9120200.js +++ b/scripts/npc/9120200.js @@ -30,9 +30,9 @@ function action(mode, type, selection) { cm.dispose(); } else { if (mode == 0) { - cm.sendOk("If you want to return to #m801000000#, then talk to me"); + cm.sendOk("If you want to return to #m801000000#, then talk to me."); cm.dispose(); - } if (mode == 1) { + } else if (mode == 1) { status++; } if (status == 1) { diff --git a/scripts/npc/9270033.js b/scripts/npc/9270033.js index b12b211261..186a9d1c41 100644 --- a/scripts/npc/9270033.js +++ b/scripts/npc/9270033.js @@ -60,7 +60,7 @@ function action(mode, type, selection) { } } - cm.warp(541010110); + cm.warp(541010110, 0); cm.dispose(); } } diff --git a/scripts/npc/9977777.js b/scripts/npc/9977777.js index 233382105d..5654952e9f 100644 --- a/scripts/npc/9977777.js +++ b/scripts/npc/9977777.js @@ -62,6 +62,7 @@ function writeFeatureTab_Skills() { addFeature("Chair Mastery - map chair boosts HP/MP rec."); addFeature("Mu Lung Dojo skills functional."); addFeature("Monster Magnet skill no longer crashes players."); + addFeature("HP/MP consumption from skills triggers pet autopot."); } function writeFeatureTab_Quests() { @@ -278,7 +279,6 @@ function writeFeatureTab_Project() { addFeature("Protected many flaws with login management system."); addFeature("Developed a robust anti-exploit login coordinator."); addFeature("Revised uniqueness aspect of logged in accounts."); - addFeature("Developed pooling system for IoSession sent packets."); addFeature("Usage of HikariCP to improve DB connection calls."); addFeature("Usage of Java Threadpool to improve runnable calls."); addFeature("Developed many survey tools for content profiling."); diff --git a/scripts/npc/ThiefPassword.js b/scripts/npc/ThiefPassword.js index ca6df9a429..efc0ff1db8 100644 --- a/scripts/npc/ThiefPassword.js +++ b/scripts/npc/ThiefPassword.js @@ -23,7 +23,7 @@ function action(mode, type, selection){ else if(status == 1){ if(cm.getText() == "Open Sesame"){ if(cm.isQuestCompleted(3925)) - cm.warp(260010402); + cm.warp(260010402, 1); else cm.playerMessage(5, "Although you said the right answer, the door will not budge."); diff --git a/scripts/portal/MC2revive.js b/scripts/portal/MC2revive.js index 07e4002729..283d3925f5 100644 --- a/scripts/portal/MC2revive.js +++ b/scripts/portal/MC2revive.js @@ -1,8 +1,5 @@ function enter(pi) { - if ( pi.getPlayer().getTeam() == 0 ) { - pi.warp( pi.getMapId() - 100); - } else { - pi.warp( pi.getMapId() - 100); - } + pi.playPortalSound(); + pi.warp( pi.getMapId() - 100); return true; } \ No newline at end of file diff --git a/scripts/portal/MD_drakeroom.js b/scripts/portal/MD_drakeroom.js index 96ee511d5d..86339e773a 100644 --- a/scripts/portal/MD_drakeroom.js +++ b/scripts/portal/MD_drakeroom.js @@ -32,7 +32,7 @@ function enter(pi) { for (var i = 0; i < dungeons; i++) { if(pi.startDungeonInstance(dungeonid + i)) { pi.playPortalSound(); - pi.warpParty(dungeonid + i); + pi.warpParty(dungeonid + i, "out00"); return true; } } @@ -44,7 +44,7 @@ function enter(pi) { for (var i = 0; i < dungeons; i++) { if(pi.startDungeonInstance(dungeonid + i)) { pi.playPortalSound(); - pi.warp(dungeonid + i); + pi.warp(dungeonid + i, "out00"); return true; } } diff --git a/scripts/portal/MD_error.js b/scripts/portal/MD_error.js index 0d91482f3e..51018666a0 100644 --- a/scripts/portal/MD_error.js +++ b/scripts/portal/MD_error.js @@ -34,7 +34,7 @@ function enter(pi) { for (var i = 0; i < dungeons; i++) { if(pi.startDungeonInstance(dungeonid + i)) { pi.playPortalSound(); - pi.warpParty(dungeonid + i); + pi.warpParty(dungeonid + i, "out00"); return true; } } @@ -46,7 +46,7 @@ function enter(pi) { for (var i = 0; i < dungeons; i++) { if(pi.startDungeonInstance(dungeonid + i)) { pi.playPortalSound(); - pi.warp(dungeonid + i); + pi.warp(dungeonid + i, "out00"); return true; } } diff --git a/scripts/portal/MD_golem.js b/scripts/portal/MD_golem.js index b4a46ae2f9..539e980cc7 100644 --- a/scripts/portal/MD_golem.js +++ b/scripts/portal/MD_golem.js @@ -34,7 +34,7 @@ function enter(pi) { for (var i = 0; i < dungeons; i++) { if(pi.startDungeonInstance(dungeonid + i)) { pi.playPortalSound(); - pi.warpParty(dungeonid + i); + pi.warpParty(dungeonid + i, "out00"); return true; } } @@ -46,7 +46,7 @@ function enter(pi) { for (var i = 0; i < dungeons; i++) { if(pi.startDungeonInstance(dungeonid + i)) { pi.playPortalSound(); - pi.warp(dungeonid + i); + pi.warp(dungeonid + i, "out00"); return true; } } diff --git a/scripts/portal/MD_high.js b/scripts/portal/MD_high.js index b13aa89c32..4c429593f1 100644 --- a/scripts/portal/MD_high.js +++ b/scripts/portal/MD_high.js @@ -34,7 +34,7 @@ function enter(pi) { for (var i = 0; i < dungeons; i++) { if(pi.startDungeonInstance(dungeonid + i)) { pi.playPortalSound(); - pi.warpParty(dungeonid + i); + pi.warpParty(dungeonid + i, "out00"); return true; } } @@ -46,7 +46,7 @@ function enter(pi) { for (var i = 0; i < dungeons; i++) { if(pi.startDungeonInstance(dungeonid + i)) { pi.playPortalSound(); - pi.warp(dungeonid + i); + pi.warp(dungeonid + i, "out00"); return true; } } diff --git a/scripts/portal/MD_mushroom.js b/scripts/portal/MD_mushroom.js index 4d15371ba3..46f12dc1bf 100644 --- a/scripts/portal/MD_mushroom.js +++ b/scripts/portal/MD_mushroom.js @@ -34,7 +34,7 @@ function enter(pi) { for (var i = 0; i < dungeons; i++) { if(pi.startDungeonInstance(dungeonid + i)) { pi.playPortalSound(); - pi.warpParty(dungeonid + i); + pi.warpParty(dungeonid + i, "out00"); return true; } } @@ -46,7 +46,7 @@ function enter(pi) { for (var i = 0; i < dungeons; i++) { if(pi.startDungeonInstance(dungeonid + i)) { pi.playPortalSound(); - pi.warp(dungeonid + i); + pi.warp(dungeonid + i, "out00"); return true; } } diff --git a/scripts/portal/MD_pig.js b/scripts/portal/MD_pig.js index 21a3c676bc..31d1bbbdfb 100644 --- a/scripts/portal/MD_pig.js +++ b/scripts/portal/MD_pig.js @@ -34,7 +34,7 @@ function enter(pi) { for (var i = 0; i < dungeons; i++) { if(pi.startDungeonInstance(dungeonid + i)) { pi.playPortalSound(); - pi.warpParty(dungeonid + i); + pi.warpParty(dungeonid + i, "out00"); return true; } } @@ -46,7 +46,7 @@ function enter(pi) { for (var i = 0; i < dungeons; i++) { if(pi.startDungeonInstance(dungeonid + i)) { pi.playPortalSound(); - pi.warp(dungeonid + i); + pi.warp(dungeonid + i, "out00"); return true; } } diff --git a/scripts/portal/MD_protect.js b/scripts/portal/MD_protect.js index 4dd9fdc253..7bdef62c06 100644 --- a/scripts/portal/MD_protect.js +++ b/scripts/portal/MD_protect.js @@ -32,7 +32,7 @@ function enter(pi) { for (var i = 0; i < dungeons; i++) { if(pi.startDungeonInstance(dungeonid + i)) { pi.playPortalSound(); - pi.warpParty(dungeonid + i); + pi.warpParty(dungeonid + i, "out00"); return true; } } @@ -44,7 +44,7 @@ function enter(pi) { for (var i = 0; i < dungeons; i++) { if(pi.startDungeonInstance(dungeonid + i)) { pi.playPortalSound(); - pi.warp(dungeonid + i); + pi.warp(dungeonid + i, "out00"); return true; } } diff --git a/scripts/portal/MD_rabbit.js b/scripts/portal/MD_rabbit.js index 7e9ad57ccd..0d3737702a 100644 --- a/scripts/portal/MD_rabbit.js +++ b/scripts/portal/MD_rabbit.js @@ -32,7 +32,7 @@ function enter(pi) { for (var i = 0; i < dungeons; i++) { if(pi.startDungeonInstance(dungeonid + i)) { pi.playPortalSound(); - pi.warpParty(dungeonid + i); + pi.warpParty(dungeonid + i, "out00"); return true; } } @@ -44,7 +44,7 @@ function enter(pi) { for (var i = 0; i < dungeons; i++) { if(pi.startDungeonInstance(dungeonid + i)) { pi.playPortalSound(); - pi.warp(dungeonid + i); + pi.warp(dungeonid + i, "out00"); return true; } } diff --git a/scripts/portal/MD_remember.js b/scripts/portal/MD_remember.js index 3c4f007a6f..21d2a3ff3d 100644 --- a/scripts/portal/MD_remember.js +++ b/scripts/portal/MD_remember.js @@ -32,7 +32,7 @@ function enter(pi) { for (var i = 0; i < dungeons; i++) { if(pi.startDungeonInstance(dungeonid + i)) { pi.playPortalSound(); - pi.warpParty(dungeonid + i); + pi.warpParty(dungeonid + i, "out00"); return true; } } @@ -44,7 +44,7 @@ function enter(pi) { for (var i = 0; i < dungeons; i++) { if(pi.startDungeonInstance(dungeonid + i)) { pi.playPortalSound(); - pi.warp(dungeonid + i); + pi.warp(dungeonid + i, "out00"); return true; } } diff --git a/scripts/portal/MD_roundTable.js b/scripts/portal/MD_roundTable.js index 44aa8bbccd..8f4050bd66 100644 --- a/scripts/portal/MD_roundTable.js +++ b/scripts/portal/MD_roundTable.js @@ -32,7 +32,7 @@ function enter(pi) { for (var i = 0; i < dungeons; i++) { if(pi.startDungeonInstance(dungeonid + i)) { pi.playPortalSound(); - pi.warpParty(dungeonid + i); + pi.warpParty(dungeonid + i, "out00"); return true; } } @@ -44,7 +44,7 @@ function enter(pi) { for (var i = 0; i < dungeons; i++) { if(pi.startDungeonInstance(dungeonid + i)) { pi.playPortalSound(); - pi.warp(dungeonid + i); + pi.warp(dungeonid + i, "out00"); return true; } } diff --git a/scripts/portal/MD_sand.js b/scripts/portal/MD_sand.js index 217b3efed5..d459d074bd 100644 --- a/scripts/portal/MD_sand.js +++ b/scripts/portal/MD_sand.js @@ -32,7 +32,7 @@ function enter(pi) { for (var i = 0; i < dungeons; i++) { if(pi.startDungeonInstance(dungeonid + i)) { pi.playPortalSound(); - pi.warpParty(dungeonid + i); + pi.warpParty(dungeonid + i, "out00"); return true; } } @@ -44,7 +44,7 @@ function enter(pi) { for (var i = 0; i < dungeons; i++) { if(pi.startDungeonInstance(dungeonid + i)) { pi.playPortalSound(); - pi.warp(dungeonid + i); + pi.warp(dungeonid + i, "out00"); return true; } } diff --git a/scripts/portal/MD_treasure.js b/scripts/portal/MD_treasure.js index b811797c2b..cc37b21a8c 100644 --- a/scripts/portal/MD_treasure.js +++ b/scripts/portal/MD_treasure.js @@ -32,7 +32,7 @@ function enter(pi) { for (var i = 0; i < dungeons; i++) { if(pi.startDungeonInstance(dungeonid + i)) { pi.playPortalSound(); - pi.warpParty(dungeonid + i); + pi.warpParty(dungeonid + i, "out00"); return true; } } @@ -44,7 +44,7 @@ function enter(pi) { for (var i = 0; i < dungeons; i++) { if(pi.startDungeonInstance(dungeonid + i)) { pi.playPortalSound(); - pi.warp(dungeonid + i); + pi.warp(dungeonid + i, "out00"); return true; } } diff --git a/scripts/portal/NextMap.js b/scripts/portal/NextMap.js index c0cbd12fe4..c73dd26196 100644 --- a/scripts/portal/NextMap.js +++ b/scripts/portal/NextMap.js @@ -1,5 +1,5 @@ function enter(pi) { pi.playPortalSound(); - pi.warp(pi.getMapId() + 100); + pi.warp(pi.getMapId() + 100, 0); return true; } \ No newline at end of file diff --git a/scripts/portal/Pinkin.js b/scripts/portal/Pinkin.js index 08e1b26048..08d5b5f1a9 100644 --- a/scripts/portal/Pinkin.js +++ b/scripts/portal/Pinkin.js @@ -19,7 +19,7 @@ */ /* -Vs Pink Bean - Ressurection stage portal +Vs Pink Bean - Resurrection stage portal @author Ronan */ diff --git a/scripts/portal/Populatus00.js b/scripts/portal/Populatus00.js index 20c64ee7bb..deed0cea90 100644 --- a/scripts/portal/Populatus00.js +++ b/scripts/portal/Populatus00.js @@ -50,7 +50,7 @@ function enter(pi) { } } else { pi.playPortalSound(); - pi.warp(922020300); + pi.warp(922020300, 0); return true; } } \ No newline at end of file diff --git a/scripts/portal/gaga_success.js b/scripts/portal/gaga_success.js index cd6b93d9f9..c32a40e070 100644 --- a/scripts/portal/gaga_success.js +++ b/scripts/portal/gaga_success.js @@ -1,6 +1,6 @@ //Author: kevintjuh93 function enter(pi) { - pi.playPortalSound(); pi.warp(922240100 + (pi.getPlayer().getMapId() - 922240000)); + pi.playPortalSound(); pi.warp(922240100 + (pi.getPlayer().getMapId() - 922240000), 0); return true; } \ No newline at end of file diff --git a/scripts/portal/jnr6_out.js b/scripts/portal/jnr6_out.js index ba099b9be4..aec7e9956a 100644 --- a/scripts/portal/jnr6_out.js +++ b/scripts/portal/jnr6_out.js @@ -1,6 +1,6 @@ function enter(pi) { if (pi.getMap().getReactorByName("jnr6_out").getState() == 1) { - pi.playPortalSound(); pi.warp(926110300); + pi.playPortalSound(); pi.warp(926110300, 0); return true; } else { pi.playerMessage(5, "The portal is not opened yet."); diff --git a/scripts/portal/skyrom.js b/scripts/portal/skyrom.js index 6473e4e458..ff5dba59d4 100644 --- a/scripts/portal/skyrom.js +++ b/scripts/portal/skyrom.js @@ -21,7 +21,7 @@ function enter(pi) { if(pi.isQuestStarted(3935) && !pi.haveItem(4031574, 1)) { if(pi.getWarpMap(926000010).countPlayers() == 0) { - pi.playPortalSound(); pi.warp(926000010); + pi.playPortalSound(); pi.warp(926000010, 0); return true; } else { pi.message("Someone is already trying this map."); diff --git a/scripts/portal/stageBogo.js b/scripts/portal/stageBogo.js index 6ec238c3c9..115efd4a7e 100644 --- a/scripts/portal/stageBogo.js +++ b/scripts/portal/stageBogo.js @@ -24,6 +24,6 @@ @Author Ronan */ function enter(pi) { - pi.playPortalSound(); pi.warp(670010800); + pi.playPortalSound(); pi.warp(670010800, 0); return true; } \ No newline at end of file diff --git a/scripts/quest/2568.js b/scripts/quest/2568.js index 6f2c64f01f..846cbd3f52 100644 --- a/scripts/quest/2568.js +++ b/scripts/quest/2568.js @@ -16,7 +16,7 @@ function start(mode, type, selection) { } else { qm.forceStartQuest(); - qm.warp(912060200); + qm.warp(912060200, 0); } qm.dispose(); } diff --git a/scripts/quest/3933.js b/scripts/quest/3933.js index 401d2bf45f..04b1261820 100644 --- a/scripts/quest/3933.js +++ b/scripts/quest/3933.js @@ -48,7 +48,7 @@ function start(mode, type, selection) { qm.sendOk("There is someone currently in this map, come back later."); qm.dispose(); } else { - qm.warp(926000000); + qm.warp(926000000, "st00"); qm.forceStartQuest(); qm.dispose(); } diff --git a/scripts/reactor/2200001.js b/scripts/reactor/2200001.js index 7c8117f80f..850a492c4d 100644 --- a/scripts/reactor/2200001.js +++ b/scripts/reactor/2200001.js @@ -28,5 +28,5 @@ function act(){ rm.playerMessage(5,"You have found a secret factory!"); - rm.warp(Math.random() < .5 ? 922000020 : 922000021); + rm.warp(Math.random() < .5 ? 922000020 : 922000021, 0); } \ No newline at end of file diff --git a/sql/db_database.sql b/sql/db_database.sql index 7bd871eec7..19794a205d 100644 --- a/sql/db_database.sql +++ b/sql/db_database.sql @@ -16325,6 +16325,9 @@ CREATE TABLE IF NOT EXISTS `mts_items` ( `position` int(11) DEFAULT '0', `upgradeslots` int(11) DEFAULT '0', `level` int(11) DEFAULT '0', + `itemlevel` int(11) NOT NULL DEFAULT '1', + `itemexp` int(11) unsigned NOT NULL DEFAULT '0', + `ringid` int(11) NOT NULL DEFAULT '-1', `str` int(11) DEFAULT '0', `dex` int(11) DEFAULT '0', `int` int(11) DEFAULT '0', @@ -16348,6 +16351,8 @@ CREATE TABLE IF NOT EXISTS `mts_items` ( `transfer` int(2) DEFAULT '0', `vicious` int(2) unsigned NOT NULL DEFAULT '0', `flag` int(2) unsigned NOT NULL DEFAULT '0', + `expiration` bigint(20) NOT NULL DEFAULT '-1', + `giftFrom` varchar(26) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; diff --git a/src/client/AbstractCharacterListener.java b/src/client/AbstractCharacterListener.java index 439d52a07d..fd09457f4a 100644 --- a/src/client/AbstractCharacterListener.java +++ b/src/client/AbstractCharacterListener.java @@ -26,5 +26,6 @@ package client; public interface AbstractCharacterListener { public void onHpChanged(int oldHp); public void onHpmpPoolUpdate(); + public void onStatUpdate(); public void onAnnounceStatPoolUpdate(); } diff --git a/src/client/AbstractMapleCharacterObject.java b/src/client/AbstractMapleCharacterObject.java index b584987590..03c2c1a492 100644 --- a/src/client/AbstractMapleCharacterObject.java +++ b/src/client/AbstractMapleCharacterObject.java @@ -220,6 +220,10 @@ public abstract class AbstractMapleCharacterObject extends AbstractAnimatedMaple listener.onHpmpPoolUpdate(); } + private void dispatchStatUpdated() { + listener.onStatUpdate(); + } + private void dispatchStatPoolUpdateAnnounced() { listener.onAnnounceStatPoolUpdate(); } @@ -299,6 +303,7 @@ public abstract class AbstractMapleCharacterObject extends AbstractAnimatedMaple try { statUpdates.clear(); boolean poolUpdate = false; + boolean statUpdate = false; if (hpMpPool != null) { short newHp = (short) (hpMpPool >> 48); @@ -370,7 +375,7 @@ public abstract class AbstractMapleCharacterObject extends AbstractAnimatedMaple statUpdates.put(MapleStat.AVAILABLEAP, remainingAp); } - poolUpdate = true; // recalc stats + statUpdate = true; } if (newSp != null) { @@ -385,6 +390,10 @@ public abstract class AbstractMapleCharacterObject extends AbstractAnimatedMaple if (poolUpdate) { dispatchHpmpPoolUpdated(); } + + if (statUpdate) { + dispatchStatUpdated(); + } if (!silent) { dispatchStatPoolUpdateAnnounced(); diff --git a/src/client/MapleCharacter.java b/src/client/MapleCharacter.java index 8c8411e99f..54d913fc2f 100644 --- a/src/client/MapleCharacter.java +++ b/src/client/MapleCharacter.java @@ -91,6 +91,7 @@ import server.life.MobSkillFactory; import server.maps.FieldLimit; import server.maps.MapleHiredMerchant; import server.maps.MapleDoor; +import server.maps.MapleDoorObject; import server.maps.MapleDragon; import server.maps.MapleMap; import server.maps.MapleMapEffect; @@ -136,6 +137,7 @@ import client.inventory.manipulator.MapleCashidGenerator; import client.inventory.manipulator.MapleInventoryManipulator; import client.newyear.NewYearCardRecord; import client.processor.FredrickProcessor; +import client.processor.PetAutopotProcessor; import constants.ExpTable; import constants.GameConstants; import constants.ItemConstants; @@ -145,6 +147,7 @@ import constants.skills.Beginner; import constants.skills.Bishop; import constants.skills.BlazeWizard; import constants.skills.Bowmaster; +import constants.skills.Brawler; import constants.skills.Buccaneer; import constants.skills.Corsair; import constants.skills.Crusader; @@ -166,7 +169,7 @@ import constants.skills.Priest; import constants.skills.Ranger; import constants.skills.Shadower; import constants.skills.Sniper; -import constants.skills.Swordsman; +import constants.skills.Warrior; import constants.skills.ThunderBreaker; import org.apache.mina.util.ConcurrentHashSet; @@ -357,6 +360,11 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } } + @Override + public void onStatUpdate() { + recalcLocalStats(); + } + @Override public void onAnnounceStatPoolUpdate() { List> statup = new ArrayList<>(8); @@ -1647,7 +1655,9 @@ public class MapleCharacter extends AbstractMapleCharacterObject { for(MapleDoor door : partyDoors.values()) { for(MapleCharacter pchar : partyMembers) { - door.getTownDoor().sendDestroyData(pchar.getClient(), true); + MapleDoorObject mdo = door.getTownDoor(); + mdo.sendDestroyData(pchar.getClient(), true); + pchar.removeVisibleMapObject(mdo); } } @@ -1655,7 +1665,9 @@ public class MapleCharacter extends AbstractMapleCharacterObject { Collection leaverDoors = partyLeaver.getDoors(); for(MapleDoor door : leaverDoors) { for(MapleCharacter pchar : partyMembers) { - door.getTownDoor().sendDestroyData(pchar.getClient(), true); + MapleDoorObject mdo = door.getTownDoor(); + mdo.sendDestroyData(pchar.getClient(), true); + pchar.removeVisibleMapObject(mdo); } } } @@ -1666,7 +1678,9 @@ public class MapleCharacter extends AbstractMapleCharacterObject { if(door != null) { for(MapleCharacter pchar : partyMembers) { - door.getTownDoor().sendSpawnData(pchar.getClient()); + MapleDoorObject mdo = door.getTownDoor(); + mdo.sendSpawnData(pchar.getClient()); + pchar.addVisibleMapObject(mdo); } } } @@ -1677,17 +1691,24 @@ public class MapleCharacter extends AbstractMapleCharacterObject { if(partyDoors != null) { for(MapleDoor door : partyDoors.values()) { - door.getTownDoor().sendDestroyData(partyLeaver.getClient(), true); + MapleDoorObject mdo = door.getTownDoor(); + mdo.sendDestroyData(partyLeaver.getClient(), true); + partyLeaver.removeVisibleMapObject(mdo); } } for(MapleDoor door : leaverDoors) { - door.getTownDoor().sendDestroyData(partyLeaver.getClient(), true); + MapleDoorObject mdo = door.getTownDoor(); + mdo.sendDestroyData(partyLeaver.getClient(), true); + partyLeaver.removeVisibleMapObject(mdo); } for(MapleDoor door : leaverDoors) { door.updateDoorPortal(partyLeaver); - door.getTownDoor().sendSpawnData(partyLeaver.getClient()); + + MapleDoorObject mdo = door.getTownDoor(); + mdo.sendSpawnData(partyLeaver.getClient()); + partyLeaver.addVisibleMapObject(mdo); } } } @@ -2697,6 +2718,24 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } } + public void collectDiseases() { + for (MapleCharacter chr : map.getAllPlayers()) { + int cid = chr.getId(); + + for (Entry> di : chr.getAllDiseases().entrySet()) { + MapleDisease disease = di.getKey(); + MobSkill skill = di.getValue().getRight(); + final List> debuff = Collections.singletonList(new Pair<>(disease, Integer.valueOf(skill.getX()))); + + if (disease != MapleDisease.SLOW) { + this.announce(MaplePacketCreator.giveForeignDebuff(cid, debuff, skill)); + } else { + this.announce(MaplePacketCreator.giveForeignSlowDebuff(cid, debuff, skill)); + } + } + } + } + public void giveDebuff(final MapleDisease disease, MobSkill skill) { if (!hasDisease(disease) && getDiseasesSize() < 2) { if (!(disease == MapleDisease.SEDUCE || disease == MapleDisease.STUN)) { @@ -6063,12 +6102,8 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public boolean hasEntered(String script, int mapId) { - if (entered.containsKey(mapId)) { - if (entered.get(mapId).equals(script)) { - return true; - } - } - return false; + String e = entered.get(mapId); + return script.equals(e); } public void hasGivenFame(MapleCharacter to) { @@ -6416,7 +6451,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { addhp += Randomizer.rand(12, 16); addmp += Randomizer.rand(10, 12); } else if (job.isA(MapleJob.WARRIOR) || job.isA(MapleJob.DAWNWARRIOR1)) { - improvingMaxHP = isCygnus() ? SkillFactory.getSkill(DawnWarrior.MAX_HP_INCREASE) : SkillFactory.getSkill(Swordsman.IMPROVED_MAX_HP_INCREASE); + improvingMaxHP = isCygnus() ? SkillFactory.getSkill(DawnWarrior.MAX_HP_INCREASE) : SkillFactory.getSkill(Warrior.IMPROVED_MAXHP); if (job.isA(MapleJob.CRUSADER)) { improvingMaxMP = SkillFactory.getSkill(1210000); } else if (job.isA(MapleJob.DAWNWARRIOR2)) { @@ -6437,7 +6472,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { addhp += 30000; addmp += 30000; } else if (job.isA(MapleJob.PIRATE) || job.isA(MapleJob.THUNDERBREAKER1)) { - improvingMaxHP = isCygnus() ? SkillFactory.getSkill(ThunderBreaker.IMPROVE_MAX_HP) : SkillFactory.getSkill(5100000); + improvingMaxHP = isCygnus() ? SkillFactory.getSkill(ThunderBreaker.IMPROVE_MAX_HP) : SkillFactory.getSkill(Brawler.IMPROVE_MAX_HP); improvingMaxHPLevel = getSkillLevel(improvingMaxHP); addhp += Randomizer.rand(22, 28); addmp += Randomizer.rand(18, 23); @@ -6446,7 +6481,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { int aids = Randomizer.rand(4, 8); addmp += aids + Math.floor(aids * 0.1); } - if (improvingMaxHPLevel > 0 && (job.isA(MapleJob.WARRIOR) || job.isA(MapleJob.PIRATE) || job.isA(MapleJob.DAWNWARRIOR1))) { + if (improvingMaxHPLevel > 0 && (job.isA(MapleJob.WARRIOR) || job.isA(MapleJob.PIRATE) || job.isA(MapleJob.DAWNWARRIOR1) || job.isA(MapleJob.THUNDERBREAKER1))) { addhp += improvingMaxHP.getEffect(improvingMaxHPLevel).getX(); } if (improvingMaxMPLevel > 0 && (job.isA(MapleJob.MAGICIAN) || job.isA(MapleJob.CRUSADER) || job.isA(MapleJob.BLAZEWIZARD1))) { @@ -7920,7 +7955,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { client.announce(MaplePacketCreator.updatePlayerStats(hpmpupdate, true, this)); } - if (oldmaxhp != localmaxhp) { + if (oldmaxhp != localmaxhp) { // thanks Wh1SK3Y for pointing out a deadlock occuring related to party members HP updatePartyMemberHP(); } } finally { @@ -8072,15 +8107,11 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public void resetEnteredScript() { - if (entered.containsKey(map.getId())) { - entered.remove(map.getId()); - } + entered.remove(map.getId()); } public void resetEnteredScript(int mapId) { - if (entered.containsKey(mapId)) { - entered.remove(mapId); - } + entered.remove(mapId); } public void resetEnteredScript(String script) { @@ -9102,11 +9133,35 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } updateHpMp(nextHp, nextMp); - return true; } finally { statWlock.unlock(); effLock.unlock(); } + + // autopot on HPMP deplete... thanks shavit for finding out D. Roar doesn't trigger autopot request + if (hpchange < 0) { + MapleKeyBinding autohpPot = this.getKeymap().get(91); + if (autohpPot != null) { + int autohpItemid = autohpPot.getAction(); + Item autohpItem = this.getInventory(MapleInventoryType.USE).findById(autohpItemid); + if (autohpItem != null) { + PetAutopotProcessor.runAutopotAction(client, autohpItem.getPosition(), autohpItemid); + } + } + } + + if (mpchange < 0) { + MapleKeyBinding autompPot = this.getKeymap().get(92); + if (autompPot != null) { + int autompItemid = autompPot.getAction(); + Item autompItem = this.getInventory(MapleInventoryType.USE).findById(autompItemid); + if (autompItem != null) { + PetAutopotProcessor.runAutopotAction(client, autompItem.getPosition(), autompItemid); + } + } + } + + return true; } public void setInventory(MapleInventoryType type, MapleInventory inv) { diff --git a/src/client/MapleFamily.java b/src/client/MapleFamily.java index e87e417991..efd017ffc6 100644 --- a/src/client/MapleFamily.java +++ b/src/client/MapleFamily.java @@ -217,7 +217,11 @@ public class MapleFamily { int repsToSenior = rsEntries.getInt("reptosenior"); String precepts = rsEntries.getString("precepts"); //Timestamp lastResetTime = rsEntries.getTimestamp("lastresettime"); //taken care of by FamilyDailyResetWorker - MapleFamily family = Server.getInstance().getWorld(world).getFamily(familyid); + World wserv = Server.getInstance().getWorld(world); + if (wserv == null) { + continue; + } + MapleFamily family = wserv.getFamily(familyid); if(family == null) { family = new MapleFamily(familyid, world); Server.getInstance().getWorld(world).addFamily(familyid, family); diff --git a/src/client/SkillFactory.java b/src/client/SkillFactory.java index 1bd4aa0c63..7b542c0e2d 100644 --- a/src/client/SkillFactory.java +++ b/src/client/SkillFactory.java @@ -68,7 +68,7 @@ import constants.skills.Shadower; import constants.skills.Sniper; import constants.skills.Spearman; import constants.skills.SuperGM; -import constants.skills.Swordsman; +import constants.skills.Warrior; import constants.skills.ThunderBreaker; import constants.skills.WhiteKnight; import constants.skills.WindArcher; @@ -189,7 +189,7 @@ public class SkillFactory { case Beginner.MONSTER_RIDER: case Beginner.ECHO_OF_HERO: case Beginner.MAP_CHAIR: - case Swordsman.IRON_BODY: + case Warrior.IRON_BODY: case Fighter.AXE_BOOSTER: case Fighter.POWER_GUARD: case Fighter.RAGE: diff --git a/src/client/processor/AssignAPProcessor.java b/src/client/processor/AssignAPProcessor.java index fd9e2d8aa6..30fe248e21 100644 --- a/src/client/processor/AssignAPProcessor.java +++ b/src/client/processor/AssignAPProcessor.java @@ -38,6 +38,7 @@ import constants.skills.BlazeWizard; import constants.skills.Brawler; import constants.skills.DawnWarrior; import constants.skills.Magician; +import constants.skills.ThunderBreaker; import constants.skills.Warrior; import java.util.ArrayList; import java.util.Collection; @@ -697,7 +698,7 @@ public class AssignAPProcessor { } } else if (job.isA(MapleJob.PIRATE) || job.isA(MapleJob.THUNDERBREAKER1)) { if(!usedAPReset) { - Skill increaseHP = SkillFactory.getSkill(Brawler.IMPROVE_MAX_HP); + Skill increaseHP = SkillFactory.getSkill(job.isA(MapleJob.PIRATE) ? Brawler.IMPROVE_MAX_HP : ThunderBreaker.IMPROVE_MAX_HP); int sLvl = player.getSkillLevel(increaseHP); if(sLvl > 0) diff --git a/src/client/processor/FredrickProcessor.java b/src/client/processor/FredrickProcessor.java index af68116bdc..9b2a14ce05 100644 --- a/src/client/processor/FredrickProcessor.java +++ b/src/client/processor/FredrickProcessor.java @@ -37,7 +37,6 @@ import java.sql.Timestamp; import java.util.LinkedList; import java.util.List; import client.inventory.manipulator.MapleInventoryManipulator; -import constants.ServerConstants; import java.util.Collections; import net.server.Server; import net.server.world.World; diff --git a/src/client/processor/PetAutopotProcessor.java b/src/client/processor/PetAutopotProcessor.java new file mode 100644 index 0000000000..faaf04912a --- /dev/null +++ b/src/client/processor/PetAutopotProcessor.java @@ -0,0 +1,178 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + Copyleft (L) 2016 - 2019 RonanLana (HeavenMS) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + 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 Affero General Public License for more details. + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package client.processor; + +import client.MapleCharacter; +import client.MapleClient; +import client.inventory.Item; +import client.inventory.MapleInventory; +import client.inventory.MapleInventoryType; +import client.inventory.manipulator.MapleInventoryManipulator; +import constants.ServerConstants; +import java.util.List; +import server.MapleItemInformationProvider; +import server.MapleStatEffect; +import tools.MaplePacketCreator; + +/** + * + * @author Ronan - multi-pot consumption feature + */ +public class PetAutopotProcessor { + + private static class AutopotAction { + + private MapleClient c; + private short slot; + private int itemId; + + private Item toUse; + private List toUseList; + + private boolean hasHpGain, hasMpGain; + private int maxHp, maxMp, curHp, curMp; + private double incHp, incMp; + + private boolean cursorOnNextAvailablePot(MapleCharacter chr) { + if(toUseList == null) { + toUseList = chr.getInventory(MapleInventoryType.USE).linkedListById(itemId); + } + + toUse = null; + while(!toUseList.isEmpty()) { + Item it = toUseList.remove(0); + + if(it.getQuantity() > 0) { + toUse = it; + slot = it.getPosition(); + + return true; + } + } + + return false; + } + + public AutopotAction(MapleClient c, short slot, int itemId) { + this.c = c; + this.slot = slot; + this.itemId = itemId; + } + + public void run() { + MapleClient c = this.c; + MapleCharacter chr = c.getPlayer(); + if (!chr.isAlive()) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + + int useCount = 0, qtyCount = 0; + MapleStatEffect stat = null; + + MapleInventory useInv = chr.getInventory(MapleInventoryType.USE); + useInv.lockInventory(); + try { + toUse = useInv.getItem(slot); + if (toUse != null) { + if (toUse.getItemId() != itemId) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + + toUseList = null; + + // from now on, toUse becomes the "cursor" for the current pot being used + if (toUse.getQuantity() <= 0) { + if (!cursorOnNextAvailablePot(chr)) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + } + + stat = MapleItemInformationProvider.getInstance().getItemEffect(toUse.getItemId()); + hasHpGain = stat.getHp() > 0 || stat.getHpRate() > 0.0; + hasMpGain = stat.getMp() > 0 || stat.getMpRate() > 0.0; + + maxHp = chr.getCurrentMaxHp(); + maxMp = chr.getCurrentMaxMp(); + + curHp = chr.getHp(); + curMp = chr.getMp(); + + incHp = stat.getHp(); + if(incHp <= 0 && hasHpGain) incHp = Math.ceil(maxHp * stat.getHpRate()); + + incMp = stat.getMp(); + if(incMp <= 0 && hasMpGain) incMp = Math.ceil(maxMp * stat.getMpRate()); + + if (ServerConstants.USE_COMPULSORY_AUTOPOT) { + if (hasHpGain) { + qtyCount = (int) Math.ceil(((ServerConstants.PET_AUTOHP_RATIO * maxHp) - curHp) / incHp); + } + + if (hasMpGain) { + qtyCount = Math.max(qtyCount, (int) Math.ceil(((ServerConstants.PET_AUTOMP_RATIO * maxMp) - curMp) / incMp)); + } + } else { + qtyCount = 1; // non-compulsory autopot concept thanks to marcuswoon + } + + while (true) { + short qtyToUse = (short) Math.min(qtyCount, toUse.getQuantity()); + MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.USE, slot, qtyToUse, false); + + curHp += (incHp * qtyToUse); + curMp += (incMp * qtyToUse); + + useCount += qtyToUse; + qtyCount -= qtyToUse; + + if(toUse.getQuantity() == 0 && qtyCount > 0) { + // depleted out the current slot, fetch for more + + if(!cursorOnNextAvailablePot(chr)) { + break; // no more pots available + } + } else { + break; // gracefully finished it's job, quit the loop + } + } + } + } finally { + useInv.unlockInventory(); + } + + for (int i = 0; i < useCount; i++) { + stat.applyTo(chr); + } + + chr.announce(MaplePacketCreator.enableActions()); + } + } + + public static void runAutopotAction(MapleClient c, short slot, int itemid) { + AutopotAction action = new AutopotAction(c, slot, itemid); + action.run(); + } + +} diff --git a/src/constants/ServerConstants.java b/src/constants/ServerConstants.java index c3887e84e3..4a29d301c7 100644 --- a/src/constants/ServerConstants.java +++ b/src/constants/ServerConstants.java @@ -135,7 +135,7 @@ public class ServerConstants { public static final boolean USE_MAKER_FEE_HEURISTICS = true; //Apply compiled values for stimulants and reagents into the Maker fee calculations (max error revolves around 50k mesos). Set false to use basic constant values instead (results are never higher than requested by the client-side). //Custom Configuration - public static final boolean USE_ENABLE_CUSTOM_NPC_SCRIPT = true;//Enables usage of custom HeavenMS NPC scripts (Agent E, Coco, etc). Will not disable Abdula (it's actually useful for the gameplay), quests or NPC shops. + public static final boolean USE_ENABLE_CUSTOM_NPC_SCRIPT = true;//Enables usage of custom HeavenMS NPC scripts (Agent E, Coco, etc). Will not disable Abdula (it's actually useful for the gameplay) or quests. public static final boolean USE_STARTER_MERGE = false; //Allows any players to use the Equipment Merge custom mechanic (as opposed to the high-level, Maker lv3 requisites). //Commands Configuration diff --git a/src/constants/skills/Aran.java b/src/constants/skills/Aran.java index 923807c632..7a78c8ff69 100644 --- a/src/constants/skills/Aran.java +++ b/src/constants/skills/Aran.java @@ -47,7 +47,6 @@ public class Aran { public static final int HIDDEN_FULL_TRIPLE = 21110008; public static final int SMART_KNOCKBACK = 21111001; public static final int OVER_SWING = 21120002; - public static final int HIGH_DEFENSE = 21120004; public static final int COMBO_TEMPEST = 21120006; public static final int COMBO_BARRIER = 21120007; public static final int HIDDEN_OVER_DOUBLE = 21120009; diff --git a/src/constants/skills/Swordsman.java b/src/constants/skills/Swordsman.java deleted file mode 100644 index 979a87696d..0000000000 --- a/src/constants/skills/Swordsman.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - This file is part of the OdinMS Maple Story Server - Copyright (C) 2008 Patrick Huy - Matthias Butz - Jan Christian Meyer - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation version 3 as published by - the Free Software Foundation. You may not use, modify or distribute - this program under any other version of the GNU Affero General Public - License. - - 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 Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ -package constants.skills; - -/** - * - * @author BubblesDev - */ -public class Swordsman { - public static final int IMPROVED_MAX_HP_INCREASE = 1000001; - public static final int IRON_BODY = 1000003; -} \ No newline at end of file diff --git a/src/constants/skills/Warrior.java b/src/constants/skills/Warrior.java index 050f8a4f15..7bb463fa70 100644 --- a/src/constants/skills/Warrior.java +++ b/src/constants/skills/Warrior.java @@ -11,4 +11,5 @@ package constants.skills; public class Warrior { public static final int IMPROVED_HPREC = 1000000; public static final int IMPROVED_MAXHP = 1000001; + public static final int IRON_BODY = 1000003; } diff --git a/src/net/server/Server.java b/src/net/server/Server.java index 9efc1f5155..a370db5cc8 100644 --- a/src/net/server/Server.java +++ b/src/net/server/Server.java @@ -677,6 +677,7 @@ public class Server { MapleCharacter player = c.getPlayer(); if(player != null && player.isLoggedinWorld()) { player.announceDiseases(); + player.collectDiseases(); } } @@ -1111,18 +1112,25 @@ public class Server { public MapleGuild getGuild(int id, int world, MapleCharacter mc) { synchronized (guilds) { - if (guilds.get(id) != null) { - return guilds.get(id); + MapleGuild g = guilds.get(id); + if (g != null) { + return g; } - MapleGuild g = new MapleGuild(id, world); + + g = new MapleGuild(id, world); if (g.getId() == -1) { return null; } if(mc != null) { - mc.setMGC(g.getMGC(mc.getId())); - if(g.getMGC(mc.getId()) == null) System.out.println("null for " + mc.getName() + " when loading guild " + id); - g.getMGC(mc.getId()).setCharacter(mc); + MapleGuildCharacter mgc = g.getMGC(mc.getId()); + if (mgc != null) { + mc.setMGC(mgc); + mgc.setCharacter(mc); + } else { + FilePrinter.printError(FilePrinter.GUILD_CHAR_ERROR, "Could not find " + mc.getName() + " when loading guild " + id + "."); + } + g.setOnline(mc.getId(), true, mc.getClient().getChannel()); } diff --git a/src/net/server/channel/handlers/AbstractDealDamageHandler.java b/src/net/server/channel/handlers/AbstractDealDamageHandler.java index 7172750966..2ca1a9bcec 100644 --- a/src/net/server/channel/handlers/AbstractDealDamageHandler.java +++ b/src/net/server/channel/handlers/AbstractDealDamageHandler.java @@ -653,16 +653,16 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl // Find the base damage to base futher calculations on. // Several skills have their own formula in this section. - long calcDmgMax = 0; + long calcDmgMax = 0; - if(magic && ret.skill != 0) { - calcDmgMax = (chr.getTotalMagic() * chr.getTotalMagic() / 1000 + chr.getTotalMagic()) / 30 + chr.getTotalInt() / 200; + if(magic && ret.skill != 0) { // thanks onechord for noticing a few false positives stemming from maxdmg as 0 + calcDmgMax = (long) (Math.ceil((chr.getTotalMagic() * Math.ceil(chr.getTotalMagic() / 1000.0) + chr.getTotalMagic()) / 30.0) + Math.ceil(chr.getTotalInt() / 200.0)); } else if(ret.skill == 4001344 || ret.skill == NightWalker.LUCKY_SEVEN || ret.skill == NightLord.TRIPLE_THROW) { - calcDmgMax = (chr.getTotalLuk() * 5) * chr.getTotalWatk() / 100; + calcDmgMax = (long) ((chr.getTotalLuk() * 5) * Math.ceil(chr.getTotalWatk() / 100.0)); } else if(ret.skill == DragonKnight.DRAGON_ROAR) { - calcDmgMax = (chr.getTotalStr() * 4 + chr.getTotalDex()) * chr.getTotalWatk() / 100; + calcDmgMax = (long) ((chr.getTotalStr() * 4 + chr.getTotalDex()) * Math.ceil(chr.getTotalWatk() / 100.0)); } else if(ret.skill == NightLord.VENOMOUS_STAR || ret.skill == Shadower.VENOMOUS_STAB) { - calcDmgMax = (int) (18.5 * (chr.getTotalStr() + chr.getTotalLuk()) + chr.getTotalDex() * 2) / 100 * chr.calculateMaxBaseDamage(chr.getTotalWatk()); + calcDmgMax = (long) (Math.ceil((18.5 * (chr.getTotalStr() + chr.getTotalLuk()) + chr.getTotalDex() * 2) / 100.0) * chr.calculateMaxBaseDamage(chr.getTotalWatk())); } else { calcDmgMax = chr.calculateMaxBaseDamage(chr.getTotalWatk()); } diff --git a/src/net/server/channel/handlers/AllianceOperationHandler.java b/src/net/server/channel/handlers/AllianceOperationHandler.java index 0c74c76142..f24956088e 100644 --- a/src/net/server/channel/handlers/AllianceOperationHandler.java +++ b/src/net/server/channel/handlers/AllianceOperationHandler.java @@ -124,7 +124,11 @@ public final class AllianceOperationHandler extends AbstractMaplePacketHandler { Server.getInstance().resetAllianceGuildPlayersRank(guildid); chr.getMGC().setAllianceRank(2); - Server.getInstance().getGuild(chr.getGuildId()).getMGC(chr.getId()).setAllianceRank(2); + MapleGuild g = Server.getInstance().getGuild(chr.getGuildId()); + if (g != null) { + g.getMGC(chr.getId()).setAllianceRank(2); + } + chr.saveGuildStatus(); Server.getInstance().allianceMessage(alliance.getId(), MaplePacketCreator.addGuildToAlliance(alliance, guildid, c), -1, -1); diff --git a/src/net/server/channel/handlers/CloseRangeDamageHandler.java b/src/net/server/channel/handlers/CloseRangeDamageHandler.java index 00dc153da2..cc5551c571 100644 --- a/src/net/server/channel/handlers/CloseRangeDamageHandler.java +++ b/src/net/server/channel/handlers/CloseRangeDamageHandler.java @@ -33,7 +33,6 @@ import client.MapleBuffStat; import client.MapleCharacter; import client.MapleClient; import client.MapleJob; -import client.MapleStat; import client.Skill; import client.SkillFactory; import constants.GameConstants; @@ -47,6 +46,7 @@ import constants.skills.Rogue; import constants.skills.WindArcher; public final class CloseRangeDamageHandler extends AbstractDealDamageHandler { + @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { MapleCharacter chr = c.getPlayer(); diff --git a/src/net/server/channel/handlers/EnterMTSHandler.java b/src/net/server/channel/handlers/EnterMTSHandler.java index a3ff880cd3..ce78a5ca12 100644 --- a/src/net/server/channel/handlers/EnterMTSHandler.java +++ b/src/net/server/channel/handlers/EnterMTSHandler.java @@ -152,6 +152,12 @@ public final class EnterMTSHandler extends AbstractMaplePacketHandler { equip.setWdef((short) rs.getInt("wdef")); equip.setUpgradeSlots((byte) rs.getInt("upgradeslots")); equip.setLevel((byte) rs.getInt("level")); + equip.setItemLevel(rs.getByte("itemlevel")); + equip.setItemExp(rs.getInt("itemexp")); + equip.setRingId(rs.getInt("ringid")); + equip.setExpiration(rs.getLong("expiration")); + equip.setGiftFrom(rs.getString("giftFrom")); + items.add(new MTSItemInfo((Item) equip, rs.getInt("price") + 100 + (int) (rs.getInt("price") * 0.1), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); } } @@ -209,7 +215,12 @@ public final class EnterMTSHandler extends AbstractMaplePacketHandler { equip.setWdef((short) rs.getInt("wdef")); equip.setUpgradeSlots((byte) rs.getInt("upgradeslots")); equip.setLevel((byte) rs.getInt("level")); + equip.setItemLevel(rs.getByte("itemlevel")); + equip.setItemExp(rs.getInt("itemexp")); + equip.setRingId(rs.getInt("ringid")); equip.setFlag((short) rs.getInt("flag")); + equip.setExpiration(rs.getLong("expiration")); + equip.setGiftFrom(rs.getString("giftFrom")); items.add(new MTSItemInfo((Item) equip, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); } } @@ -256,7 +267,12 @@ public final class EnterMTSHandler extends AbstractMaplePacketHandler { equip.setWdef((short) rs.getInt("wdef")); equip.setUpgradeSlots((byte) rs.getInt("upgradeslots")); equip.setLevel((byte) rs.getInt("level")); + equip.setItemLevel(rs.getByte("itemlevel")); + equip.setItemExp(rs.getInt("itemexp")); + equip.setRingId(rs.getInt("ringid")); equip.setFlag((short) rs.getInt("flag")); + equip.setExpiration(rs.getLong("expiration")); + equip.setGiftFrom(rs.getString("giftFrom")); items.add(new MTSItemInfo((Item) equip, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); } } diff --git a/src/net/server/channel/handlers/MTSHandler.java b/src/net/server/channel/handlers/MTSHandler.java index 6ebd342c99..3ccdc2f007 100644 --- a/src/net/server/channel/handlers/MTSHandler.java +++ b/src/net/server/channel/handlers/MTSHandler.java @@ -160,48 +160,55 @@ public final class MTSHandler extends AbstractMaplePacketHandler { } if (!i.getInventoryType().equals(MapleInventoryType.EQUIP)) { Item item = (Item) i; - ps = con.prepareStatement("INSERT INTO mts_items (tab, type, itemid, quantity, seller, price, owner, sellername, sell_ends) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"); + ps = con.prepareStatement("INSERT INTO mts_items (tab, type, itemid, quantity, expiration, giftFrom, seller, price, owner, sellername, sell_ends) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); ps.setInt(1, 1); ps.setInt(2, (int) invType.getType()); ps.setInt(3, item.getItemId()); ps.setInt(4, quantity); - ps.setInt(5, c.getPlayer().getId()); - ps.setInt(6, price); - ps.setString(7, item.getOwner()); - ps.setString(8, c.getPlayer().getName()); - ps.setString(9, date); + ps.setLong(5, item.getExpiration()); + ps.setString(6, item.getGiftFrom()); + ps.setInt(7, c.getPlayer().getId()); + ps.setInt(8, price); + ps.setString(9, item.getOwner()); + ps.setString(10, c.getPlayer().getName()); + ps.setString(11, date); } else { Equip equip = (Equip) i; - ps = con.prepareStatement("INSERT INTO mts_items (tab, type, itemid, quantity, seller, price, upgradeslots, level, str, dex, `int`, luk, hp, mp, watk, matk, wdef, mdef, acc, avoid, hands, speed, jump, locked, owner, sellername, sell_ends, vicious, flag) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); + ps = con.prepareStatement("INSERT INTO mts_items (tab, type, itemid, quantity, expiration, giftFrom, seller, price, upgradeslots, level, str, dex, `int`, luk, hp, mp, watk, matk, wdef, mdef, acc, avoid, hands, speed, jump, locked, owner, sellername, sell_ends, vicious, flag, itemexp, itemlevel, ringid) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); ps.setInt(1, 1); ps.setInt(2, (int) invType.getType()); ps.setInt(3, equip.getItemId()); ps.setInt(4, quantity); - ps.setInt(5, c.getPlayer().getId()); - ps.setInt(6, price); - ps.setInt(7, equip.getUpgradeSlots()); - ps.setInt(8, equip.getLevel()); - ps.setInt(9, equip.getStr()); - ps.setInt(10, equip.getDex()); - ps.setInt(11, equip.getInt()); - ps.setInt(12, equip.getLuk()); - ps.setInt(13, equip.getHp()); - ps.setInt(14, equip.getMp()); - ps.setInt(15, equip.getWatk()); - ps.setInt(16, equip.getMatk()); - ps.setInt(17, equip.getWdef()); - ps.setInt(18, equip.getMdef()); - ps.setInt(19, equip.getAcc()); - ps.setInt(20, equip.getAvoid()); - ps.setInt(21, equip.getHands()); - ps.setInt(22, equip.getSpeed()); - ps.setInt(23, equip.getJump()); - ps.setInt(24, 0); - ps.setString(25, equip.getOwner()); - ps.setString(26, c.getPlayer().getName()); - ps.setString(27, date); - ps.setInt(28, equip.getVicious()); - ps.setInt(29, equip.getFlag()); + ps.setLong(5, equip.getExpiration()); + ps.setString(6, equip.getGiftFrom()); + ps.setInt(7, c.getPlayer().getId()); + ps.setInt(8, price); + ps.setInt(9, equip.getUpgradeSlots()); + ps.setInt(10, equip.getLevel()); + ps.setInt(11, equip.getStr()); + ps.setInt(12, equip.getDex()); + ps.setInt(13, equip.getInt()); + ps.setInt(14, equip.getLuk()); + ps.setInt(15, equip.getHp()); + ps.setInt(16, equip.getMp()); + ps.setInt(17, equip.getWatk()); + ps.setInt(18, equip.getMatk()); + ps.setInt(19, equip.getWdef()); + ps.setInt(20, equip.getMdef()); + ps.setInt(21, equip.getAcc()); + ps.setInt(22, equip.getAvoid()); + ps.setInt(23, equip.getHands()); + ps.setInt(24, equip.getSpeed()); + ps.setInt(25, equip.getJump()); + ps.setInt(26, 0); + ps.setString(27, equip.getOwner()); + ps.setString(28, c.getPlayer().getName()); + ps.setString(29, date); + ps.setInt(30, equip.getVicious()); + ps.setInt(31, equip.getFlag()); + ps.setInt(32, equip.getItemExp()); + ps.setByte(33, equip.getItemLevel()); // thanks Jefe for noticing missing itemlevel labels + ps.setInt(34, equip.getRingId()); } ps.executeUpdate(); ps.close(); @@ -320,8 +327,13 @@ public final class MTSHandler extends AbstractMaplePacketHandler { equip.setWdef((short) rs.getInt("wdef")); equip.setUpgradeSlots((byte) rs.getInt("upgradeslots")); equip.setLevel((byte) rs.getInt("level")); + equip.setItemLevel(rs.getByte("itemlevel")); + equip.setItemExp(rs.getInt("itemexp")); + equip.setRingId(rs.getInt("ringid")); equip.setVicious((byte) rs.getInt("vicious")); equip.setFlag((short) rs.getInt("flag")); + equip.setExpiration(rs.getLong("expiration")); + equip.setGiftFrom(rs.getString("giftFrom")); equip.setPosition(c.getPlayer().getInventory(ItemConstants.getInventoryType(rs.getInt("itemid"))).getNextFreeSlot()); i = equip.copy(); } @@ -569,6 +581,11 @@ public final class MTSHandler extends AbstractMaplePacketHandler { equip.setUpgradeSlots((byte) rs.getInt("upgradeslots")); equip.setLevel((byte) rs.getInt("level")); equip.setFlag((short) rs.getInt("flag")); + equip.setItemLevel(rs.getByte("itemlevel")); + equip.setItemExp(rs.getInt("itemexp")); + equip.setRingId(rs.getInt("ringid")); + equip.setExpiration(rs.getLong("expiration")); + equip.setGiftFrom(rs.getString("giftFrom")); items.add(new MTSItemInfo((Item) equip, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); } } @@ -623,7 +640,12 @@ public final class MTSHandler extends AbstractMaplePacketHandler { equip.setWdef((short) rse.getInt("wdef")); equip.setUpgradeSlots((byte) rse.getInt("upgradeslots")); equip.setLevel((byte) rse.getInt("level")); + equip.setItemLevel(rs.getByte("itemlevel")); + equip.setItemExp(rs.getInt("itemexp")); + equip.setRingId(rs.getInt("ringid")); equip.setFlag((short) rs.getInt("flag")); + equip.setExpiration(rs.getLong("expiration")); + equip.setGiftFrom(rs.getString("giftFrom")); items.add(new MTSItemInfo((Item) equip, rse.getInt("price"), rse.getInt("id"), rse.getInt("seller"), rse.getString("sellername"), rse.getString("sell_ends"))); } } @@ -686,7 +708,12 @@ public final class MTSHandler extends AbstractMaplePacketHandler { equip.setWdef((short) rs.getInt("wdef")); equip.setUpgradeSlots((byte) rs.getInt("upgradeslots")); equip.setLevel((byte) rs.getInt("level")); + equip.setItemLevel(rs.getByte("itemlevel")); + equip.setItemExp(rs.getInt("itemexp")); + equip.setRingId(rs.getInt("ringid")); equip.setFlag((short) rs.getInt("flag")); + equip.setExpiration(rs.getLong("expiration")); + equip.setGiftFrom(rs.getString("giftFrom")); items.add(new MTSItemInfo((Item) equip, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); } } @@ -747,7 +774,12 @@ public final class MTSHandler extends AbstractMaplePacketHandler { equip.setWdef((short) rs.getInt("wdef")); equip.setUpgradeSlots((byte) rs.getInt("upgradeslots")); equip.setLevel((byte) rs.getInt("level")); + equip.setItemLevel(rs.getByte("itemlevel")); + equip.setItemExp(rs.getInt("itemexp")); + equip.setRingId(rs.getInt("ringid")); equip.setFlag((short) rs.getInt("flag")); + equip.setExpiration(rs.getLong("expiration")); + equip.setGiftFrom(rs.getString("giftFrom")); items.add(new MTSItemInfo((Item) equip, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); } } @@ -841,7 +873,12 @@ public final class MTSHandler extends AbstractMaplePacketHandler { equip.setWdef((short) rs.getInt("wdef")); equip.setUpgradeSlots((byte) rs.getInt("upgradeslots")); equip.setLevel((byte) rs.getInt("level")); + equip.setItemLevel(rs.getByte("itemlevel")); + equip.setItemExp(rs.getInt("itemexp")); + equip.setRingId(rs.getInt("ringid")); equip.setFlag((short) rs.getInt("flag")); + equip.setExpiration(rs.getLong("expiration")); + equip.setGiftFrom(rs.getString("giftFrom")); items.add(new MTSItemInfo((Item) equip, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); } } diff --git a/src/net/server/channel/handlers/MagicDamageHandler.java b/src/net/server/channel/handlers/MagicDamageHandler.java index b2288be8a6..52778e8b12 100644 --- a/src/net/server/channel/handlers/MagicDamageHandler.java +++ b/src/net/server/channel/handlers/MagicDamageHandler.java @@ -62,9 +62,13 @@ public final class MagicDamageHandler extends AbstractDealDamageHandler { c.announce(MaplePacketCreator.getEnergy("energy", chr.getDojoEnergy())); } - int charge = (attack.skill == Evan.FIRE_BREATH || attack.skill == Evan.ICE_BREATH || attack.skill == FPArchMage.BIG_BANG || attack.skill == ILArchMage.BIG_BANG || attack.skill == Bishop.BIG_BANG) ? attack.charge : -1; - byte[] packet = MaplePacketCreator.magicAttack(chr, attack.skill, attack.skilllevel, attack.stance, attack.numAttackedAndDamage, attack.allDamage, charge, attack.speed, attack.direction, attack.display); - + byte[] packet; + if ((attack.skill == Evan.FIRE_BREATH || attack.skill == Evan.ICE_BREATH || attack.skill == FPArchMage.BIG_BANG || attack.skill == ILArchMage.BIG_BANG || attack.skill == Bishop.BIG_BANG)) { + packet = MaplePacketCreator.magicAttack(chr, attack.skill, attack.skilllevel, attack.stance, attack.numAttackedAndDamage, attack.allDamage, attack.charge, attack.speed, attack.direction, attack.display); + } else { + packet = MaplePacketCreator.closeRangeAttack(chr, attack.skill, attack.skilllevel, attack.stance, attack.numAttackedAndDamage, attack.allDamage, attack.speed, attack.direction, attack.display); + } + chr.getMap().broadcastMessage(chr, packet, false, true); MapleStatEffect effect = attack.getAttackEffect(chr, null); Skill skill = SkillFactory.getSkill(attack.skill); diff --git a/src/net/server/channel/handlers/MoveLifeHandler.java b/src/net/server/channel/handlers/MoveLifeHandler.java index 67d6704ed9..b1c52deaef 100644 --- a/src/net/server/channel/handlers/MoveLifeHandler.java +++ b/src/net/server/channel/handlers/MoveLifeHandler.java @@ -36,7 +36,6 @@ import server.life.MobSkillFactory; import server.maps.MapleMap; import server.maps.MapleMapObject; import server.maps.MapleMapObjectType; -import server.movement.LifeMovementFragment; import tools.MaplePacketCreator; import tools.Pair; import tools.Randomizer; diff --git a/src/net/server/channel/handlers/PetAutoPotHandler.java b/src/net/server/channel/handlers/PetAutoPotHandler.java index 305f09dd04..c27d06a802 100644 --- a/src/net/server/channel/handlers/PetAutoPotHandler.java +++ b/src/net/server/channel/handlers/PetAutoPotHandler.java @@ -4,167 +4,39 @@ Matthias Butz Jan Christian Meyer - Copyleft (L) 2016 - 2018 RonanLana (HeavenMS) - This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation version 3 as published by the Free Software Foundation. You may not use, modify or distribute this program under any other version of the GNU Affero General Public License. + 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 Affero General Public License for more details. + You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package net.server.channel.handlers; import client.MapleClient; -import client.MapleCharacter; -import client.inventory.Item; -import client.inventory.MapleInventory; -import client.inventory.MapleInventoryType; +import client.processor.PetAutopotProcessor; import net.AbstractMaplePacketHandler; -import client.inventory.manipulator.MapleInventoryManipulator; -import server.MapleItemInformationProvider; -import server.MapleStatEffect; -import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; -import constants.ServerConstants; -import java.util.List; -/** - * - * @author Ronan - multi-pot consumption feature - */ public final class PetAutoPotHandler extends AbstractMaplePacketHandler { - short slot; - int itemId; - Item toUse; - List toUseList; - - boolean hasHpGain, hasMpGain; - int maxHp, maxMp, curHp, curMp; - double incHp, incMp; @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { - if (!c.getPlayer().isAlive()) { - c.announce(MaplePacketCreator.enableActions()); - return; - } - slea.readByte(); slea.readLong(); slea.readInt(); - slot = slea.readShort(); - itemId = slea.readInt(); + short slot = slea.readShort(); + int itemId = slea.readInt(); - MapleCharacter chr = c.getPlayer(); - MapleInventory useInv = chr.getInventory(MapleInventoryType.USE); - - int useCount = 0, qtyCount = 0; - MapleStatEffect stat = null; - - useInv.lockInventory(); - try { - toUse = useInv.getItem(slot); - - if (toUse != null) { - if (toUse.getItemId() != itemId) { - c.announce(MaplePacketCreator.enableActions()); - return; - } - - toUseList = null; - - // from now on, toUse becomes the "cursor" for the current pot being used - if (toUse.getQuantity() <= 0) { - if (!cursorOnNextAvailablePot(chr)) { - c.announce(MaplePacketCreator.enableActions()); - return; - } - } - - stat = MapleItemInformationProvider.getInstance().getItemEffect(toUse.getItemId()); - hasHpGain = stat.getHp() > 0 || stat.getHpRate() > 0.0; - hasMpGain = stat.getMp() > 0 || stat.getMpRate() > 0.0; - - maxHp = chr.getCurrentMaxHp(); - maxMp = chr.getCurrentMaxMp(); - - curHp = chr.getHp(); - curMp = chr.getMp(); - - incHp = stat.getHp(); - if(incHp <= 0 && hasHpGain) incHp = Math.ceil(maxHp * stat.getHpRate()); - - incMp = stat.getMp(); - if(incMp <= 0 && hasMpGain) incMp = Math.ceil(maxMp * stat.getMpRate()); - - if (ServerConstants.USE_COMPULSORY_AUTOPOT) { - if (hasHpGain) { - qtyCount = (int) Math.ceil(((ServerConstants.PET_AUTOHP_RATIO * maxHp) - curHp) / incHp); - } - - if (hasMpGain) { - qtyCount = Math.max(qtyCount, (int) Math.ceil(((ServerConstants.PET_AUTOMP_RATIO * maxMp) - curMp) / incMp)); - } - } else { - qtyCount = 1; // non-compulsory autopot concept thanks to marcuswoon - } - - while (true) { - short qtyToUse = (short) Math.min(qtyCount, toUse.getQuantity()); - MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.USE, slot, qtyToUse, false); - - curHp += (incHp * qtyToUse); - curMp += (incMp * qtyToUse); - - useCount += qtyToUse; - qtyCount -= qtyToUse; - - if(toUse.getQuantity() == 0 && qtyCount > 0) { - // depleted out the current slot, fetch for more - - if(!cursorOnNextAvailablePot(chr)) { - break; // no more pots available - } - } else { - break; // gracefully finished it's job, quit the loop - } - } - } - } finally { - useInv.unlockInventory(); - } - - for (int i = 0; i < useCount; i++) { - stat.applyTo(chr); - } - - chr.announce(MaplePacketCreator.enableActions()); + PetAutopotProcessor.runAutopotAction(c, slot, itemId); } - private boolean cursorOnNextAvailablePot(MapleCharacter chr) { - if(toUseList == null) { - toUseList = chr.getInventory(MapleInventoryType.USE).linkedListById(itemId); - } - - toUse = null; - while(!toUseList.isEmpty()) { - Item it = toUseList.remove(0); - - if(it.getQuantity() > 0) { - toUse = it; - slot = it.getPosition(); - - return true; - } - } - - return false; - } } diff --git a/src/net/server/channel/handlers/PlayerLoggedinHandler.java b/src/net/server/channel/handlers/PlayerLoggedinHandler.java index ba04ceb46f..05cf6b391e 100644 --- a/src/net/server/channel/handlers/PlayerLoggedinHandler.java +++ b/src/net/server/channel/handlers/PlayerLoggedinHandler.java @@ -268,11 +268,12 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { if(familyEntry != null) { familyEntry.setCharacter(player); player.setFamilyEntry(familyEntry); + + c.announce(MaplePacketCreator.getFamilyInfo(familyEntry)); + familyEntry.announceToSenior(MaplePacketCreator.sendFamilyLoginNotice(player.getName(), true), true); } else { FilePrinter.printError(FilePrinter.FAMILY_ERROR, "Player " + player.getName() + "'s family doesn't have an entry for them. (" + f.getID() + ")"); } - c.announce(MaplePacketCreator.getFamilyInfo(familyEntry)); - familyEntry.announceToSenior(MaplePacketCreator.sendFamilyLoginNotice(player.getName(), true), true); } else { FilePrinter.printError(FilePrinter.FAMILY_ERROR, "Player " + player.getName() + " has an invalid family ID. (" + player.getFamilyId() + ")"); c.announce(MaplePacketCreator.getFamilyInfo(null)); @@ -379,8 +380,6 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { final List> debuff = Collections.singletonList(new Pair<>(e.getKey(), Integer.valueOf(e.getValue().getRight().getX()))); c.announce(MaplePacketCreator.giveDebuff(debuff, e.getValue().getRight())); } - - player.announceDiseases(); } } else { if(player.isRidingBattleship()) { diff --git a/src/net/server/channel/handlers/PlayerMapTransitionHandler.java b/src/net/server/channel/handlers/PlayerMapTransitionHandler.java index af7ccc57b5..13a02d3cc3 100644 --- a/src/net/server/channel/handlers/PlayerMapTransitionHandler.java +++ b/src/net/server/channel/handlers/PlayerMapTransitionHandler.java @@ -26,6 +26,8 @@ import client.MapleClient; import java.util.Collections; import java.util.List; import net.AbstractMaplePacketHandler; +import server.life.MapleMonster; +import server.maps.MapleMapObject; import tools.MaplePacketCreator; import tools.Pair; import tools.data.input.SeekableLittleEndianAccessor; @@ -48,5 +50,21 @@ public final class PlayerMapTransitionHandler extends AbstractMaplePacketHandler final List> stat = Collections.singletonList(new Pair<>(MapleBuffStat.HOMING_BEACON, 0)); chr.announce(MaplePacketCreator.giveBuff(1, beaconid, stat)); } + + for (MapleMapObject mo : chr.getMap().getMonsters()) { // thanks BHB, IxianMace, Jefe for noticing several issues regarding mob statuses (such as freeze) + MapleMonster m = (MapleMonster) mo; + if (m.getSpawnEffect() == 0 || m.getHp() < m.getMaxHp()) { // avoid effect-spawning mobs + if (m.getController() == chr) { + c.announce(MaplePacketCreator.stopControllingMonster(m.getObjectId())); + m.sendDestroyData(c); + m.aggroRedirectController(); + } else { + m.sendDestroyData(c); + } + + m.aggroSwitchController(chr, false); + m.sendSpawnData(c); + } + } } } \ No newline at end of file diff --git a/src/net/server/channel/handlers/TakeDamageHandler.java b/src/net/server/channel/handlers/TakeDamageHandler.java index 6d34fdb595..7d8ca471b7 100644 --- a/src/net/server/channel/handlers/TakeDamageHandler.java +++ b/src/net/server/channel/handlers/TakeDamageHandler.java @@ -244,7 +244,7 @@ public final class TakeDamageHandler extends AbstractMaplePacketHandler { Skill highDef = SkillFactory.getSkill(Aran.HIGH_DEFENSE); int hdLevel = chr.getSkillLevel(highDef); if (highDef != null && hdLevel > 0) { - damage *= (highDef.getEffect(hdLevel).getX() / 1000.0); + damage *= Math.ceil(highDef.getEffect(hdLevel).getX() / 1000.0); } } Integer mesoguard = chr.getBuffedValue(MapleBuffStat.MESOGUARD); diff --git a/src/net/server/guild/MapleGuild.java b/src/net/server/guild/MapleGuild.java index fd767f6c9c..7a9cffa009 100644 --- a/src/net/server/guild/MapleGuild.java +++ b/src/net/server/guild/MapleGuild.java @@ -580,14 +580,6 @@ public class MapleGuild { } membersLock.lock(); - members.sort(new Comparator() { - @Override - public int compare(MapleGuildCharacter t, MapleGuildCharacter o) { - if(t.getGuildRank() <= 1 && o.getGuildRank() > 1) return -1; - else if(t.getGuildRank() > 1 && o.getGuildRank() <= 1) return 1; - else return 0; - } - }); try { this.broadcast(MaplePacketCreator.changeRank(mgc)); } finally { @@ -597,7 +589,7 @@ public class MapleGuild { public void setGuildNotice(String notice) { this.notice = notice; - writeToDB(false); + this.writeToDB(false); membersLock.lock(); try { diff --git a/src/net/server/world/MapleParty.java b/src/net/server/world/MapleParty.java index 13dadd62cf..d4d192e591 100644 --- a/src/net/server/world/MapleParty.java +++ b/src/net/server/world/MapleParty.java @@ -130,7 +130,7 @@ public class MapleParty { public Collection getMembers() { lock.lock(); try { - return Collections.unmodifiableList(members); + return new LinkedList<>(members); } finally { lock.unlock(); } @@ -139,7 +139,7 @@ public class MapleParty { public List getPartyMembers() { lock.lock(); try { - return Collections.unmodifiableList(members); + return new LinkedList<>(members); } finally { lock.unlock(); } diff --git a/src/scripting/AbstractScriptManager.java b/src/scripting/AbstractScriptManager.java index a2b2ce6d8e..0b0ceeafde 100644 --- a/src/scripting/AbstractScriptManager.java +++ b/src/scripting/AbstractScriptManager.java @@ -65,9 +65,7 @@ public abstract class AbstractScriptManager { } protected NashornScriptEngine getScriptEngine(String path, MapleClient c) { - String cachePath = "scripts/" + path; - NashornScriptEngine engine = c.getScriptEngine(cachePath); - + NashornScriptEngine engine = c.getScriptEngine("scripts/" + path); if (engine == null) { engine = getScriptEngine(path); c.setScriptEngine(path, engine); diff --git a/src/scripting/event/EventManager.java b/src/scripting/event/EventManager.java index bee4ba6e52..4daeeade36 100644 --- a/src/scripting/event/EventManager.java +++ b/src/scripting/event/EventManager.java @@ -31,7 +31,6 @@ import java.util.Properties; import java.util.logging.Level; import java.util.logging.Logger; -import javax.script.Invocable; import javax.script.ScriptException; import constants.ServerConstants; @@ -59,6 +58,7 @@ import java.util.Queue; import java.util.Set; import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit; +import jdk.nashorn.api.scripting.NashornScriptEngine; import net.server.audit.LockCollector; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.MonitoredReentrantLock; @@ -72,7 +72,7 @@ import server.ThreadManager; * @author Ronan */ public class EventManager { - private Invocable iv; + private NashornScriptEngine iv; private Channel cserv; private World wserv; private Server server; @@ -95,7 +95,7 @@ public class EventManager { private static final int maxLobbys = 8; // an event manager holds up to this amount of concurrent lobbys - public EventManager(Channel cserv, Invocable iv, String name) { + public EventManager(Channel cserv, NashornScriptEngine iv, String name) { this.server = Server.getInstance(); this.iv = iv; this.cserv = cserv; @@ -256,7 +256,7 @@ public class EventManager { return cserv; } - public Invocable getIv() { + public NashornScriptEngine getIv() { return iv; } diff --git a/src/scripting/event/EventScriptManager.java b/src/scripting/event/EventScriptManager.java index 87af1a564a..af13ce6891 100644 --- a/src/scripting/event/EventScriptManager.java +++ b/src/scripting/event/EventScriptManager.java @@ -27,8 +27,8 @@ import java.util.Map.Entry; import java.util.logging.Level; import java.util.logging.Logger; -import javax.script.Invocable; import javax.script.ScriptEngine; +import jdk.nashorn.api.scripting.NashornScriptEngine; import net.server.channel.Channel; import scripting.AbstractScriptManager; @@ -41,11 +41,11 @@ public class EventScriptManager extends AbstractScriptManager { private class EventEntry { - public EventEntry(Invocable iv, EventManager em) { + public EventEntry(NashornScriptEngine iv, EventManager em) { this.iv = iv; this.em = em; } - public Invocable iv; + public NashornScriptEngine iv; public EventManager em; } private Map events = new LinkedHashMap<>(); @@ -54,7 +54,7 @@ public class EventScriptManager extends AbstractScriptManager { super(); for (String script : scripts) { if (!script.equals("")) { - Invocable iv = getScriptEngine("event/" + script + ".js"); + NashornScriptEngine iv = getScriptEngine("event/" + script + ".js"); events.put(script, new EventEntry(iv, new EventManager(cserv, iv, script))); } } @@ -71,7 +71,7 @@ public class EventScriptManager extends AbstractScriptManager { public void init() { for (EventEntry entry : events.values()) { try { - ((ScriptEngine) entry.iv).put("em", entry.em); + entry.iv.put("em", entry.em); entry.iv.invokeFunction("init", (Object) null); } catch (Exception ex) { Logger.getLogger(EventScriptManager.class.getName()).log(Level.SEVERE, null, ex); @@ -88,7 +88,7 @@ public class EventScriptManager extends AbstractScriptManager { Channel cserv = events.values().iterator().next().em.getChannelServer(); for (Entry entry : events.entrySet()) { String script = entry.getKey(); - Invocable iv = getScriptEngine("event/" + script + ".js"); + NashornScriptEngine iv = getScriptEngine("event/" + script + ".js"); events.put(script, new EventEntry(iv, new EventManager(cserv, iv, script))); } } diff --git a/src/scripting/map/MapScriptManager.java b/src/scripting/map/MapScriptManager.java index 04acbecc39..976b37521e 100644 --- a/src/scripting/map/MapScriptManager.java +++ b/src/scripting/map/MapScriptManager.java @@ -21,23 +21,19 @@ along with this program. If not, see . */ package scripting.map; +import client.MapleCharacter; import client.MapleClient; -import constants.ServerConstants; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; import java.lang.reflect.UndeclaredThrowableException; import java.util.HashMap; import java.util.Map; -import javax.script.Compilable; -import javax.script.Invocable; -import javax.script.ScriptEngine; import javax.script.ScriptEngineFactory; import javax.script.ScriptEngineManager; import javax.script.ScriptException; +import jdk.nashorn.api.scripting.NashornScriptEngine; +import scripting.AbstractScriptManager; import tools.FilePrinter; -public class MapScriptManager { +public class MapScriptManager extends AbstractScriptManager { private static MapScriptManager instance = new MapScriptManager(); @@ -45,7 +41,7 @@ public class MapScriptManager { return instance; } - private Map scripts = new HashMap<>(); + private Map scripts = new HashMap<>(); private ScriptEngineFactory sef; private MapScriptManager() { @@ -57,53 +53,42 @@ public class MapScriptManager { scripts.clear(); } - public boolean scriptExists(String scriptName, boolean firstUser) { - File scriptFile = new File("scripts/map/" + (firstUser ? "onFirstUserEnter/" : "onUserEnter/") + scriptName + ".js"); - return scriptFile.exists(); - } - - public void runMapScript(MapleClient c, String scriptName, boolean firstUser) { - if (scripts.containsKey(scriptName)) { + public boolean runMapScript(MapleClient c, String mapScriptPath, boolean firstUser) { + if (firstUser) { + MapleCharacter chr = c.getPlayer(); + int mapid = chr.getMapId(); + if (chr.hasEntered(mapScriptPath, mapid)) { + return false; + } else { + chr.enteredScript(mapScriptPath, mapid); + } + } + + NashornScriptEngine iv = scripts.get(mapScriptPath); + if (iv != null) { try { - scripts.get(scriptName).invokeFunction("start", new MapScriptMethods(c)); + iv.invokeFunction("start", new MapScriptMethods(c)); + return true; } catch (final ScriptException | NoSuchMethodException e) { e.printStackTrace(); } - return; } - String type = firstUser ? "onFirstUserEnter/" : "onUserEnter/"; - - File scriptFile = new File("scripts/map/" + type + scriptName + ".js"); - if (!scriptExists(scriptName, firstUser)) { - return; - } - FileReader fr = null; - ScriptEngine se = sef.getScriptEngine(); + try { - fr = new FileReader(scriptFile); - - // java 8 support here thanks to Arufonsu - if (ServerConstants.JAVA_8){ - se.eval("load('nashorn:mozilla_compat.js');" + System.lineSeparator()); + iv = getScriptEngine("map/" + mapScriptPath + ".js"); + if (iv == null) { + return false; } - ((Compilable) se).compile(fr).eval(); - - final Invocable script = ((Invocable) se); - scripts.put(scriptName, script); - script.invokeFunction("start", new MapScriptMethods(c)); + scripts.put(mapScriptPath, iv); + iv.invokeFunction("start", new MapScriptMethods(c)); + return true; } catch (final UndeclaredThrowableException | ScriptException ute) { - FilePrinter.printError(FilePrinter.MAP_SCRIPT + type + scriptName + ".txt", ute); + FilePrinter.printError(FilePrinter.MAP_SCRIPT + mapScriptPath + ".txt", ute); } catch (final Exception e) { - FilePrinter.printError(FilePrinter.MAP_SCRIPT + type + scriptName + ".txt", e); - } finally { - if (fr != null) { - try { - fr.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } + FilePrinter.printError(FilePrinter.MAP_SCRIPT + mapScriptPath + ".txt", e); } + + return false; } } \ No newline at end of file diff --git a/src/scripting/npc/NPCConversationManager.java b/src/scripting/npc/NPCConversationManager.java index c659335e00..3a99a829b3 100644 --- a/src/scripting/npc/NPCConversationManager.java +++ b/src/scripting/npc/NPCConversationManager.java @@ -679,12 +679,11 @@ public class NPCConversationManager extends AbstractPlayerInteraction { try { final MapleMap map, mapExit; Channel cs = c.getChannelServer(); - PlayerStorage ps = cs.getPlayerStorage(); map = cs.getMapFactory().getMap(980000100 + 100 * field); mapExit = cs.getMapFactory().getMap(980000000); for (MaplePartyCharacter mpc : c.getPlayer().getParty().getMembers()) { - final MapleCharacter mc = ps.getCharacterById(mpc.getId()); + final MapleCharacter mc = mpc.getPlayer(); if (mc != null) { mc.setChallenged(false); mc.changeMap(map, map.getPortal(0)); @@ -715,9 +714,8 @@ public class NPCConversationManager extends AbstractPlayerInteraction { } public void cancelCPQLobby() { - PlayerStorage ps = c.getChannelServer().getPlayerStorage(); for (MaplePartyCharacter mpc : c.getPlayer().getParty().getMembers()) { - MapleCharacter mc = ps.getCharacterById(mpc.getId()); + MapleCharacter mc = mpc.getPlayer(); if (mc != null) { mc.clearCpqTimer(); } @@ -741,11 +739,11 @@ public class NPCConversationManager extends AbstractPlayerInteraction { final MapleMap lobbyMap = getPlayer().getMap(); if (challenger != null) { if (challenger.getParty() == null) { - throw new RuntimeException("Nao existe oponente!"); + throw new RuntimeException("No opponent found!"); } - PlayerStorage ps = c.getChannelServer().getPlayerStorage(); + for (MaplePartyCharacter mpc : challenger.getParty().getMembers()) { - MapleCharacter mc = ps.getCharacterById(mpc.getId()); + MapleCharacter mc = mpc.getPlayer(); if (mc != null) { mc.changeMap(lobbyMap, lobbyMap.getPortal(0)); TimerManager tMan = TimerManager.getInstance(); @@ -758,7 +756,7 @@ public class NPCConversationManager extends AbstractPlayerInteraction { } } for (MaplePartyCharacter mpc : getPlayer().getParty().getMembers()) { - MapleCharacter mc = ps.getCharacterById(mpc.getId()); + MapleCharacter mc = mpc.getPlayer(); if (mc != null) { TimerManager tMan = TimerManager.getInstance(); tMan.schedule(new Runnable() { @@ -776,15 +774,14 @@ public class NPCConversationManager extends AbstractPlayerInteraction { @Override public void run() { try { - PlayerStorage ps = c.getChannelServer().getPlayerStorage(); for (MaplePartyCharacter mpc : getPlayer().getParty().getMembers()) { - MapleCharacter mc = ps.getCharacterById(mpc.getId()); + MapleCharacter mc = mpc.getPlayer(); if (mc != null) { mc.setMonsterCarnival(null); } } for (MaplePartyCharacter mpc : challenger.getParty().getMembers()) { - MapleCharacter mc = ps.getCharacterById(mpc.getId()); + MapleCharacter mc = mpc.getPlayer(); if (mc != null) { mc.setMonsterCarnival(null); } @@ -809,11 +806,11 @@ public class NPCConversationManager extends AbstractPlayerInteraction { final MapleMap lobbyMap = getPlayer().getMap(); if (challenger != null) { if (challenger.getParty() == null) { - throw new RuntimeException("Não existe oponente!"); + throw new RuntimeException("No opponent found!"); } - PlayerStorage ps = c.getChannelServer().getPlayerStorage(); + for (MaplePartyCharacter mpc : challenger.getParty().getMembers()) { - MapleCharacter mc = ps.getCharacterById(mpc.getId()); + MapleCharacter mc = mpc.getPlayer(); if (mc != null) { mc.changeMap(lobbyMap, lobbyMap.getPortal(0)); mapClock(10); @@ -826,15 +823,14 @@ public class NPCConversationManager extends AbstractPlayerInteraction { @Override public void run() { try { - PlayerStorage ps = c.getChannelServer().getPlayerStorage(); for (MaplePartyCharacter mpc : getPlayer().getParty().getMembers()) { - MapleCharacter mc = ps.getCharacterById(mpc.getId()); + MapleCharacter mc = mpc.getPlayer(); if (mc != null) { mc.setMonsterCarnival(null); } } for (MaplePartyCharacter mpc : challenger.getParty().getMembers()) { - MapleCharacter mc = ps.getCharacterById(mpc.getId()); + MapleCharacter mc = mpc.getPlayer(); if (mc != null) { mc.setMonsterCarnival(null); } @@ -907,12 +903,11 @@ public class NPCConversationManager extends AbstractPlayerInteraction { try { final MapleMap map, mapExit; Channel cs = c.getChannelServer(); - PlayerStorage ps = c.getChannelServer().getPlayerStorage(); mapExit = cs.getMapFactory().getMap(980030000); map = cs.getMapFactory().getMap(980031000 + 1000 * field); for (MaplePartyCharacter mpc : c.getPlayer().getParty().getMembers()) { - final MapleCharacter mc = ps.getCharacterById(mpc.getId()); + final MapleCharacter mc = mpc.getPlayer(); if (mc != null) { mc.setChallenged(false); mc.changeMap(map, map.getPortal(0)); diff --git a/src/scripting/npc/NPCScriptManager.java b/src/scripting/npc/NPCScriptManager.java index bee8cc60fc..d310efa2a8 100644 --- a/src/scripting/npc/NPCScriptManager.java +++ b/src/scripting/npc/NPCScriptManager.java @@ -29,8 +29,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import javax.script.Invocable; -import javax.script.ScriptEngine; import javax.script.ScriptException; import jdk.nashorn.api.scripting.NashornScriptEngine; @@ -54,10 +52,10 @@ public class NPCScriptManager extends AbstractScriptManager { } private Map cms = new HashMap<>(); - private Map scripts = new HashMap<>(); + private Map scripts = new HashMap<>(); public boolean isNpcScriptAvailable(MapleClient c, String fileName) { - Invocable iv = null; + NashornScriptEngine iv = null; if (fileName != null) { iv = getScriptEngine("npc/" + fileName + ".js", c); } @@ -96,7 +94,7 @@ public class NPCScriptManager extends AbstractScriptManager { NashornScriptEngine iv = getScriptEngine("npc/" + filename + ".js", c); if (iv == null) { - c.getPlayer().dropMessage(1, npc + ""); + c.getPlayer().dropMessage(1, "NPC " + npc + " is uncoded."); cm.dispose(); return; } @@ -173,7 +171,7 @@ public class NPCScriptManager extends AbstractScriptManager { } public void action(MapleClient c, byte mode, byte type, int selection) { - Invocable iv = scripts.get(c); + NashornScriptEngine iv = scripts.get(c); if (iv != null) { try { c.setClickedNPC(); diff --git a/src/scripting/portal/PortalScriptManager.java b/src/scripting/portal/PortalScriptManager.java index 137291e6e2..926f5fd52e 100644 --- a/src/scripting/portal/PortalScriptManager.java +++ b/src/scripting/portal/PortalScriptManager.java @@ -22,23 +22,17 @@ along with this program. If not, see . package scripting.portal; import client.MapleClient; -import constants.ServerConstants; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; import java.lang.reflect.UndeclaredThrowableException; import java.util.HashMap; import java.util.Map; -import javax.script.Compilable; -import javax.script.Invocable; -import javax.script.ScriptEngine; import javax.script.ScriptEngineFactory; import javax.script.ScriptEngineManager; -import javax.script.ScriptException; +import jdk.nashorn.api.scripting.NashornScriptEngine; +import scripting.AbstractScriptManager; import server.maps.MaplePortal; import tools.FilePrinter; -public class PortalScriptManager { +public class PortalScriptManager extends AbstractScriptManager { private static PortalScriptManager instance = new PortalScriptManager(); @@ -46,7 +40,7 @@ public class PortalScriptManager { return instance; } - private Map scripts = new HashMap<>(); + private Map scripts = new HashMap<>(); private ScriptEngineFactory sef; private PortalScriptManager() { @@ -54,47 +48,28 @@ public class PortalScriptManager { sef = sem.getEngineByName("javascript").getFactory(); } - private PortalScript getPortalScript(String scriptName) { - if (scripts.containsKey(scriptName)) { - return scripts.get(scriptName); + private NashornScriptEngine getPortalScript(String scriptName) { + String scriptPath = "portal/" + scriptName + ".js"; + NashornScriptEngine iv = scripts.get(scriptPath); + if (iv != null) { + return iv; } - File scriptFile = new File("scripts/portal/" + scriptName + ".js"); - if (!scriptFile.exists()) { - scripts.put(scriptName, null); + + iv = getScriptEngine(scriptPath); + if (iv == null) { return null; } - FileReader fr = null; - ScriptEngine portal = sef.getScriptEngine(); - try { - fr = new FileReader(scriptFile); - - // java 8 support here thanks to Arufonsu - if (ServerConstants.JAVA_8){ - portal.eval("load('nashorn:mozilla_compat.js');" + System.lineSeparator()); - } - - ((Compilable) portal).compile(fr).eval(); - } catch (ScriptException | IOException | UndeclaredThrowableException e) { - FilePrinter.printError(FilePrinter.PORTAL + scriptName + ".txt", e); - } finally { - if (fr != null) { - try { - fr.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - } - PortalScript script = ((Invocable) portal).getInterface(PortalScript.class); - scripts.put(scriptName, script); - return script; + + scripts.put(scriptPath, iv); + return iv; } public boolean executePortalScript(MaplePortal portal, MapleClient c) { try { - PortalScript script = getPortalScript(portal.getScriptName()); - if (script != null) { - return script.enter(new PortalPlayerInteraction(c, portal)); + NashornScriptEngine iv = getPortalScript(portal.getScriptName()); + if (iv != null) { + boolean couldWarp = (boolean) iv.invokeFunction("enter", new PortalPlayerInteraction(c, portal)); + return couldWarp; } } catch (UndeclaredThrowableException ute) { FilePrinter.printError(FilePrinter.PORTAL + portal.getScriptName() + ".txt", ute); diff --git a/src/scripting/quest/QuestScriptManager.java b/src/scripting/quest/QuestScriptManager.java index 97cbc75e6c..8d9628769e 100644 --- a/src/scripting/quest/QuestScriptManager.java +++ b/src/scripting/quest/QuestScriptManager.java @@ -25,8 +25,6 @@ import java.lang.reflect.UndeclaredThrowableException; import java.util.HashMap; import java.util.Map; -import javax.script.Invocable; - import jdk.nashorn.api.scripting.NashornScriptEngine; import scripting.AbstractScriptManager; import server.quest.MapleQuest; @@ -48,7 +46,16 @@ public class QuestScriptManager extends AbstractScriptManager { } private Map qms = new HashMap<>(); - private Map scripts = new HashMap<>(); + private Map scripts = new HashMap<>(); + + private NashornScriptEngine getQuestScriptEngine(MapleClient c, short questid) { + NashornScriptEngine iv = getScriptEngine("quest/" + questid + ".js", c); + if (iv == null && GameConstants.isMedalQuest(questid)) { + iv = getScriptEngine("quest/medalQuest.js", c); // start generic medal quest + } + + return iv; + } public void start(MapleClient c, short questid, int npc) { MapleQuest quest = MapleQuest.getInstance(questid); @@ -63,18 +70,19 @@ public class QuestScriptManager extends AbstractScriptManager { } if(c.canClickNPC()) { qms.put(c, qm); - NashornScriptEngine iv = getScriptEngine("quest/" + questid + ".js", c); - if (iv == null) { - if(GameConstants.isMedalQuest(questid)) { // start generic medal quest - iv = getScriptEngine("quest/medalQuest.js", c); - } else { - FilePrinter.printError(FilePrinter.QUEST_UNCODED, "START Quest " + questid + " is uncoded."); - } - } - if (iv == null || QuestScriptManager.getInstance() == null) { + + if (!quest.hasScriptRequirement(false)) { // lack of scripted quest checks found thanks to Mali, Resinate qm.dispose(); return; } + + NashornScriptEngine iv = getQuestScriptEngine(c, questid); + if (iv == null) { + FilePrinter.printError(FilePrinter.QUEST_UNCODED, "START Quest " + questid + " is uncoded."); + qm.dispose(); + return; + } + iv.put("qm", qm); scripts.put(c, iv); c.setClickedNPC(); @@ -90,7 +98,7 @@ public class QuestScriptManager extends AbstractScriptManager { } public void start(MapleClient c, byte mode, byte type, int selection) { - Invocable iv = scripts.get(c); + NashornScriptEngine iv = scripts.get(c); if (iv != null) { try { c.setClickedNPC(); @@ -118,16 +126,19 @@ public class QuestScriptManager extends AbstractScriptManager { } if(c.canClickNPC()){ qms.put(c, qm); - NashornScriptEngine iv = getScriptEngine("quest/" + questid + ".js", c); - if (iv == null) { - if(GameConstants.isMedalQuest(questid)) { // start generic medal quest - iv = getScriptEngine("quest/medalQuest.js", c); - } else { - FilePrinter.printError(FilePrinter.QUEST_UNCODED, "END Quest " + questid + " is uncoded."); - qm.dispose(); - return; - } - } + + if (!quest.hasScriptRequirement(true)) { + qm.dispose(); + return; + } + + NashornScriptEngine iv = getQuestScriptEngine(c, questid); + if (iv == null) { + FilePrinter.printError(FilePrinter.QUEST_UNCODED, "END Quest " + questid + " is uncoded."); + qm.dispose(); + return; + } + iv.put("qm", qm); scripts.put(c, iv); c.setClickedNPC(); @@ -143,7 +154,7 @@ public class QuestScriptManager extends AbstractScriptManager { } public void end(MapleClient c, byte mode, byte type, int selection) { - Invocable iv = scripts.get(c); + NashornScriptEngine iv = scripts.get(c); if (iv != null) { try { c.setClickedNPC(); diff --git a/src/scripting/reactor/ReactorActionManager.java b/src/scripting/reactor/ReactorActionManager.java index cecac74361..084ceac838 100644 --- a/src/scripting/reactor/ReactorActionManager.java +++ b/src/scripting/reactor/ReactorActionManager.java @@ -35,8 +35,8 @@ import java.util.List; import java.util.concurrent.ScheduledFuture; import java.util.logging.Level; import java.util.logging.Logger; -import javax.script.Invocable; import javax.script.ScriptException; +import jdk.nashorn.api.scripting.NashornScriptEngine; import scripting.AbstractPlayerInteraction; import scripting.event.EventInstanceManager; import scripting.event.EventManager; @@ -58,10 +58,10 @@ import tools.MaplePacketCreator; */ public class ReactorActionManager extends AbstractPlayerInteraction { private MapleReactor reactor; - private Invocable iv; + private NashornScriptEngine iv; private ScheduledFuture sprayTask = null; - public ReactorActionManager(MapleClient c, MapleReactor reactor, Invocable iv) { + public ReactorActionManager(MapleClient c, MapleReactor reactor, NashornScriptEngine iv) { super(c); this.reactor = reactor; this.iv = iv; diff --git a/src/scripting/reactor/ReactorScriptManager.java b/src/scripting/reactor/ReactorScriptManager.java index e4d1cb4389..7fcb1acacc 100644 --- a/src/scripting/reactor/ReactorScriptManager.java +++ b/src/scripting/reactor/ReactorScriptManager.java @@ -29,7 +29,6 @@ import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; -import javax.script.Invocable; import javax.script.ScriptException; import jdk.nashorn.api.scripting.NashornScriptEngine; diff --git a/src/server/MapleStatEffect.java b/src/server/MapleStatEffect.java index f82b076579..d15904122e 100644 --- a/src/server/MapleStatEffect.java +++ b/src/server/MapleStatEffect.java @@ -824,6 +824,7 @@ public class MapleStatEffect { break; case ILMage.SEAL: case FPMage.SEAL: + case BlazeWizard.SEAL: monsterStatus.put(MonsterStatus.SEAL, Integer.valueOf(1)); break; case Hermit.SHADOW_WEB: // shadow web @@ -1200,6 +1201,8 @@ public class MapleStatEffect { MapleMonster monster = (MapleMonster) mo; if (isDispel()) { monster.debuffMob(skill_.getId()); + } else if (isSeal() && monster.isBoss()) { // thanks IxianMace for noticing seal working on bosses + // do nothing } else { if (makeChanceResult()) { monster.applyStatus(applyfrom, new MonsterStatusEffect(getMonsterStati(), skill_, null, false), isPoison(), getDuration()); @@ -1705,6 +1708,10 @@ public class MapleStatEffect { private boolean isCrash() { return skill && (sourceid == DragonKnight.POWER_CRASH || sourceid == Crusader.ARMOR_CRASH || sourceid == WhiteKnight.MAGIC_CRASH); } + + private boolean isSeal() { + return skill && (sourceid == ILMage.SEAL || sourceid == FPMage.SEAL || sourceid == BlazeWizard.SEAL); + } private boolean isDispel() { return skill && (sourceid == Priest.DISPEL || sourceid == SuperGM.HEAL_PLUS_DISPEL); diff --git a/src/server/life/MapleMonster.java b/src/server/life/MapleMonster.java index 48a4563342..0a2e6e7206 100644 --- a/src/server/life/MapleMonster.java +++ b/src/server/life/MapleMonster.java @@ -101,6 +101,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { private List stolenItems = new ArrayList<>(5); private int team; private int parentMobOid = 0; + private int spawnEffect = 0; private final HashMap takenDamage = new HashMap<>(); private ScheduledFuture monsterItemDrop = null; private Runnable removeAfterAction = null; @@ -138,6 +139,14 @@ public class MapleMonster extends AbstractLoadedMapleLife { maxHpPlusHeal.set(hp.get()); } + + public void setSpawnEffect(int effect) { + spawnEffect = effect; + } + + public int getSpawnEffect() { + return spawnEffect; + } public void disableDrops() { this.dropsDisabled = true; @@ -1060,6 +1069,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { @Override public void sendDestroyData(MapleClient client) { client.announce(MaplePacketCreator.killMonster(getObjectId(), false)); + client.announce(MaplePacketCreator.killMonster(getObjectId(), true)); } @Override diff --git a/src/server/maps/MapleDoor.java b/src/server/maps/MapleDoor.java index 19533145ce..6f270cca9d 100644 --- a/src/server/maps/MapleDoor.java +++ b/src/server/maps/MapleDoor.java @@ -102,10 +102,12 @@ public class MapleDoor { for (MapleCharacter chr : targetChars) { areaDoor.sendDestroyData(chr.getClient()); + chr.removeVisibleMapObject(areaDoor); } for (MapleCharacter chr : townChars) { townDoor.sendDestroyData(chr.getClient()); + chr.removeVisibleMapObject(townDoor); } owner.removePartyDoor(false); @@ -115,6 +117,7 @@ public class MapleDoor { MapleDoor door = chr.getMainTownDoor(); if (door != null) { townDoor.sendSpawnData(chr.getClient()); + chr.addVisibleMapObject(townDoor); } } } diff --git a/src/server/maps/MapleDoorObject.java b/src/server/maps/MapleDoorObject.java index 813c1fa00a..20995c9608 100644 --- a/src/server/maps/MapleDoorObject.java +++ b/src/server/maps/MapleDoorObject.java @@ -87,6 +87,8 @@ public class MapleDoorObject extends AbstractMapleMapObject { public void warp(final MapleCharacter chr) { MapleParty party = chr.getParty(); if (chr.getId() == ownerId || (party != null && party.getMemberById(ownerId) != null)) { + chr.announce(MaplePacketCreator.playPortalSound()); + if(!inTown() && party == null) { chr.changeMap(to, getLinkedPortalId()); } else { diff --git a/src/server/maps/MapleMap.java b/src/server/maps/MapleMap.java index d8bdb16aec..f60d03c499 100644 --- a/src/server/maps/MapleMap.java +++ b/src/server/maps/MapleMap.java @@ -2063,6 +2063,8 @@ public class MapleMap { spos.y--; monster.setPosition(spos); + monster.setSpawnEffect(effect); + spawnAndAddRangedMapObject(monster, new DelayedPacketCreation() { @Override public void sendPackets(MapleClient c) { @@ -2116,7 +2118,11 @@ public class MapleMap { spawnAndAddRangedMapObject(door, new DelayedPacketCreation() { @Override public void sendPackets(MapleClient c) { - door.sendSpawnData(c, false); + MapleCharacter chr = c.getPlayer(); + if (chr != null) { + door.sendSpawnData(c, false); + chr.addVisibleMapObject(door); + } } }, new SpawnCondition() { @Override @@ -2465,22 +2471,23 @@ public class MapleMap { chr.setMapId(mapid); chr.updateActiveEffects(); + MapScriptManager msm = MapScriptManager.getInstance(); if (chrSize == 1) { if(!hasItemMonitor()) { startItemMonitor(); aggroMonitor.startAggroCoordinator(); } - if (onFirstUserEnter.length() != 0 && !chr.hasEntered(onFirstUserEnter, mapid) && MapScriptManager.getInstance().scriptExists(onFirstUserEnter, true)) { - chr.enteredScript(onFirstUserEnter, mapid); - MapScriptManager.getInstance().runMapScript(chr.getClient(), onFirstUserEnter, true); + if (onFirstUserEnter.length() != 0) { + msm.runMapScript(chr.getClient(), "onFirstUserEnter/" + onFirstUserEnter, true); } } if (onUserEnter.length() != 0) { if (onUserEnter.equals("cygnusTest") && (mapid < 913040000 || mapid > 913040006)) { chr.saveLocation("INTRO"); } - MapScriptManager.getInstance().runMapScript(chr.getClient(), onUserEnter, false); + + msm.runMapScript(chr.getClient(), "onUserEnter/" + onUserEnter, false); } if (FieldLimit.CANNOTUSEMOUNTS.check(fieldLimit) && chr.getBuffedValue(MapleBuffStat.MONSTER_RIDING) != null) { chr.cancelEffectFromBuffStat(MapleBuffStat.MONSTER_RIDING); @@ -3020,8 +3027,8 @@ public class MapleMap { } } - private void sendObjectPlacement(MapleClient mapleClient) { - MapleCharacter chr = mapleClient.getPlayer(); + private void sendObjectPlacement(MapleClient c) { + MapleCharacter chr = c.getPlayer(); Collection objects; objectRLock.lock(); @@ -3033,7 +3040,7 @@ public class MapleMap { for (MapleMapObject o : objects) { if (isNonRangedType(o.getType())) { - o.sendSpawnData(mapleClient); + o.sendSpawnData(c); } else if (o.getType() == MapleMapObjectType.MONSTER) { ((MapleMonster) o).aggroUpdateController(); } else if (o.getType() == MapleMapObjectType.SUMMON) { diff --git a/src/server/partyquest/MonsterCarnival.java b/src/server/partyquest/MonsterCarnival.java index b86a3632c5..a96d0fc6e9 100644 --- a/src/server/partyquest/MonsterCarnival.java +++ b/src/server/partyquest/MonsterCarnival.java @@ -50,7 +50,7 @@ public class MonsterCarnival { bluePortal = 1; } for (MaplePartyCharacter mpc : p1.getMembers()) { - MapleCharacter mc = cs.getPlayerStorage().getCharacterById(mpc.getId()); + MapleCharacter mc = mpc.getPlayer(); if (mc != null) { mc.setMonsterCarnival(this); mc.setTeam(0); @@ -64,7 +64,7 @@ public class MonsterCarnival { } } for (MaplePartyCharacter mpc : p2.getMembers()) { - MapleCharacter mc = cs.getPlayerStorage().getCharacterById(mpc.getId()); + MapleCharacter mc = mpc.getPlayer(); if (mc != null) { mc.setMonsterCarnival(this); mc.setTeam(1); @@ -213,7 +213,7 @@ public class MonsterCarnival { out = cs.getMapFactory().getMap(980000010); } for (MaplePartyCharacter mpc : leader1.getParty().getMembers()) { - MapleCharacter mc = cs.getPlayerStorage().getCharacterById(mpc.getId()); + MapleCharacter mc = mpc.getPlayer(); if (mc != null) { mc.resetCP(); mc.setTeam(-1); @@ -224,7 +224,7 @@ public class MonsterCarnival { } } for (MaplePartyCharacter mpc : leader2.getParty().getMembers()) { - MapleCharacter mc = cs.getPlayerStorage().getCharacterById(mpc.getId()); + MapleCharacter mc = mpc.getPlayer(); if (mc != null) { mc.resetCP(); mc.setTeam(-1); @@ -269,7 +269,7 @@ public class MonsterCarnival { Channel cs = map.getChannelServer(); if (winningTeam == 0) { for (MaplePartyCharacter mpc : leader1.getParty().getMembers()) { - MapleCharacter mc = cs.getPlayerStorage().getCharacterById(mpc.getId()); + MapleCharacter mc = mpc.getPlayer(); if (mc != null) { mc.gainFestivalPoints(this.redTotalCP); mc.setMonsterCarnival(null); @@ -283,7 +283,7 @@ public class MonsterCarnival { } } for (MaplePartyCharacter mpc : leader2.getParty().getMembers()) { - MapleCharacter mc = cs.getPlayerStorage().getCharacterById(mpc.getId()); + MapleCharacter mc = mpc.getPlayer(); if (mc != null) { mc.gainFestivalPoints(this.blueTotalCP); mc.setMonsterCarnival(null); @@ -298,7 +298,7 @@ public class MonsterCarnival { } } else if (winningTeam == 1) { for (MaplePartyCharacter mpc : leader2.getParty().getMembers()) { - MapleCharacter mc = cs.getPlayerStorage().getCharacterById(mpc.getId()); + MapleCharacter mc = mpc.getPlayer(); if (mc != null) { mc.gainFestivalPoints(this.blueTotalCP); mc.setMonsterCarnival(null); @@ -312,7 +312,7 @@ public class MonsterCarnival { } } for (MaplePartyCharacter mpc : leader1.getParty().getMembers()) { - MapleCharacter mc = cs.getPlayerStorage().getCharacterById(mpc.getId()); + MapleCharacter mc = mpc.getPlayer(); if (mc != null) { mc.gainFestivalPoints(this.redTotalCP); mc.setMonsterCarnival(null); @@ -393,12 +393,10 @@ public class MonsterCarnival { if (chnl != chnl1) { throw new RuntimeException("Os lideres estao em canais diferentes."); } - - Channel cs = map.getChannelServer(); + map.killAllMonsters(); for (MaplePartyCharacter mpc : leader1.getParty().getMembers()) { - MapleCharacter mc; - mc = cs.getPlayerStorage().getCharacterById(mpc.getId()); + MapleCharacter mc = mpc.getPlayer(); if (mc != null) { if (redWin) { mc.getClient().announce(MaplePacketCreator.showEffect("quest/carnival/win")); @@ -412,8 +410,7 @@ public class MonsterCarnival { } } for (MaplePartyCharacter mpc : leader2.getParty().getMembers()) { - MapleCharacter mc; - mc = cs.getPlayerStorage().getCharacterById(mpc.getId()); + MapleCharacter mc = mpc.getPlayer(); if (mc != null) { if (!redWin) { mc.getClient().announce(MaplePacketCreator.showEffect("quest/carnival/win")); diff --git a/src/server/quest/MapleQuest.java b/src/server/quest/MapleQuest.java index cf7e8f94f2..88d081dab1 100644 --- a/src/server/quest/MapleQuest.java +++ b/src/server/quest/MapleQuest.java @@ -490,6 +490,8 @@ public class MapleQuest { ret = new BuffExceptRequirement(this, data); break; case SCRIPT: + ret = new ScriptRequirement(this, data); + break; case NORMAL_AUTO_START: case START: case END: @@ -561,7 +563,6 @@ public class MapleQuest { public int getNpcRequirement(boolean complete) { Map reqs = !complete ? startReqs : completeReqs; - MapleQuestRequirement mqr = reqs.get(MapleQuestRequirementType.NPC); if (mqr != null) { return ((NpcRequirement) mqr).get(); @@ -570,6 +571,17 @@ public class MapleQuest { } } + public boolean hasScriptRequirement(boolean complete) { + Map reqs = !complete ? startReqs : completeReqs; + MapleQuestRequirement mqr = reqs.get(MapleQuestRequirementType.SCRIPT); + + if (mqr != null) { + return ((ScriptRequirement) mqr).get(); + } else { + return false; + } + } + public String getName() { return name; } diff --git a/src/server/quest/requirements/ScriptRequirement.java b/src/server/quest/requirements/ScriptRequirement.java new file mode 100644 index 0000000000..52ec7e0d46 --- /dev/null +++ b/src/server/quest/requirements/ScriptRequirement.java @@ -0,0 +1,53 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2018 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.quest.requirements; + +import client.MapleCharacter; +import provider.MapleData; +import provider.MapleDataTool; +import server.quest.MapleQuest; +import server.quest.MapleQuestRequirementType; + +/** + * + * @author Ronan + */ +public class ScriptRequirement extends MapleQuestRequirement { + private boolean reqScript; + + public ScriptRequirement(MapleQuest quest, MapleData data) { + super(MapleQuestRequirementType.BUFF); + processData(data); + } + + @Override + public void processData(MapleData data) { + reqScript = !MapleDataTool.getString(data, "").isEmpty(); + } + + @Override + public boolean check(MapleCharacter chr, Integer npcid) { + return true; + } + + public boolean get() { + return reqScript; + } +} diff --git a/src/tools/FilePrinter.java b/src/tools/FilePrinter.java index 6d18b80eaa..d21987a62d 100644 --- a/src/tools/FilePrinter.java +++ b/src/tools/FilePrinter.java @@ -43,6 +43,7 @@ public class FilePrinter { MOB_MOVEMENT = "game/MobMovement.txt", MAP_SCRIPT = "game/mapscript/", DIRECTION = "game/directions/", + GUILD_CHAR_ERROR = "guilds/GuildCharError.txt", SAVE_CHAR = "players/SaveToDB.txt", INSERT_CHAR = "players/InsertCharacter.txt", LOAD_CHAR = "players/LoadCharFromDB.txt", diff --git a/wz/Quest.wz/Check.img.xml b/wz/Quest.wz/Check.img.xml index 4fe628a422..47010ff93e 100644 --- a/wz/Quest.wz/Check.img.xml +++ b/wz/Quest.wz/Check.img.xml @@ -17944,7 +17944,7 @@
- + diff --git a/wz/Quest.wz/QuestInfo.img.xml b/wz/Quest.wz/QuestInfo.img.xml index 296d0a4c72..d89f6d0f96 100644 --- a/wz/Quest.wz/QuestInfo.img.xml +++ b/wz/Quest.wz/QuestInfo.img.xml @@ -4232,7 +4232,7 @@ You can now begin the "Manji's Request" quest. - + diff --git a/wz/String.wz/Consume.img.xml b/wz/String.wz/Consume.img.xml index 39f3c90f2c..81e66477f2 100644 --- a/wz/String.wz/Consume.img.xml +++ b/wz/String.wz/Consume.img.xml @@ -8129,7 +8129,7 @@ - + From 181573dc74a41327304e1b92c2ac1c9870fedd6a Mon Sep 17 00:00:00 2001 From: Adam James-Liebau Johnson Date: Fri, 20 Sep 2019 16:49:24 -0700 Subject: [PATCH 28/37] Riizade/config file (#520) * added POJO + yaml file * made config members public * switched to yaml * modified files to use YamlConfig over ServerConstants * removed constants from ServerConstants * removed unused imports * removed unused import * removed world ini * removed now unused .ini files * fixed docker-launch.sh * added jackson dependency JARs * fixed errors * removed unused server config values, added world defaults * don't use env variables for docker * fixed package imports/specifiers for js files --- Dockerfile | 2 +- config.yaml | 458 ++++++++++++++++++ configuration.ini | 5 - cores/jackson-annotations-2.9.9.jar | Bin 0 -> 66897 bytes cores/jackson-core-2.9.9.jar | Bin 0 -> 325632 bytes cores/jackson-databind-2.9.9.3.jar | Bin 0 -> 1348389 bytes cores/jackson-dataformat-yaml-2.9.9.jar | Bin 0 -> 42456 bytes cores/snakeyaml-1.25.jar | Bin 0 -> 303487 bytes docker-launch.sh | 8 - linux-compile.sh | 0 scripts/npc/2020008.js | 2 +- scripts/npc/2020009.js | 2 +- scripts/npc/2020010.js | 2 +- scripts/npc/2020011.js | 2 +- scripts/npc/2020013.js | 2 +- scripts/npc/2042000.js | 10 +- scripts/npc/2042001.js | 10 +- scripts/npc/2042002.js | 6 +- scripts/npc/2042005.js | 4 +- scripts/npc/2082014.js | 2 +- scripts/npc/2083000.js | 2 +- scripts/npc/2091005.js | 4 +- scripts/npc/9000017.js | 2 +- scripts/npc/9000036.js | 2 +- scripts/npc/9000040.js | 6 +- scripts/npc/9000041.js | 2 +- scripts/npc/9010021.js | 2 +- scripts/npc/9201002.js | 6 +- scripts/npc/9201011.js | 6 +- scripts/npc/9201101.js | 2 +- scripts/quest/21101.js | 4 +- scripts/quest/21201.js | 4 +- scripts/quest/21302.js | 4 +- src/client/AbstractMapleCharacterObject.java | 9 +- src/client/MapleCharacter.java | 113 ++--- src/client/MapleClient.java | 9 +- src/client/autoban/AutobanFactory.java | 7 +- src/client/autoban/AutobanManager.java | 7 +- .../commands/gm0/DropLimitCommand.java | 7 +- .../commands/gm0/MapOwnerClaimCommand.java | 3 +- .../command/commands/gm0/RatesCommand.java | 3 +- .../commands/gm0/ShowRatesCommand.java | 3 +- .../command/commands/gm0/StatDexCommand.java | 5 +- .../command/commands/gm0/StatIntCommand.java | 5 +- .../command/commands/gm0/StatLukCommand.java | 5 +- .../command/commands/gm0/StatStrCommand.java | 5 +- .../command/commands/gm2/ApCommand.java | 5 +- .../command/commands/gm2/ItemCommand.java | 3 +- .../command/commands/gm2/ItemDropCommand.java | 3 +- .../command/commands/gm2/LevelCommand.java | 3 +- .../command/commands/gm2/MaxStatCommand.java | 3 +- .../command/commands/gm2/SpCommand.java | 5 +- .../command/commands/gm5/SetCommand.java | 3 +- .../commands/gm5/ShowMoveLifeCommand.java | 3 +- .../commands/gm5/ShowPacketsCommand.java | 3 +- .../commands/gm6/SupplyRateCouponCommand.java | 5 +- src/client/creator/CharacterFactory.java | 3 +- .../creator/CharacterFactoryRecipe.java | 5 +- src/client/inventory/Equip.java | 23 +- .../MapleInventoryManipulator.java | 7 +- src/client/processor/AssignAPProcessor.java | 77 +-- src/client/processor/DueyProcessor.java | 3 +- src/client/processor/MakerProcessor.java | 7 +- src/client/processor/PetAutopotProcessor.java | 7 +- src/client/processor/StorageProcessor.java | 3 +- src/config/ServerConfig.java | 305 ++++++++++++ src/config/WorldConfig.java | 16 + src/config/YamlConfig.java | 30 ++ src/constants/GameConstants.java | 5 +- src/constants/ItemConstants.java | 4 +- src/constants/ServerConstants.java | 336 +------------ src/net/MapleServerHandler.java | 4 +- src/net/mina/MaplePacketDecoder.java | 3 +- src/net/mina/MaplePacketEncoder.java | 3 +- src/net/server/Server.java | 122 ++--- .../audit/locks/active/TrackerReadLock.java | 9 +- .../locks/active/TrackerReentrantLock.java | 10 +- .../audit/locks/active/TrackerWriteLock.java | 9 +- src/net/server/channel/Channel.java | 38 +- .../handlers/AbstractDealDamageHandler.java | 3 +- .../channel/handlers/AcceptFamilyHandler.java | 7 +- .../channel/handlers/AdminChatHandler.java | 7 +- .../handlers/CashOperationHandler.java | 7 +- .../handlers/CloseRangeDamageHandler.java | 3 +- .../server/channel/handlers/DueyHandler.java | 3 +- .../channel/handlers/EnterMTSHandler.java | 5 +- .../channel/handlers/FamilyAddHandler.java | 5 +- .../handlers/FamilySeparateHandler.java | 3 +- .../handlers/FamilySummonResponseHandler.java | 3 +- .../channel/handlers/FamilyUseHandler.java | 3 +- .../channel/handlers/GeneralChatHandler.java | 5 +- .../handlers/GuildOperationHandler.java | 15 +- .../handlers/InventoryMergeHandler.java | 3 +- .../handlers/InventorySortHandler.java | 5 +- .../channel/handlers/MagicDamageHandler.java | 3 +- .../channel/handlers/MoveLifeHandler.java | 4 +- .../channel/handlers/MultiChatHandler.java | 9 +- .../channel/handlers/NPCTalkHandler.java | 5 +- .../channel/handlers/OpenFamilyHandler.java | 3 +- .../handlers/OpenFamilyPedigreeHandler.java | 3 +- .../handlers/PartyOperationHandler.java | 5 +- .../channel/handlers/PetChatHandler.java | 3 +- .../channel/handlers/PetLootHandler.java | 3 +- .../handlers/PlayerInteractionHandler.java | 5 +- .../handlers/PlayerLoggedinHandler.java | 7 +- .../channel/handlers/RangedAttackHandler.java | 3 +- .../channel/handlers/SpecialMoveHandler.java | 3 +- .../channel/handlers/SpouseChatHandler.java | 3 +- .../channel/handlers/TakeDamageHandler.java | 5 +- .../channel/handlers/TransferNameHandler.java | 5 +- .../handlers/TransferWorldHandler.java | 5 +- .../channel/handlers/UseCashItemHandler.java | 3 +- .../channel/handlers/UseItemHandler.java | 3 +- .../channel/handlers/WeddingHandler.java | 5 +- .../channel/handlers/WhisperHandler.java | 5 +- .../server/channel/worker/BaseScheduler.java | 5 +- .../channel/worker/MobStatusScheduler.java | 3 +- src/net/server/coordinator/LoginStorage.java | 7 +- .../MapleEventRecallCoordinator.java | 3 +- .../MapleLoginBypassCoordinator.java | 3 +- .../MapleMonsterAggroCoordinator.java | 9 +- .../MaplePartySearchCoordinator.java | 5 +- .../coordinator/MapleSessionCoordinator.java | 89 ++-- .../listener/MatchCheckerGuildCreation.java | 7 +- src/net/server/guild/MapleGuild.java | 5 +- .../handlers/login/LoginPasswordHandler.java | 13 +- .../handlers/login/ViewAllCharHandler.java | 3 +- .../worker/CharacterAutosaverWorker.java | 3 +- src/net/server/worker/RankingLoginWorker.java | 3 +- src/net/server/worker/TimeoutWorker.java | 3 +- src/net/server/world/MapleParty.java | 3 +- src/net/server/world/World.java | 27 +- src/scripting/AbstractPlayerInteraction.java | 11 +- src/scripting/event/EventInstanceManager.java | 12 +- src/scripting/event/EventManager.java | 7 +- .../event/worker/EventScriptScheduler.java | 5 +- src/scripting/npc/NPCConversationManager.java | 5 +- .../reactor/ReactorActionManager.java | 3 +- src/server/CashShop.java | 5 +- src/server/MakerItemFactory.java | 5 +- src/server/MapleItemInformationProvider.java | 105 ++-- src/server/MapleStatEffect.java | 9 +- src/server/MapleStorageInventory.java | 3 +- src/server/MapleTrade.java | 5 +- .../expeditions/MapleExpeditionBossLog.java | 4 +- .../expeditions/MapleExpeditionType.java | 3 +- src/server/life/MapleMonster.java | 23 +- .../life/MapleMonsterInformationProvider.java | 3 +- src/server/life/MaplePlayerNPC.java | 3 +- .../life/positioner/MaplePlayerNPCPodium.java | 5 +- .../positioner/MaplePlayerNPCPositioner.java | 27 +- src/server/maps/MapleDoor.java | 4 +- src/server/maps/MapleHiredMerchant.java | 7 +- src/server/maps/MapleMap.java | 23 +- src/server/maps/MapleReactor.java | 3 +- src/server/partyquest/MonsterCarnival.java | 3 +- src/server/quest/MapleQuest.java | 7 +- src/server/quest/actions/ExpAction.java | 3 +- src/server/quest/actions/MesoAction.java | 3 +- src/tools/DatabaseConnection.java | 14 +- src/tools/MaplePacketCreator.java | 13 +- src/tools/packets/Fishing.java | 3 +- world.ini | 153 ------ 163 files changed, 1531 insertions(+), 1113 deletions(-) create mode 100644 config.yaml delete mode 100644 configuration.ini create mode 100644 cores/jackson-annotations-2.9.9.jar create mode 100644 cores/jackson-core-2.9.9.jar create mode 100644 cores/jackson-databind-2.9.9.3.jar create mode 100644 cores/jackson-dataformat-yaml-2.9.9.jar create mode 100644 cores/snakeyaml-1.25.jar delete mode 100644 docker-launch.sh mode change 100644 => 100755 linux-compile.sh create mode 100644 src/config/ServerConfig.java create mode 100644 src/config/WorldConfig.java create mode 100644 src/config/YamlConfig.java delete mode 100644 world.ini diff --git a/Dockerfile b/Dockerfile index 70178f3236..070ffa17cb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,4 +6,4 @@ WORKDIR /mnt COPY ./ ./ RUN sh ./posix-compile.sh EXPOSE 8484 7575 7576 7577 -CMD exec tini -- sh ./docker-launch.sh \ No newline at end of file +CMD exec tini -- sh ./posix-launch.sh \ No newline at end of file diff --git a/config.yaml b/config.yaml new file mode 100644 index 0000000000..5156641d7f --- /dev/null +++ b/config.yaml @@ -0,0 +1,458 @@ +#World Name: (0 "Scania", 1 "Bera", 2 "Broa", 3 "Windia", 4 "Khaini", 5 "Bellocan", 6 "Mardia", 7 "Kradia", 8 "Yellonde", 9 "Demethos", 10 "Galicia", 11 "El Nido", 12 "Zenith", 13 "Arcenia", 14 "Kastia", 15 "Judis", 16 "Plana", 17 "Kalluna", 18 "Stius", 19 "Croa", 20 "Medere") +#Flag types: (0 = nothing, 1 = event, 2 = new, 3 = hot) +#Recommended to use only up to 15 worlds +worlds: + #Properties for Scania 0 + - flag: 0 + server_message: Welcome to Scania! + event_message: Scania! + why_am_i_recommended: Welcome to Scania! + channels: 3 + exp_rate: 10 + meso_rate: 10 + drop_rate: 10 + boss_drop_rate: 10 #NOTE: Boss drop rate OVERRIDES common drop rate, for bosses-only. + quest_rate: 5 #Multiplier for Exp & Meso gains when completing a quest. Only available when USE_QUEST_RATE is true. Stacks with server Exp & Meso rates. + fishing_rate: 10 #Multiplier for success likelihood on meso thrown during fishing. + travel_rate: 10 #Means of transportation rides/departs using 1/N of the default time. + + #Properties for Bera 1 + - flag: 0 + server_message: Welcome to Bera! + event_message: Bera! + why_am_i_recommended: Welcome to Bera! + channels: 3 + + #Properties for Broa 2 + - flag: 0 + server_message: Welcome to Broa! + event_message: Broa! + why_am_i_recommended: Welcome to Broa! + channels: 3 + + #Properties for Windia 3 + - flag: 0 + server_message: Welcome to Windia! + event_message: Windia! + why_am_i_recommended: Welcome to Windia! + channels: 3 + + #Properties for Khaini 4 + - flag: 0 + server_message: Welcome to Khaini! + event_message: Khaini! + why_am_i_recommended: Welcome to Khaini! + channels: 3 + + #Properties for Bellocan 5 + - flag: 0 + server_message: Welcome to Bellocan! + event_message: Bellocan! + why_am_i_recommended: Welcome to Bellocan! + channels: 3 + + #Properties for Mardia 6 + - flag: 0 + server_message: Welcome to Mardia! + event_message: Mardia! + why_am_i_recommended: Welcome to Mardia! + channels: 3 + + #Properties for Kradia 7 + - flag: 0 + server_message: Welcome to Kradia! + event_message: Kradia! + why_am_i_recommended: Welcome to Kradia! + channels: 3 + + #Properties for Yellonde 8 + - flag: 0 + server_message: Welcome to Yellonde! + event_message: Yellonde! + why_am_i_recommended: Welcome to Yellonde! + channels: 3 + + #Properties for Demethos 9 + - flag: 0 + server_message: Welcome to Demethos! + event_message: Demethos! + why_am_i_recommended: Welcome to Demethos! + channels: 3 + + #Properties for Galicia 10 + - flag: 0 + server_message: Welcome to Galicia! + event_message: Galicia! + why_am_i_recommended: Welcome to Galicia! + channels: 3 + + #Properties for El Nido 11 + - flag: 0 + server_message: Welcome to El Nido! + event_message: El Nido! + why_am_i_recommended: Welcome to El Nido! + channels: 3 + + #Properties for Zenith 12 + - flag: 0 + server_message: Welcome to Zenith! + event_message: Zenith! + why_am_i_recommended: Welcome to Zenith! + channels: 3 + + #Properties for Arcenia 13 + - flag: 0 + server_message: Welcome to Arcenia! + event_message: Arcenia! + why_am_i_recommended: Welcome to Arcenia! + channels: 3 + + #Properties for Kastia 14 + - flag: 0 + server_message: Welcome to Kastia! + event_message: Kastia! + why_am_i_recommended: Welcome to Kastia! + channels: 3 + + #Properties for Judis 15 + - flag: 0 + server_message: Welcome to Judis! + event_message: Judis! + why_am_i_recommended: Welcome to Judis! + channels: 3 + + #Properties for Plana 16 + - flag: 0 + server_message: Welcome to Plana! + event_message: Plana! + why_am_i_recommended: Welcome to Plana! + channels: 3 + + #Properties for Kalluna 17 + - flag: 0 + server_message: Welcome to Kalluna! + event_message: Kalluna! + why_am_i_recommended: Welcome to Kalluna! + channels: 3 + + #Properties for Stius 18 + - flag: 0 + server_message: Welcome to Stius! + event_message: Stius! + why_am_i_recommended: Welcome to Stius! + channels: 3 + + #Properties for Croa 19 + - flag: 0 + server_message: Welcome to Croa! + event_message: Croa! + why_am_i_recommended: Welcome to Croa! + channels: 3 + + #Properties for Medere 20 + - flag: 0 + server_message: Welcome to Medere! + event_message: Medere! + why_am_i_recommended: Welcome to Medere! + channels: 3 + + +server: + #Thread Tracker Configuration + USE_THREAD_TRACKER: true #[SEVERE] This deadlock auditing thing will bloat the memory as fast as the time frame one takes to lose track of a raindrop on a tempesting day. Only for debugging purposes. + + #Database Configuration + DB_URL: "" + DB_USER: "" + DB_PASS: "" + DB_CONNECTION_POOL: true #Installs a connection pool to hub DB connections. Set false to default. + + #Login Configuration + WLDLIST_SIZE: 21 #Max possible worlds on the server. + CHANNEL_SIZE: 20 #Max possible channels per world (which is 20, based on the channel list on login phase). + CHANNEL_LOAD: 100 #Max players per channel (limit actually used to calculate the World server capacity). + CHANNEL_LOCKS: 20 #Total number of structure management locks each channel has. + + RESPAWN_INTERVAL: 10000 #10 seconds, 10000. + PURGING_INTERVAL: 300000 #5 minutes, 300000. + RANKING_INTERVAL: 3600000 #60 minutes, 3600000. + COUPON_INTERVAL: 3600000 #60 minutes, 3600000. + UPDATE_INTERVAL: 777 #Dictates the frequency on which the "centralized server time" is updated. + + ENABLE_PIC: false #Pick true/false to enable or disable Pic. Delete character requires PIC available. + ENABLE_PIN: false #Pick true/false to enable or disable Pin. + + BYPASS_PIC_EXPIRATION: 20 #Enables PIC bypass, which will remain active for that account by that client machine for N minutes. Set 0 to disable. + BYPASS_PIN_EXPIRATION: 15 #Enables PIN bypass, which will remain active for that account by that client machine for N minutes. Set 0 to disable. + + AUTOMATIC_REGISTER: true #Automatically register players when they login with a nonexistent username. + BCRYPT_MIGRATION: true #Performs a migration from old SHA-1 and SHA-512 password to bcrypt. + COLLECTIVE_CHARSLOT: false #Available character slots are contabilized globally rather than per world server. + DETERRED_MULTICLIENT: false #Enables detection of multi-client and suspicious remote IP on the login system. + #Besides blocking logging in with several client sessions on the same machine, this also blocks suspicious login attempts for players that tries to login on an account using several diferent remote addresses. + + #Multiclient Coordinator Configuration + MAX_ALLOWED_ACCOUNT_HWID: 4 #Allows up to N concurrent HWID's for an account. HWID's remains linked to an account longer the more times it's used to login. + MAX_ACCOUNT_LOGIN_ATTEMPT: 15 #After N tries on an account, login on that account gets disabled for a short period. + LOGIN_ATTEMPT_DURATION: 120 #Period in seconds the login attempt remains registered on the system. + + #Ip Configuration + HOST: 127.0.0.1 + LOCALSERVER: true + GMSERVER: false + + #Other configuration + SHUTDOWNHOOK: true + + #Server Flags + USE_CUSTOM_KEYSET: true #Enables auto-setup of the HeavenMS's custom keybindings when creating characters. + USE_DEBUG: false #Will enable some text prints on the client, oriented for debugging purposes. + USE_DEBUG_SHOW_INFO_EQPEXP: false #Prints on the cmd all equip exp gain info. + USE_DEBUG_SHOW_RCVD_PACKET: false #Prints on the cmd all received packet ids. + USE_DEBUG_SHOW_RCVD_MVLIFE: false #Prints on the cmd all received move life content. + USE_DEBUG_SHOW_PACKET: false + USE_SUPPLY_RATE_COUPONS: true #Allows rate coupons to be sold through the Cash Shop. + USE_IP_VALIDATION: true #Enables IP checking when logging in. + + USE_MAXRANGE: true #Will send and receive packets from all events on a map, rather than those of only view range. + USE_MAXRANGE_ECHO_OF_HERO: true + USE_MTS: false + USE_CPQ: true #Renders the CPQ available or not. + USE_AUTOHIDE_GM: false #When enabled, GMs are automatically hidden when joining. Thanks to Steven Deblois (steven1152). + USE_BUYBACK_SYSTEM: true #Enables the HeavenMS-builtin buyback system, to be used by dead players when clicking the MTS button. + USE_FIXED_RATIO_HPMP_UPDATE: true #Enables the HeavenMS-builtin HPMP update based on the current pool to max pool ratio. + USE_FAMILY_SYSTEM: true + USE_DUEY: true + USE_RANDOMIZE_HPMP_GAIN: true #Enables randomizing on MaxHP/MaxMP gains and INT accounting for the MaxMP gain on level up. + USE_STORAGE_ITEM_SORT: true #Enables storage "Arrange Items" feature. + USE_ITEM_SORT: true #Enables inventory "Item Sort/Merge" feature. + USE_ITEM_SORT_BY_NAME: false #Item sorting based on name rather than id. + USE_PARTY_FOR_STARTERS: true #Players level 10 or below can create/invite other players on the given level range. + USE_AUTOASSIGN_STARTERS_AP: false #Beginners level 10 or below have their AP autoassigned (they can't choose to levelup a stat). Set true ONLY if the localhost doesn't support AP assigning for beginners level 10 or below. + USE_AUTOASSIGN_SECONDARY_CAP: true #Prevents AP autoassign from spending on secondary stats after the player class' cap (defined on the autoassign handler) has been reached. + USE_STARTING_AP_4: true #Use early-GMS 4/4/4/4 starting stats. To overcome AP shortage, this gives 4AP/5AP at 1st/2nd job advancements. + USE_AUTOBAN: false #Commands the server to detect infractors automatically. + USE_AUTOBAN_LOG: true #Log autoban related messages. Still logs even with USE_AUTOBAN disabled. + USE_AUTOSAVE: true #Enables server autosaving feature (saves characters to DB each 1 hour). + USE_SERVER_AUTOASSIGNER: true #HeavenMS-builtin autoassigner, uses algorithm based on distributing AP accordingly with required secondary stat on equipments. + USE_REFRESH_RANK_MOVE: true + USE_ENFORCE_ADMIN_ACCOUNT: false #Forces accounts having GM characters to be treated as a "GM account" by the client (localhost). Some of the GM account perks is the ability to FLY, but unable to TRADE. + USE_ENFORCE_NOVICE_EXPRATE: false #Hardsets experience rate 1x for beginners level 10 or under. Ideal for roaming on novice areas without caring too much about losing some stats. + USE_ENFORCE_HPMP_SWAP: false #Forces players to reuse stats (via AP Resetting) located on HP/MP pool only inside the HP/MP stats. + USE_ENFORCE_MOB_LEVEL_RANGE: true #Players N levels below the killed mob will gain no experience from defeating it. + USE_ENFORCE_JOB_LEVEL_RANGE: false #Caps the player level on the minimum required to advance their current jobs. + USE_ENFORCE_JOB_SP_RANGE: false #Caps the player SP level on the total obtainable by their current jobs. After changing jobs, missing SP will be retrieved. + USE_ENFORCE_ITEM_SUGGESTION: false #Forces the Owl of Minerva and the Cash Shop to always display the defined item array instead of those featured by the players. + USE_ENFORCE_UNMERCHABLE_CASH: true #Forces players to not sell CASH items via merchants, drops of it disappears. + USE_ENFORCE_UNMERCHABLE_PET: true #Forces players to not sell pets via merchants, drops of it disappears. (since non-named pets gets dirty name and other possible DB-related issues) + USE_ENFORCE_MERCHANT_SAVE: true #Forces automatic DB save on merchant owners, at every item movement on shop. + USE_ENFORCE_MDOOR_POSITION: false #Forces mystic door to be spawned near spawnpoints. + USE_SPAWN_CLEAN_MDOOR: false #Makes mystic doors to be spawned without deploy animation. This clears disconnecting issues that may happen when trying to cancel doors a couple seconds after deployment. + USE_SPAWN_LOOT_ON_ANIMATION: false #Makes loot appear some time after the mob has been killed (following the mob death animation, instead of instantly). + USE_SPAWN_RELEVANT_LOOT: true #Forces to only spawn loots that are collectable by the player or any of their party members. + USE_ERASE_PERMIT_ON_OPENSHOP: true #Forces "shop permit" item to be consumed when player deploy his/her player shop. + USE_ERASE_UNTRADEABLE_DROP: true #Forces flagged untradeable items to disappear when dropped. + USE_ERASE_PET_ON_EXPIRATION: false #Forces pets to be removed from inventory when expire time comes, rather than converting it to a doll. + USE_BUFF_MOST_SIGNIFICANT: true #When applying buffs, the player will stick with the highest stat boost among the listed, rather than overwriting stats. + USE_BUFF_EVERLASTING: false #Every applied buff on players holds expiration time so high it'd be considered permanent. Suggestion thanks to Vcoc. + USE_MULTIPLE_SAME_EQUIP_DROP: true #Enables multiple drops by mobs of the same equipment, number of possible drops based on the quantities provided at the drop data. + USE_BANISHABLE_TOWN_SCROLL: true #Enables town scrolls to act as if it's a "player banish", rendering the antibanish scroll effect available. + USE_ENABLE_FULL_RESPAWN: true #At respawn task, always respawn missing mobs when they're available. Spawn count doesn't depend on how many players are currently there. + USE_ENABLE_CHAT_LOG: false #Write in-game chat to log + USE_REBIRTH_SYSTEM: false #Flag to enable/disable rebirth system + USE_MAP_OWNERSHIP_SYSTEM: true #Flag to enable/disable map ownership system + USE_FISHING_SYSTEM: true #Flag to enable/disable custom fishing system + USE_NPCS_SCRIPTABLE: true #Flag to enable/disable serverside predefined script NPCs. + + #Events/PQs Configuration + USE_OLD_GMS_STYLED_PQ_NPCS: true #Enables PQ NPCs with similar behaviour to old GMS style, that skips info about the PQs and immediately tries to register the party in. + USE_ENABLE_SOLO_EXPEDITIONS: true #Enables start expeditions with any number of players. This will also bypass all the Zakum prequest. + USE_ENABLE_DAILY_EXPEDITIONS: false #Enables daily entry limitations in expeditions. + USE_ENABLE_RECALL_EVENT: false #Enables a disconnected player to reaccess the last event instance they were in before logging out. Recall only works if the event isn't cleared or disposed yet. Suggestion thanks to Alisson (Goukken). + + #Announcement Configuration + USE_ANNOUNCE_SHOPITEMSOLD: false #Automatic message sent to owner when an item from the Player Shop or Hired Merchant is sold. + USE_ANNOUNCE_CHANGEJOB: false #Automatic message sent to acquantainces when changing jobs. + + #Cash Shop Configuration + USE_JOINT_CASHSHOP_INVENTORY: true #Enables usage of a same cash shop inventory for explorers, cygnus and legends. Items from exclusive cash shop inventories won't show up on the shared inventory, though. + USE_CLEAR_OUTDATED_COUPONS: true #Enables deletion of older code coupon registry from the DB, freeing so-long irrelevant data. + ALLOW_CASHSHOP_NAME_CHANGE: true #Allows players to buy name changes in the cash shop. + ALLOW_CASHSHOP_WORLD_TRANSFER: true #Allows players to buy world transfers in the cash shop. + + #Maker Configuration + USE_MAKER_PERMISSIVE_ATKUP: true #Allows players to use attack-based strengthening gems on non-weapon items. + USE_MAKER_FEE_HEURISTICS: true #Apply compiled values for stimulants and reagents into the Maker fee calculations (max error revolves around 50k mesos). Set false to use basic constant values instead (results are never higher than requested by the client-side). + + #Custom Configuration + USE_ENABLE_CUSTOM_NPC_SCRIPT: true #Enables usage of custom HeavenMS NPC scripts (Agent E, Coco, etc). Will not disable Abdula (it's actually useful for the gameplay) or quests. + USE_STARTER_MERGE: false #Allows any players to use the Equipment Merge custom mechanic (as opposed to the high-level, Maker lv3 requisites). + + #Commands Configuration + BLOCK_GENERATE_CASH_ITEM: false #Prevents creation of cash items with the item/drop command. + USE_WHOLE_SERVER_RANKING: false #Enables a ranking pool made from every character registered on the server for the "ranks" command, instead of separated by worlds. + + EQUIP_EXP_RATE: 1.0 #Rate for equipment exp gain, grows linearly. Set 1.0 for default (about 100~200 same-level range mobs killed to pass equip from level 1 to 2). + PQ_BONUS_EXP_RATE: 0.5 #Rate for the PQ exp reward. + + EXP_SPLIT_LEVEL_INTERVAL: 5 #Non-contributing players must be within N level between the mob to receive EXP. + EXP_SPLIT_LEECH_INTERVAL: 5 #Non-contributing players must be within N level between any contributing party member to receive EXP. + EXP_SPLIT_MVP_MOD: 0.2 + EXP_SPLIT_COMMON_MOD: 0.8 + PARTY_BONUS_EXP_RATE: 1.0 #Rate for the party exp bonus reward. + + #Miscellaneous Configuration + TIMEZONE: GMT-3 + USE_DISPLAY_NUMBERS_WITH_COMMA: true #Enforce comma on displayed strings (use this when USE_UNITPRICE_WITH_COMMA is active and you still want to display comma-separated values). + USE_UNITPRICE_WITH_COMMA: true #Set this accordingly with the layout of the unitPrices on Item.wz XML's, whether it's using commas or dots to represent fractions. + MAX_MONITORED_BUFFSTATS: 5 #Limits accounting for "dormant" buff effects, that should take place when stronger stat buffs expires. + MAX_AP: 32767 #Max AP allotted on the auto-assigner. + MAX_EVENT_LEVELS: 8 #Event has different levels of rewarding system. + BLOCK_NPC_RACE_CONDT: 500 # (0.5 * 1000) Time the player client must wait before reopening a conversation with an NPC. + PET_LOOT_UPON_ATTACK: 700 # (0.7 * 1000) Time the pet must wait before trying to pick items up. + TOT_MOB_QUEST_REQUIREMENT: 77 #Overwrites old 999-mobs requirement for the ToT questline with new requirement value, set 0 for default. + MOB_REACTOR_REFRESH_TIME: 30000 # (30 * 1000) Overwrites refresh time for those reactors oriented to inflict damage to bosses (Ice Queen, Riche), set 0 for default. + PARTY_SEARCH_REENTRY_LIMIT: 10 #Max amount of times a party leader is allowed to persist on the Party Search before entry expiration (thus needing to manually restart the Party Search to be able to search for members). + NAME_CHANGE_COOLDOWN: 2592000000 # (30*24*60*60*1000) Cooldown for name changes, default (GMS) is 30 days. + WORLD_TRANSFER_COOLDOWN: 2592000000 # (30*24*60*60*1000) Cooldown for world tranfers, default is same as name change (30 days). + INSTANT_NAME_CHANGE: false #Whether or not to wait for server restart to apply name changes. Does on reconnect otherwise (requires queries on every login). + + #Dangling Items/Locks Configuration + ITEM_EXPIRE_TIME: 180000 # (3 * 60 * 1000) Time before items start disappearing. Recommended to be set up to 3 minutes. + KITE_EXPIRE_TIME: 3600000 # (60 * 60 * 1000) Time before kites (cash item) disappears. + ITEM_MONITOR_TIME: 300000 # (5 * 60 * 1000) Interval between item monitoring tasks on maps, which checks for dangling (null) item objects on the map item history. + LOCK_MONITOR_TIME: 30000 # (30 * 1000) Waiting time for a lock to be released. If it reaches timeout, a critical server deadlock has made present. + + #Map Monitor Configuration + ITEM_EXPIRE_CHECK: 10000 # (10 * 10000) Interval between item expiring tasks on maps, which checks and makes disappear expired items. + ITEM_LIMIT_ON_MAP: 200 #Max number of items allowed on a map. + MAP_VISITED_SIZE: 5 #Max length for last mapids visited by a player. This is used to recover and update drops on these maps accordingly with player actions. + MAP_DAMAGE_OVERTIME_INTERVAL: 5000 #Interval in milliseconds between map environment damage (e.g. El Nath and Aqua Road surrondings). + + #Channel Mob Disease Monitor Configuration + MOB_STATUS_MONITOR_PROC: 200 #Frequency in milliseconds between each proc on the mob disease monitor schedule. + MOB_STATUS_MONITOR_LIFE: 84 #Idle proc count the mob disease monitor is allowed to be there before closing it due to inactivity. + MOB_STATUS_AGGRO_PERSISTENCE: 2 #Idle proc count on aggro update for a mob to keep following the current controller, given him/her is the leading damage dealer. + MOB_STATUS_AGGRO_INTERVAL: 5000 #Interval in milliseconds between aggro logistics update. + + #Some Gameplay Enhancing Configurations + #Scroll Configuration + USE_PERFECT_GM_SCROLL: true #Scrolls from GMs never uses up slots nor fails. + USE_PERFECT_SCROLLING: true #Scrolls doesn't use slots upon failure. + USE_ENHANCED_CHSCROLL: true #Equips even more powerful with chaos upgrade. + USE_ENHANCED_CRAFTING: true #Apply chaos scroll on every equip crafted. + USE_ENHANCED_CLNSLATE: true #Clean slates can be applied to recover successfully used slots as well. + SCROLL_CHANCE_RATE: 10 #Number of rolls for success on a scroll, set 1 for default. + CHSCROLL_STAT_RATE: 3 #Number of rolls of stat upgrade on a successfully applied chaos scroll, set 1 for default. + CHSCROLL_STAT_RANGE: 6 #Stat upgrade range (-N, N) on chaos scrolls. + + #Beginner Skills Configuration + USE_ULTRA_NIMBLE_FEET: true #Massive speed & jump upgrade. + USE_ULTRA_RECOVERY: true #Massive recovery amounts overtime. + USE_ULTRA_THREE_SNAILS: true #Massive damage on shell toss. + + #Other Skills Configuration + USE_FULL_ARAN_SKILLSET: false #Enables starter availability to all Aran job skills. Suggestion thanks to Masterrulax. + USE_FAST_REUSE_HERO_WILL: true #Greatly reduce cooldown on Hero's Will. + USE_ANTI_IMMUNITY_CRASH: true #Crash skills additionally removes the mob's invincibility buffs. Suggestion thanks to Celestial. + USE_UNDISPEL_HOLY_SHIELD: true #Holy shield buff also prevents players from suffering dispel from mobs. + USE_FULL_HOLY_SYMBOL: true #Holy symbol doesn't require EXP sharers to work in full. + + #Character Configuration + USE_ADD_SLOTS_BY_LEVEL: true #Slots are added each 20 levels. + USE_ADD_RATES_BY_LEVEL: true #Rates are added each 20 levels. + USE_STACK_COUPON_RATES: false #Multiple coupons effects builds up together. + USE_PERFECT_PITCH: true #For lvl 30 or above, each lvlup grants player 1 perfect pitch. + + #Quest Configuration + USE_QUEST_RATE: false #Exp/Meso gained by quests uses fixed server exp/meso rate times quest rate as multiplier, instead of player rates. + + #Quest Points Configuration + QUEST_POINT_REPEATABLE_INTERVAL: 24 #Minimum interval between repeatable quest completions for quest points to be awarded. + QUEST_POINT_REQUIREMENT: 16 #Exchange factor between N quest points to +1 fame, set 0 to disable the entire quest point mechanism. + QUEST_POINT_PER_QUEST_COMPLETE: 4 #Each completed quest awards N quest points, set 0 to disable. + QUEST_POINT_PER_EVENT_CLEAR: 1 #Each completed event instance awards N quest points, set 0 to disable. + + #Guild Configuration + CREATE_GUILD_MIN_PARTNERS: 6 #Minimum number of members on Guild Headquarters to establish a new guild. + CREATE_GUILD_COST: 1500000 + CHANGE_EMBLEM_COST: 5000000 + EXPAND_GUILD_BASE_COST: 500000 + EXPAND_GUILD_TIER_COST: 1000000 + EXPAND_GUILD_MAX_COST: 5000000 + + #Family Configuration + FAMILY_REP_PER_KILL: 4 #Amount of rep gained per monster kill. + FAMILY_REP_PER_BOSS_KILL: 20 #Amount of rep gained per boss kill. + FAMILY_REP_PER_LEVELUP: 200 #Amount of rep gained upon leveling up. + FAMILY_MAX_GENERATIONS: 1000 #Maximum depth of family tree. (Distance from leader to farthest junior) + + #Equipment Configuration + USE_EQUIPMNT_LVLUP_SLOTS: true #Equips can upgrade slots at level up. + USE_EQUIPMNT_LVLUP_POWER: true #Enable more powerful stat upgrades at equip level up. + USE_EQUIPMNT_LVLUP_CASH: true #Enable equip leveling up on cash equipments as well. + USE_SPIKES_AVOID_BANISH: true #Shoes equipped with spikes prevents mobs from banishing wearer. + MAX_EQUIPMNT_LVLUP_STAT_UP: 10000 #Max stat upgrade an equipment can have on a levelup. + MAX_EQUIPMNT_STAT: 32767 #Max stat on an equipment by leveling up. + USE_EQUIPMNT_LVLUP: 7 #All equips lvlup at max level of N, set 1 to disable. + + #Map-Chair Configuration + USE_CHAIR_EXTRAHEAL: true #Enable map chairs to further recover player's HP and MP (player must have the Chair Mastery skill). + CHAIR_EXTRA_HEAL_MULTIPLIER: 10 #Due to only being able to be send up-to-255 heal values, values being actually updated is the one displayed times this. + CHAIR_EXTRA_HEAL_MAX_DELAY: 21 #Players are expected to recover fully after using this skill for N seconds. + + #Player NPC Configuration + PLAYERNPC_INITIAL_X: 262 #Map frame width for putting PlayerNPCs. + PLAYERNPC_INITIAL_Y: 262 #Map frame height for putting PlayerNPCs. + PLAYERNPC_AREA_X: 320 #Initial width gap between PlayerNPCs. + PLAYERNPC_AREA_Y: 160 #Initial height gap between PlayerNPCs. + PLAYERNPC_AREA_STEPS: 4 #Max number of times gap is shortened to comport PlayerNPCs. + PLAYERNPC_ORGANIZE_AREA: true #Automatically rearranges PlayerNPCs on the map if there is no space set the new NPC. Current distance gap between NPCs is decreased to solve this issue. + PLAYERNPC_AUTODEPLOY: true #Makes PlayerNPC automatically deployed on the Hall of Fame at the instant one reaches max level. If false, eligible players must talk to 1st job instructor to deploy a NPC. + + #Pet Auto-Pot Configuration + USE_COMPULSORY_AUTOPOT: true #Pets will consume as many potions as needed to fulfill the AUTOHP/MP ratio threshold. + USE_EQUIPS_ON_AUTOPOT: true #Player MaxHP and MaxMP check values on autopot handler will be updated by the HP/MP bonuses on equipped items. + PET_AUTOHP_RATIO: 0.99 #Will automatically consume potions until given ratio of the MaxHP/MaxMP is reached. + PET_AUTOMP_RATIO: 0.99 + + #Pet & Mount Configuration + PET_EXHAUST_COUNT: 3 #Number of proc counts (1 per minute) on the exhaust schedule for fullness. + MOUNT_EXHAUST_COUNT: 1 #Number of proc counts (1 per minute) on the exhaust schedule for tiredness. + + #Pet Hunger Configuration + PETS_NEVER_HUNGRY: false #If true, pets and mounts will never grow hungry. + GM_PETS_NEVER_HUNGRY: true #If true, pets and mounts owned by GMs will never grow hungry. + + #Event Configuration + EVENT_MAX_GUILD_QUEUE: 10 #Max number of guilds in queue for GPQ. + EVENT_LOBBY_DELAY: 10 #Cooldown duration in seconds before reopening an event lobby. + + #Dojo Configuration + USE_FAST_DOJO_UPGRADE: true #Reduced Dojo training points amount required for a belt upgrade. + USE_DEADLY_DOJO: false #Should bosses really use 1HP,1MP attacks in dojo? + DOJO_ENERGY_ATK: 100 #Dojo energy gain when deal attack + DOJO_ENERGY_DMG: 20 #Dojo energy gain when recv attack + + #Wedding Configuration + WEDDING_RESERVATION_DELAY: 3 #Minimum idle slots before processing a wedding reservation. + WEDDING_RESERVATION_TIMEOUT: 10 #Limit time in minutes for the couple to show up before cancelling the wedding reservation. + WEDDING_RESERVATION_INTERVAL: 60 #Time between wedding starts in minutes. + WEDDING_BLESS_EXP: 30000 #Exp gained per bless count. + WEDDING_GIFT_LIMIT: 1 #Max number of gifts per person to same wishlist on marriage instances. + WEDDING_BLESSER_SHOWFX: true #Pops bubble sprite effect on players blessing the couple. Setting this false shows the blessing effect on the couple instead. + + #Buyback Configuration + USE_BUYBACK_WITH_MESOS: true #Enables usage of either mesos or NX for the buyback fee. + BUYBACK_FEE: 77.70 #Sets the base amount needed to buyback (level 30 or under will use the base value). + BUYBACK_LEVEL_STACK_FEE: 85.47 #Sets the level-stacking portion of the amount needed to buyback (fee will sum up linearly until level 120, when it reaches the peak). + BUYBACK_MESO_MULTIPLIER: 1000 #Sets a multiplier for the fee when using meso as the charge unit. + BUYBACK_RETURN_MINUTES: 1 #Sets the maximum amount of time the player can wait before decide to buyback. + BUYBACK_COOLDOWN_MINUTES: 7 #Sets the time the player must wait before using buyback again. + + # Login timeout by shavit + TIMEOUT_DURATION: 3600000 # Kicks clients who don't send any packet to the game server in due time (in millisseconds). + + #Event End Timestamp + EVENT_END_TIMESTAMP: 1428897600000 + diff --git a/configuration.ini b/configuration.ini deleted file mode 100644 index 9a80eeb0b9..0000000000 --- a/configuration.ini +++ /dev/null @@ -1,5 +0,0 @@ -HOST=127.0.0.1 -URL=jdbc:mysql://localhost:3306/heavenms -DB_USER=root -DB_PASS= -SHUTDOWNHOOK=true \ No newline at end of file diff --git a/cores/jackson-annotations-2.9.9.jar b/cores/jackson-annotations-2.9.9.jar new file mode 100644 index 0000000000000000000000000000000000000000..8e059d9711b815b02a6968b893052d86d5a40816 GIT binary patch literal 66897 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�x&^XH~czNsheg9c|+g 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 Qdj@|>H&aoa9KiqUe|D_X@&Et; literal 0 HcmV?d00001 diff --git a/cores/jackson-core-2.9.9.jar b/cores/jackson-core-2.9.9.jar new file mode 100644 index 0000000000000000000000000000000000000000..02bd446ddfb024ea1f49a597984b306e39f661a2 GIT binary patch literal 325632 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

S8Skcl)~^xtA-B=7a4)Bc@Qqj;dOb8z55E8ilcR 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 H3G)8{^DH|O literal 0 HcmV?d00001 diff --git a/cores/jackson-databind-2.9.9.3.jar b/cores/jackson-databind-2.9.9.3.jar new file mode 100644 index 0000000000000000000000000000000000000000..5bf4ba88d17e4b4885ff24c9904f392d314b1558 GIT binary patch literal 1348389 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 z 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≫N_?(~?q#HkPeJTovK*)0 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

`g$J2%#-0iE!i~>6^7@^G=_0%*JKfknb+vEZzUi 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

=dCw;U8?J{>|93{TH_X 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°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 z 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 z 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 literal 0 HcmV?d00001 diff --git a/cores/jackson-dataformat-yaml-2.9.9.jar b/cores/jackson-dataformat-yaml-2.9.9.jar new file mode 100644 index 0000000000000000000000000000000000000000..36829fc6f902eb9d3d619086381b1afbf1e1392c GIT binary patch literal 42456 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 kXxyDmbH`RE&m3pE2Nov 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 50){ cm.sendOk("The Chief's Residence Council grants you #bconcession#k to make part of the #rcounteroffensive team against Zakum#k. Good luck on your journey ahead."); if(!(cm.isQuestStarted(100200) || cm.isQuestCompleted(100200))) cm.startQuest(100200); - if(Packages.constants.ServerConstants.USE_ENABLE_SOLO_EXPEDITIONS && !cm.isQuestCompleted(100201)) cm.completeQuest(100201); + if(Packages.config.YamlConfig.config.server.USE_ENABLE_SOLO_EXPEDITIONS && !cm.isQuestCompleted(100201)) cm.completeQuest(100201); }else cm.sendOk("You're way too weak to make part of the #rcounteroffensive team against Zakum#k. Reach at least #blevel 50#k, then talk to me."); cm.dispose(); diff --git a/scripts/npc/2020009.js b/scripts/npc/2020009.js index 5e759803ef..17273222ae 100644 --- a/scripts/npc/2020009.js +++ b/scripts/npc/2020009.js @@ -114,7 +114,7 @@ function action(mode, type, selection){ if (cm.getPlayer().getLevel() >= 50){ cm.sendOk("The Chief's Residence Council grants you #bconcession#k to make part of the #rcounteroffensive team against Zakum#k. Good luck on your journey ahead."); if(!(cm.isQuestStarted(100200) || cm.isQuestCompleted(100200))) cm.startQuest(100200); - if(Packages.constants.ServerConstants.USE_ENABLE_SOLO_EXPEDITIONS && !cm.isQuestCompleted(100201)) cm.completeQuest(100201); + if(Packages.config.YamlConfig.config.server.USE_ENABLE_SOLO_EXPEDITIONS && !cm.isQuestCompleted(100201)) cm.completeQuest(100201); }else cm.sendOk("You're way too weak to make part of the #rcounteroffensive team against Zakum#k. Reach at least #blevel 50#k, then talk to me."); cm.dispose(); diff --git a/scripts/npc/2020010.js b/scripts/npc/2020010.js index b4de6203d5..7716da2276 100644 --- a/scripts/npc/2020010.js +++ b/scripts/npc/2020010.js @@ -115,7 +115,7 @@ function action(mode, type, selection){ if (cm.getPlayer().getLevel() >= 50){ cm.sendOk("The Chief's Residence Council grants you #bconcession#k to make part of the #rcounteroffensive team against Zakum#k. Good luck on your journey ahead."); if(!(cm.isQuestStarted(100200) || cm.isQuestCompleted(100200))) cm.startQuest(100200); - if(Packages.constants.ServerConstants.USE_ENABLE_SOLO_EXPEDITIONS && !cm.isQuestCompleted(100201)) cm.completeQuest(100201); + if(Packages.config.YamlConfig.config.server.USE_ENABLE_SOLO_EXPEDITIONS && !cm.isQuestCompleted(100201)) cm.completeQuest(100201); }else cm.sendOk("You're way too weak to make part of the #rcounteroffensive team against Zakum#k. Reach at least #blevel 50#k, then talk to me."); cm.dispose(); diff --git a/scripts/npc/2020011.js b/scripts/npc/2020011.js index 811ca153f2..670f76d8f6 100644 --- a/scripts/npc/2020011.js +++ b/scripts/npc/2020011.js @@ -114,7 +114,7 @@ function action(mode, type, selection){ if (cm.getPlayer().getLevel() >= 50){ cm.sendOk("The Chief's Residence Council grants you #bconcession#k to make part of the #rcounteroffensive team against Zakum#k. Good luck on your journey ahead."); if(!(cm.isQuestStarted(100200) || cm.isQuestCompleted(100200))) cm.startQuest(100200); - if(Packages.constants.ServerConstants.USE_ENABLE_SOLO_EXPEDITIONS && !cm.isQuestCompleted(100201)) cm.completeQuest(100201); + if(Packages.config.YamlConfig.config.server.USE_ENABLE_SOLO_EXPEDITIONS && !cm.isQuestCompleted(100201)) cm.completeQuest(100201); }else cm.sendOk("You're way too weak to make part of the #rcounteroffensive team against Zakum#k. Reach at least #blevel 50#k, then talk to me."); cm.dispose(); diff --git a/scripts/npc/2020013.js b/scripts/npc/2020013.js index f18199331d..8e593311d4 100644 --- a/scripts/npc/2020013.js +++ b/scripts/npc/2020013.js @@ -113,7 +113,7 @@ function action(mode, type, selection){ if (cm.getPlayer().getLevel() >= 50){ cm.sendOk("The Chief's Residence Council grants you #bconcession#k to make part of the #rcounteroffensive team against Zakum#k. Good luck on your journey ahead."); if(!(cm.isQuestStarted(100200) || cm.isQuestCompleted(100200))) cm.startQuest(100200); - if(Packages.constants.ServerConstants.USE_ENABLE_SOLO_EXPEDITIONS && !cm.isQuestCompleted(100201)) cm.completeQuest(100201); + if(Packages.config.YamlConfig.config.server.USE_ENABLE_SOLO_EXPEDITIONS && !cm.isQuestCompleted(100201)) cm.completeQuest(100201); }else cm.sendOk("You're way too weak to make part of the #rcounteroffensive team against Zakum#k. Reach at least #blevel 50#k, then talk to me."); cm.dispose(); diff --git a/scripts/npc/2042000.js b/scripts/npc/2042000.js index e6bf0728c6..8d2e7c27bd 100644 --- a/scripts/npc/2042000.js +++ b/scripts/npc/2042000.js @@ -30,8 +30,8 @@ var feeMultiplier = 7.0; function start() { status = -1; - if (!Packages.constants.ServerConstants.USE_CPQ) { - if (Packages.constants.ServerConstants.USE_ENABLE_CUSTOM_NPC_SCRIPT) { + if (!Packages.config.YamlConfig.config.server.USE_CPQ) { + if (Packages.config.YamlConfig.config.server.USE_ENABLE_CUSTOM_NPC_SCRIPT) { status = 0; action(1, 0, 4); } else { @@ -221,9 +221,9 @@ function action(mode, type, selection) { } } else { var party = cm.getParty().getMembers(); - if ((selection >= 0 && selection <= 3) && party.size() < (Packages.constants.ServerConstants.USE_ENABLE_SOLO_EXPEDITIONS ? 1 : 2)) { + if ((selection >= 0 && selection <= 3) && party.size() < (Packages.config.YamlConfig.config.server.USE_ENABLE_SOLO_EXPEDITIONS ? 1 : 2)) { cm.sendOk("You need at least 2 players to participate in the battle!"); - } else if ((selection >= 4 && selection <= 5) && party.size() < (Packages.constants.ServerConstants.USE_ENABLE_SOLO_EXPEDITIONS ? 1 : 3)) { + } else if ((selection >= 4 && selection <= 5) && party.size() < (Packages.config.YamlConfig.config.server.USE_ENABLE_SOLO_EXPEDITIONS ? 1 : 3)) { cm.sendOk("You need at least 3 players to participate in the battle!"); } else { cm.cpqLobby(selection); @@ -236,7 +236,7 @@ function action(mode, type, selection) { } else { if (status == 0) { var talk = "What would you like to do? If you have never participate in the Monster Carnival, you will need to know a few things before participating! \r\n#b#L0# Go to the Monster Carnival 1.#l \r\n#L3# Go to the Monster Carnival 2.#l \r\n#L1# Learn about the Monster Carnival.#l\r\n#L2# Trade #t4001129#.#l"; - if (Packages.constants.ServerConstants.USE_ENABLE_CUSTOM_NPC_SCRIPT) { + if (Packages.config.YamlConfig.config.server.USE_ENABLE_CUSTOM_NPC_SCRIPT) { talk += "\r\n#L4# ... Can I just refine my ores?#l"; } cm.sendSimple(talk); diff --git a/scripts/npc/2042001.js b/scripts/npc/2042001.js index d055d281e2..e8d284d80f 100644 --- a/scripts/npc/2042001.js +++ b/scripts/npc/2042001.js @@ -29,8 +29,8 @@ var feeMultiplier = 7.0; function start() { status = -1; - if (!Packages.constants.ServerConstants.USE_CPQ) { - if (Packages.constants.ServerConstants.USE_ENABLE_CUSTOM_NPC_SCRIPT) { + if (!Packages.config.YamlConfig.config.server.USE_CPQ) { + if (Packages.config.YamlConfig.config.server.USE_ENABLE_CUSTOM_NPC_SCRIPT) { status = 0; action(1, 0, 4); } else { @@ -220,9 +220,9 @@ function action(mode, type, selection) { } } else { var party = cm.getParty().getMembers(); - if ((selection >= 0 && selection <= 3) && party.size() < (Packages.constants.ServerConstants.USE_ENABLE_SOLO_EXPEDITIONS ? 1 : 2)) { + if ((selection >= 0 && selection <= 3) && party.size() < (Packages.config.YamlConfig.config.server.USE_ENABLE_SOLO_EXPEDITIONS ? 1 : 2)) { cm.sendOk("You need at least 2 players to participate in the battle!"); - } else if ((selection >= 4 && selection <= 5) && party.size() < (Packages.constants.ServerConstants.USE_ENABLE_SOLO_EXPEDITIONS ? 1 : 3)) { + } else if ((selection >= 4 && selection <= 5) && party.size() < (Packages.config.YamlConfig.config.server.USE_ENABLE_SOLO_EXPEDITIONS ? 1 : 3)) { cm.sendOk("You need at least 3 players to participate in the battle!"); } else { cm.cpqLobby(selection); @@ -235,7 +235,7 @@ function action(mode, type, selection) { } else { if (status == 0) { var talk = "What would you like to do? If you have never participate in the Monster Carnival, you will need to know a few things before participating! \r\n#b#L0# Go to the Monster Carnival 1.#l \r\n#L3# Go to the Monster Carnival 2.#l \r\n#L1# Learn about the Monster Carnival.#l\r\n#L2# Trade #t4001129#.#l"; - if (Packages.constants.ServerConstants.USE_ENABLE_CUSTOM_NPC_SCRIPT) { + if (Packages.config.YamlConfig.config.server.USE_ENABLE_CUSTOM_NPC_SCRIPT) { talk += "\r\n#L4# ... Can I just refine my ores?#l"; } cm.sendSimple(talk); diff --git a/scripts/npc/2042002.js b/scripts/npc/2042002.js index dac501d13b..7d0a3251d6 100644 --- a/scripts/npc/2042002.js +++ b/scripts/npc/2042002.js @@ -29,8 +29,8 @@ var feeMultiplier = 7.0; function start() { status = -1; - if (!Packages.constants.ServerConstants.USE_CPQ) { - if (Packages.constants.ServerConstants.USE_ENABLE_CUSTOM_NPC_SCRIPT) { + if (!Packages.config.YamlConfig.config.server.USE_CPQ) { + if (Packages.config.YamlConfig.config.server.USE_ENABLE_CUSTOM_NPC_SCRIPT) { status = 0; action(1, 0, 4); } else { @@ -235,7 +235,7 @@ function action(mode, type, selection) { } else { if (status == 0) { var talk = "What would you like to do? If you have never participate in the Monster Carnival, you will need to know a few things before participating! \r\n#b#L0# Go to the Monster Carnival 1.#l \r\n#L3# Go to the Monster Carnival 2.#l \r\n#L1# Learn about the Monster Carnival.#l\r\n#L2# Trade #t4001129#.#l"; - if (Packages.constants.ServerConstants.USE_ENABLE_CUSTOM_NPC_SCRIPT) { + if (Packages.config.YamlConfig.config.server.USE_ENABLE_CUSTOM_NPC_SCRIPT) { talk += "\r\n#L4# ... Can I just refine my ores?#l"; } cm.sendSimple(talk); diff --git a/scripts/npc/2042005.js b/scripts/npc/2042005.js index 5008b8ef80..efb085c16a 100644 --- a/scripts/npc/2042005.js +++ b/scripts/npc/2042005.js @@ -77,9 +77,9 @@ function action(mode, type, selection) { } } else { var party = cm.getParty().getMembers(); - if ((selection === 0 || selection === 1 ) && party.size() < (Packages.constants.ServerConstants.USE_ENABLE_SOLO_EXPEDITIONS ? 1 : 2)) { + if ((selection === 0 || selection === 1 ) && party.size() < (Packages.config.YamlConfig.config.server.USE_ENABLE_SOLO_EXPEDITIONS ? 1 : 2)) { cm.sendOk("You need at least 2 players to participate in the battle!"); - } else if ((selection === 2 ) && party.size() < (Packages.constants.ServerConstants.USE_ENABLE_SOLO_EXPEDITIONS ? 1 : 3)) { + } else if ((selection === 2 ) && party.size() < (Packages.config.YamlConfig.config.server.USE_ENABLE_SOLO_EXPEDITIONS ? 1 : 3)) { cm.sendOk("You need at least 3 players to participate in the battle!"); } else { cm.cpqLobby2(selection); diff --git a/scripts/npc/2082014.js b/scripts/npc/2082014.js index 297419a158..60614d44a9 100644 --- a/scripts/npc/2082014.js +++ b/scripts/npc/2082014.js @@ -39,7 +39,7 @@ function action(mode, type, selection) { status--; if(status == 0) { - if (Packages.constants.ServerConstants.USE_ENABLE_CUSTOM_NPC_SCRIPT) { + if (Packages.config.YamlConfig.config.server.USE_ENABLE_CUSTOM_NPC_SCRIPT) { cm.openShopNPC(2082014); } else if (cm.isQuestStarted(3749)) { cm.sendOk("We've already located the enemy's ultimate weapon! Follow along the ship's bow area ahead and you will find my sister #b#p2082013##k. Report to her for futher instructions on the mission."); diff --git a/scripts/npc/2083000.js b/scripts/npc/2083000.js index f59c817e1e..ee3b07b2f6 100644 --- a/scripts/npc/2083000.js +++ b/scripts/npc/2083000.js @@ -45,7 +45,7 @@ function action(mode, type, selection) { if (status == 0) { if(cm.haveItem(4001086)) { cm.sendYesNo("Do you want to access #b#m240050400##k right now?"); - } else if(Packages.constants.ServerConstants.USE_ENABLE_SOLO_EXPEDITIONS) { + } else if(Packages.config.YamlConfig.config.server.USE_ENABLE_SOLO_EXPEDITIONS) { if(canBypassHTPQ()) { cm.sendYesNo("Do you want to access #b#m240050400##k right now?"); } else { diff --git a/scripts/npc/2091005.js b/scripts/npc/2091005.js index 57ad24c0ce..b49cb7aff8 100644 --- a/scripts/npc/2091005.js +++ b/scripts/npc/2091005.js @@ -25,7 +25,7 @@ * @Map(s): Dojo Hall */ -importPackage(Packages.constants); +importPackage(Packages.config); var disabled = false; var belts = Array(1132000, 1132001, 1132002, 1132003, 1132004); @@ -44,7 +44,7 @@ function start() { return; } - belt_points = ServerConstants.USE_FAST_DOJO_UPGRADE ? Array(10, 90, 200, 460, 850) : Array(200, 1800, 4000, 9200, 17000); + belt_points = YamlConfig.config.server.USE_FAST_DOJO_UPGRADE ? Array(10, 90, 200, 460, 850) : Array(200, 1800, 4000, 9200, 17000); belt_on_inventory = new Array(); for (var i = 0; i < belts.length; i++) { diff --git a/scripts/npc/9000017.js b/scripts/npc/9000017.js index 57e58dde3c..18083f6e33 100644 --- a/scripts/npc/9000017.js +++ b/scripts/npc/9000017.js @@ -51,7 +51,7 @@ function action(mode, type, selection) { } if (status == 0) { - if (!Packages.constants.ServerConstants.USE_ENABLE_CUSTOM_NPC_SCRIPT) { + if (!Packages.config.YamlConfig.config.server.USE_ENABLE_CUSTOM_NPC_SCRIPT) { cm.sendOk("Hi, I'm #b#p" + cm.getNpc() + "##k."); cm.dispose(); return; diff --git a/scripts/npc/9000036.js b/scripts/npc/9000036.js index 255befc3fd..97b7327b88 100644 --- a/scripts/npc/9000036.js +++ b/scripts/npc/9000036.js @@ -39,7 +39,7 @@ var equip; var maxEqp = 0; function start() { - if (!Packages.constants.ServerConstants.USE_ENABLE_CUSTOM_NPC_SCRIPT) { + if (!Packages.config.YamlConfig.config.server.USE_ENABLE_CUSTOM_NPC_SCRIPT) { cm.sendOk("Hi, I'm #b#p" + cm.getNpc() + "##k."); cm.dispose(); return; diff --git a/scripts/npc/9000040.js b/scripts/npc/9000040.js index 004ba79aab..ecb1b32681 100644 --- a/scripts/npc/9000040.js +++ b/scripts/npc/9000040.js @@ -25,7 +25,7 @@ */ importPackage(Packages.client.processor); -importPackage(Packages.constants); +importPackage(Packages.config); var status; var mergeFee = 50000; @@ -50,7 +50,7 @@ function action(mode, type, selection) { status--; if(status == 0) { - if (!Packages.constants.ServerConstants.USE_ENABLE_CUSTOM_NPC_SCRIPT) { + if (!Packages.config.YamlConfig.config.server.USE_ENABLE_CUSTOM_NPC_SCRIPT) { cm.sendOk("The medal ranking system is currently unavailable..."); cm.dispose(); return; @@ -59,7 +59,7 @@ function action(mode, type, selection) { var levelLimit = !cm.getPlayer().isCygnus() ? 160 : 110; var selStr = "The medal ranking system is currently unavailable... Therefore, I am providing the #bEquipment Merge#k service! "; - if (!ServerConstants.USE_STARTER_MERGE && (cm.getPlayer().getLevel() < levelLimit || MakerProcessor.getMakerSkillLevel(cm.getPlayer()) < 3)) { + if (!YamlConfig.config.server.USE_STARTER_MERGE && (cm.getPlayer().getLevel() < levelLimit || MakerProcessor.getMakerSkillLevel(cm.getPlayer()) < 3)) { selStr += "However, you must have #rMaker level 3#k and at least #rlevel 110#k (Cygnus Knight), #rlevel 160#k (other classes) and a fund of #r" + cm.numberWithCommas(mergeFee) + " mesos#k to use the service."; cm.sendOk(selStr); cm.dispose(); diff --git a/scripts/npc/9000041.js b/scripts/npc/9000041.js index 1d2cc250ef..666e3616b5 100644 --- a/scripts/npc/9000041.js +++ b/scripts/npc/9000041.js @@ -42,7 +42,7 @@ function action(mode, type, selection) { } if (status == 0) { - if (!Packages.constants.ServerConstants.USE_ENABLE_CUSTOM_NPC_SCRIPT) { + if (!Packages.config.YamlConfig.config.server.USE_ENABLE_CUSTOM_NPC_SCRIPT) { cm.sendOk("The medal ranking system is currently unavailable..."); cm.dispose(); return; diff --git a/scripts/npc/9010021.js b/scripts/npc/9010021.js index 2d1177d94d..0abd074218 100644 --- a/scripts/npc/9010021.js +++ b/scripts/npc/9010021.js @@ -26,7 +26,7 @@ function start() { status = -1; - if (!Packages.constants.ServerConstants.USE_REBIRTH_SYSTEM) { + if (!Packages.config.YamlConfig.config.server.USE_REBIRTH_SYSTEM) { cm.sendOk("... I came from distant planes to assist the fight against the #rBlack Magician#k. Right now I search my master, have you seen him?"); cm.dispose(); return; diff --git a/scripts/npc/9201002.js b/scripts/npc/9201002.js index 8a9341aa87..40faa47cff 100644 --- a/scripts/npc/9201002.js +++ b/scripts/npc/9201002.js @@ -21,7 +21,7 @@ Marriage NPC */ -importPackage(Packages.constants); +importPackage(Packages.config); importPackage(Packages.net.server.channel.handlers); importPackage(Packages.tools); importPackage(Packages.tools.packets); @@ -32,7 +32,7 @@ var eim; var weddingEventName = "WeddingCathedral"; var cathedralWedding = true; var weddingIndoors; -var weddingBlessingExp = ServerConstants.WEDDING_BLESS_EXP; +var weddingBlessingExp = YamlConfig.config.server.WEDDING_BLESS_EXP; function isWeddingIndoors(mapid) { return mapid >= 680000100 && mapid <= 680000500; @@ -304,7 +304,7 @@ function action(mode, type, selection) { if (state == 0) { // give player blessings eim.gridInsert(cm.getPlayer(), 1); - if (ServerConstants.WEDDING_BLESSER_SHOWFX) { + if (YamlConfig.config.server.WEDDING_BLESSER_SHOWFX) { var target = cm.getPlayer(); target.announce(MaplePacketCreator.showSpecialEffect(9)); target.getMap().broadcastMessage(target, MaplePacketCreator.showForeignEffect(target.getId(), 9), false); diff --git a/scripts/npc/9201011.js b/scripts/npc/9201011.js index b81902eab3..0cb2c189b3 100644 --- a/scripts/npc/9201011.js +++ b/scripts/npc/9201011.js @@ -21,7 +21,7 @@ Marriage NPC */ -importPackage(Packages.constants); +importPackage(Packages.config); importPackage(Packages.net.server.channel.handlers); importPackage(Packages.tools); importPackage(Packages.tools.packets); @@ -32,7 +32,7 @@ var eim; var weddingEventName = "WeddingChapel"; var cathedralWedding = false; var weddingIndoors; -var weddingBlessingExp = ServerConstants.WEDDING_BLESS_EXP; +var weddingBlessingExp = YamlConfig.config.server.WEDDING_BLESS_EXP; function detectPlayerItemid(player) { for (var x = 4031357; x <= 4031364; x++) { @@ -174,7 +174,7 @@ function action(mode, type, selection) { if(state == 0) { // give player blessings eim.gridInsert(cm.getPlayer(), 1); - if(ServerConstants.WEDDING_BLESSER_SHOWFX) { + if(YamlConfig.config.server.WEDDING_BLESSER_SHOWFX) { var target = cm.getPlayer(); target.announce(MaplePacketCreator.showSpecialEffect(9)); target.getMap().broadcastMessage(target, MaplePacketCreator.showForeignEffect(target.getId(), 9), false); diff --git a/scripts/npc/9201101.js b/scripts/npc/9201101.js index c2fecb4580..c424e7dcd9 100644 --- a/scripts/npc/9201101.js +++ b/scripts/npc/9201101.js @@ -4,7 +4,7 @@ */ function start() { - if (Packages.constants.ServerConstants.USE_ENABLE_CUSTOM_NPC_SCRIPT) { + if (Packages.config.YamlConfig.config.server.USE_ENABLE_CUSTOM_NPC_SCRIPT) { cm.openShopNPC(9201101); } else { //cm.sendOk("The patrol in New Leaf City is always ready. No creatures are able to break through to the city."); diff --git a/scripts/quest/21101.js b/scripts/quest/21101.js index e59c0bb9a6..05636b3cbc 100644 --- a/scripts/quest/21101.js +++ b/scripts/quest/21101.js @@ -20,7 +20,7 @@ along with this program. If not, see . */ importPackage(Packages.client); -importPackage(Packages.constants); +importPackage(Packages.config); status = -1; @@ -48,7 +48,7 @@ function start(mode, type, selection) { qm.changeJobById(2100); qm.resetStats(); - if (ServerConstants.USE_FULL_ARAN_SKILLSET) { + if (YamlConfig.config.server.USE_FULL_ARAN_SKILLSET) { qm.teachSkill(21000000, 0, 10, -1); //combo ability qm.teachSkill(21001003, 0, 20, -1); //polearm booster } diff --git a/scripts/quest/21201.js b/scripts/quest/21201.js index db80f5d8e1..f03e71968e 100644 --- a/scripts/quest/21201.js +++ b/scripts/quest/21201.js @@ -20,7 +20,7 @@ along with this program. If not, see . */ importPackage(Packages.client); -importPackage(Packages.constants); +importPackage(Packages.config); var status = -1; @@ -66,7 +66,7 @@ function end(mode, type, selection) { qm.gainItem(1142130, true); qm.changeJobById(2110); - if (ServerConstants.USE_FULL_ARAN_SKILLSET) { + if (YamlConfig.config.server.USE_FULL_ARAN_SKILLSET) { qm.teachSkill(21100000, 0, 20, -1); //polearm mastery qm.teachSkill(21100002, 0, 30, -1); //final charge qm.teachSkill(21100004, 0, 20, -1); //combo smash diff --git a/scripts/quest/21302.js b/scripts/quest/21302.js index 69a40ee7b7..4719a4a61f 100644 --- a/scripts/quest/21302.js +++ b/scripts/quest/21302.js @@ -20,7 +20,7 @@ along with this program. If not, see . */ importPackage(Packages.client); -importPackage(Packages.constants); +importPackage(Packages.config); var status = -1; @@ -51,7 +51,7 @@ function end(mode, type, selection) { qm.gainItem(1142131, true); qm.changeJobById(2111); - if (ServerConstants.USE_FULL_ARAN_SKILLSET) { + if (YamlConfig.config.server.USE_FULL_ARAN_SKILLSET) { qm.teachSkill(21110002, 0, 20, -1); //full swing } diff --git a/src/client/AbstractMapleCharacterObject.java b/src/client/AbstractMapleCharacterObject.java index 03c2c1a492..5d95db4bb9 100644 --- a/src/client/AbstractMapleCharacterObject.java +++ b/src/client/AbstractMapleCharacterObject.java @@ -19,6 +19,7 @@ */ package client; +import config.YamlConfig; import constants.GameConstants; import constants.ServerConstants; import java.util.Arrays; @@ -635,19 +636,19 @@ public abstract class AbstractMapleCharacterObject extends AbstractAnimatedMaple } int newStr = str + deltaStr, newDex = dex + deltaDex, newInt = int_ + deltaInt, newLuk = luk + deltaLuk; - if (newStr < 4 && deltaStr != Short.MIN_VALUE || newStr > ServerConstants.MAX_AP) { + if (newStr < 4 && deltaStr != Short.MIN_VALUE || newStr > YamlConfig.config.server.MAX_AP) { return false; } - if (newDex < 4 && deltaDex != Short.MIN_VALUE || newDex > ServerConstants.MAX_AP) { + if (newDex < 4 && deltaDex != Short.MIN_VALUE || newDex > YamlConfig.config.server.MAX_AP) { return false; } - if (newInt < 4 && deltaInt != Short.MIN_VALUE || newInt > ServerConstants.MAX_AP) { + if (newInt < 4 && deltaInt != Short.MIN_VALUE || newInt > YamlConfig.config.server.MAX_AP) { return false; } - if (newLuk < 4 && deltaLuk != Short.MIN_VALUE || newLuk > ServerConstants.MAX_AP) { + if (newLuk < 4 && deltaLuk != Short.MIN_VALUE || newLuk > YamlConfig.config.server.MAX_AP) { return false; } diff --git a/src/client/MapleCharacter.java b/src/client/MapleCharacter.java index 54d913fc2f..bfb185898f 100644 --- a/src/client/MapleCharacter.java +++ b/src/client/MapleCharacter.java @@ -52,6 +52,7 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicBoolean; import java.util.regex.Pattern; +import config.YamlConfig; import net.server.PlayerBuffValueHolder; import net.server.PlayerCoolDownValueHolder; import net.server.Server; @@ -462,7 +463,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { int[] selectedType; int[] selectedAction; - if(ServerConstants.USE_CUSTOM_KEYSET) { + if(YamlConfig.config.server.USE_CUSTOM_KEYSET) { selectedKey = GameConstants.getCustomKey(true); selectedType = GameConstants.getCustomType(true); selectedAction = GameConstants.getCustomAction(true); @@ -1169,7 +1170,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { spGain += 2; } - if (ServerConstants.USE_ENFORCE_JOB_SP_RANGE) { + if (YamlConfig.config.server.USE_ENFORCE_JOB_SP_RANGE) { spGain = getChangedJobSp(newJob); } } @@ -1183,12 +1184,12 @@ public class MapleCharacter extends AbstractMapleCharacterObject { if (this.isCygnus()) { gainAp(7, true); } else { - if (ServerConstants.USE_STARTING_AP_4 || newJob.getId() % 10 >= 1) { + if (YamlConfig.config.server.USE_STARTING_AP_4 || newJob.getId() % 10 >= 1) { gainAp(5, true); } } } else { // thanks Periwinks for noticing an AP shortage from lower levels - if (ServerConstants.USE_STARTING_AP_4 && newJob.getId() % 1000 >= 1) { + if (YamlConfig.config.server.USE_STARTING_AP_4 && newJob.getId() % 1000 >= 1) { gainAp(4, true); } } @@ -1278,7 +1279,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { createDragon(); } - if (ServerConstants.USE_ANNOUNCE_CHANGEJOB) { + if (YamlConfig.config.server.USE_ANNOUNCE_CHANGEJOB) { if (!this.isGM()) { broadcastAcquaintances(6, "[" + GameConstants.ordinal(GameConstants.getJobBranch(newJob)) + " Job] " + name + " has just become a " + GameConstants.getJobName(this.job.getId()) + "."); // thanks Vcoc for noticing job name appearing in uppercase here } @@ -1379,7 +1380,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public void changeMapBanish(int mapid, String portal, String msg) { - if(ServerConstants.USE_SPIKES_AVOID_BANISH) { + if(YamlConfig.config.server.USE_SPIKES_AVOID_BANISH) { for(Item it: this.getInventory(MapleInventoryType.EQUIPPED).list()) { if((it.getFlag() & ItemConstants.SPIKES) == ItemConstants.SPIKES) { return; @@ -1733,7 +1734,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { int idx = getVisitedMapIndex(map); if(idx == -1) { - if(lastVisitedMaps.size() == ServerConstants.MAP_VISITED_SIZE) { + if(lastVisitedMaps.size() == YamlConfig.config.server.MAP_VISITED_SIZE) { lastVisitedMaps.remove(0); } } else { @@ -2468,10 +2469,10 @@ public class MapleCharacter extends AbstractMapleCharacterObject { private static Pair> getChairTaskIntervalRate(int maxhp, int maxmp) { float toHeal = Math.max(maxhp, maxmp); - float maxDuration = ServerConstants.CHAIR_EXTRA_HEAL_MAX_DELAY * 1000; + float maxDuration = YamlConfig.config.server.CHAIR_EXTRA_HEAL_MAX_DELAY * 1000; int rate = 0; - int minRegen = 1, maxRegen = (256 * ServerConstants.CHAIR_EXTRA_HEAL_MULTIPLIER) - 1, midRegen = 1; + int minRegen = 1, maxRegen = (256 * YamlConfig.config.server.CHAIR_EXTRA_HEAL_MULTIPLIER) - 1, midRegen = 1; while (minRegen < maxRegen) { midRegen = (int) ((minRegen + maxRegen) * 0.94); @@ -2553,7 +2554,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { final int healMP = localchairmp; if(MapleCharacter.this.getHp() < localmaxhp) { - byte recHP = (byte) (healHP / ServerConstants.CHAIR_EXTRA_HEAL_MULTIPLIER); + byte recHP = (byte) (healHP / YamlConfig.config.server.CHAIR_EXTRA_HEAL_MULTIPLIER); client.announce(MaplePacketCreator.showOwnRecovery(recHP)); getMap().broadcastMessage(MapleCharacter.this, MaplePacketCreator.showRecovery(id, recHP), false); @@ -2625,7 +2626,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public void dispel() { - if(!(ServerConstants.USE_UNDISPEL_HOLY_SHIELD && this.hasActiveBuff(Bishop.HOLY_SHIELD))) { + if(!(YamlConfig.config.server.USE_UNDISPEL_HOLY_SHIELD && this.hasActiveBuff(Bishop.HOLY_SHIELD))) { List mbsvhList = getAllStatups(); for (MapleBuffStatValueHolder mbsvh : mbsvhList) { if (mbsvh.effect.isSkill()) { @@ -2860,7 +2861,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { public void run() { doHurtHp(); } - }, ServerConstants.MAP_DAMAGE_OVERTIME_INTERVAL, ServerConstants.MAP_DAMAGE_OVERTIME_INTERVAL - lastHpTask); + }, YamlConfig.config.server.MAP_DAMAGE_OVERTIME_INTERVAL, YamlConfig.config.server.MAP_DAMAGE_OVERTIME_INTERVAL - lastHpTask); } public void resetHpDecreaseTask() { @@ -2869,7 +2870,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } long lastHpTask = Server.getInstance().getCurrentTime() - lastHpDec; - startHpDecreaseTask((lastHpTask > ServerConstants.MAP_DAMAGE_OVERTIME_INTERVAL) ? ServerConstants.MAP_DAMAGE_OVERTIME_INTERVAL : lastHpTask); + startHpDecreaseTask((lastHpTask > YamlConfig.config.server.MAP_DAMAGE_OVERTIME_INTERVAL) ? YamlConfig.config.server.MAP_DAMAGE_OVERTIME_INTERVAL : lastHpTask); } public void dropMessage(String message) { @@ -4090,7 +4091,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { for(Entry it : stats.entrySet()) { boolean uniqueBuff = isSingletonStatup(it.getKey()); - if(it.getValue() >= (!uniqueBuff ? ServerConstants.MAX_MONITORED_BUFFSTATS : 1) && effectStatups.contains(it.getKey())) { + if(it.getValue() >= (!uniqueBuff ? YamlConfig.config.server.MAX_MONITORED_BUFFSTATS : 1) && effectStatups.contains(it.getKey())) { MapleBuffStatValueHolder mbsvh = minStatBuffs.get(it.getKey()); Map lpbe = buffEffects.get(mbsvh.effect.getBuffSourceId()); @@ -4514,7 +4515,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { }, buffInterval, buffInterval); } } else if (effect.isRecovery()) { - int healInterval = (ServerConstants.USE_ULTRA_RECOVERY) ? 2000 : 5000; + int healInterval = (YamlConfig.config.server.USE_ULTRA_RECOVERY) ? 2000 : 5000; final byte heal = (byte) effect.getX(); chrLock.lock(); @@ -4583,7 +4584,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } boolean active = effect.isActive(this); - if(ServerConstants.USE_BUFF_MOST_SIGNIFICANT) { + if(YamlConfig.config.server.USE_BUFF_MOST_SIGNIFICANT) { toDeploy = new LinkedHashMap<>(); Map> retrievedEffects = new LinkedHashMap<>(); Set retrievedStats = new LinkedHashSet<>(); @@ -4663,7 +4664,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public boolean unregisterChairBuff() { - if (!ServerConstants.USE_CHAIR_EXTRAHEAL) { + if (!YamlConfig.config.server.USE_CHAIR_EXTRAHEAL) { return false; } @@ -4678,7 +4679,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public boolean registerChairBuff() { - if (!ServerConstants.USE_CHAIR_EXTRAHEAL) { + if (!YamlConfig.config.server.USE_CHAIR_EXTRAHEAL) { return false; } @@ -4954,7 +4955,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public boolean hasNoviceExpRate() { - return ServerConstants.USE_ENFORCE_NOVICE_EXPRATE && isBeginnerJob() && level < 11; + return YamlConfig.config.server.USE_ENFORCE_NOVICE_EXPRATE && isBeginnerJob() && level < 11; } public int getExpRate() { @@ -5334,7 +5335,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public int getMaxLevel() { - if(!ServerConstants.USE_ENFORCE_JOB_LEVEL_RANGE || isGmJob()) { + if(!YamlConfig.config.server.USE_ENFORCE_JOB_LEVEL_RANGE || isGmJob()) { return getMaxClassLevel(); } @@ -6171,7 +6172,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } private long getNextBuybackTime() { - return lastBuyback + ServerConstants.BUYBACK_COOLDOWN_MINUTES * 60 * 1000; + return lastBuyback + YamlConfig.config.server.BUYBACK_COOLDOWN_MINUTES * 60 * 1000; } private boolean isBuybackInvincible() { @@ -6179,30 +6180,30 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } private int getBuybackFee() { - float fee = ServerConstants.BUYBACK_FEE; + float fee = YamlConfig.config.server.BUYBACK_FEE; int grade = Math.min(Math.max(level, 30), 120) - 30; - fee += (grade * ServerConstants.BUYBACK_LEVEL_STACK_FEE); - if (ServerConstants.USE_BUYBACK_WITH_MESOS) { - fee *= ServerConstants.BUYBACK_MESO_MULTIPLIER; + fee += (grade * YamlConfig.config.server.BUYBACK_LEVEL_STACK_FEE); + if (YamlConfig.config.server.USE_BUYBACK_WITH_MESOS) { + fee *= YamlConfig.config.server.BUYBACK_MESO_MULTIPLIER; } return (int) Math.floor(fee); } public void showBuybackInfo() { - String s = "#eBUYBACK STATUS#n\r\n\r\nCurrent buyback fee: #b" + getBuybackFee() + " " + (ServerConstants.USE_BUYBACK_WITH_MESOS ? "mesos" : "NX") + "#k\r\n\r\n"; + String s = "#eBUYBACK STATUS#n\r\n\r\nCurrent buyback fee: #b" + getBuybackFee() + " " + (YamlConfig.config.server.USE_BUYBACK_WITH_MESOS ? "mesos" : "NX") + "#k\r\n\r\n"; long timeNow = Server.getInstance().getCurrentTime(); boolean avail = true; if (!isAlive()) { long timeLapsed = timeNow - lastDeathtime; - long timeRemaining = ServerConstants.BUYBACK_RETURN_MINUTES * 60 * 1000 - (timeLapsed + Math.max(0, getNextBuybackTime() - timeNow)); + long timeRemaining = YamlConfig.config.server.BUYBACK_RETURN_MINUTES * 60 * 1000 - (timeLapsed + Math.max(0, getNextBuybackTime() - timeNow)); if (timeRemaining < 1) { s += "Buyback #e#rUNAVAILABLE#k#n"; avail = false; } else { - s += "Buyback countdown: #e#b" + getTimeRemaining(ServerConstants.BUYBACK_RETURN_MINUTES * 60 * 1000 - timeLapsed) + "#k#n"; + s += "Buyback countdown: #e#b" + getTimeRemaining(YamlConfig.config.server.BUYBACK_RETURN_MINUTES * 60 * 1000 - timeLapsed) + "#k#n"; } s += "\r\n"; } @@ -6225,7 +6226,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { public boolean couldBuyback() { // Ronan's buyback system long timeNow = Server.getInstance().getCurrentTime(); - if (timeNow - lastDeathtime > ServerConstants.BUYBACK_RETURN_MINUTES * 60 * 1000) { + if (timeNow - lastDeathtime > YamlConfig.config.server.BUYBACK_RETURN_MINUTES * 60 * 1000) { this.dropMessage(5, "The period of time to decide has expired, therefore you are unable to buyback."); return false; } @@ -6237,7 +6238,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { return false; } - boolean usingMesos = ServerConstants.USE_BUYBACK_WITH_MESOS; + boolean usingMesos = YamlConfig.config.server.USE_BUYBACK_WITH_MESOS; int fee = getBuybackFee(); if (!canBuyback(fee, usingMesos)) { @@ -6309,7 +6310,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public boolean attemptCatchFish(int baitLevel) { - return ServerConstants.USE_FISHING_SYSTEM && GameConstants.isFishingArea(mapid) && this.getPosition().getY() > 0 && ItemConstants.isFishingChair(chair.get()) && this.getWorldServer().registerFisherPlayer(this, baitLevel); + return YamlConfig.config.server.USE_FISHING_SYSTEM && GameConstants.isFishingArea(mapid) && this.getPosition().getY() > 0 && ItemConstants.isFishingChair(chair.get()) && this.getWorldServer().registerFisherPlayer(this, baitLevel); } public void leaveMap() { @@ -6395,7 +6396,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } int spGain = 3; - if (ServerConstants.USE_ENFORCE_JOB_SP_RANGE && !GameConstants.hasSPTable(job)) { + if (YamlConfig.config.server.USE_ENFORCE_JOB_SP_RANGE && !GameConstants.hasSPTable(job)) { spGain = getSpGain(spGain, job); } @@ -6411,7 +6412,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { int improvingMaxMPLevel = 0; boolean isBeginner = isBeginnerJob(); - if (ServerConstants.USE_AUTOASSIGN_STARTERS_AP && isBeginner && level < 11) { + if (YamlConfig.config.server.USE_AUTOASSIGN_STARTERS_AP && isBeginner && level < 11) { effLock.lock(); statWlock.lock(); try { @@ -6488,7 +6489,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { addmp += improvingMaxMP.getEffect(improvingMaxMPLevel).getX(); } - if (ServerConstants.USE_RANDOMIZE_HPMP_GAIN) { + if (YamlConfig.config.server.USE_RANDOMIZE_HPMP_GAIN) { if (getJobStyle() == MapleJob.MAGICIAN) { addmp += localint_ / 20; } else { @@ -6512,7 +6513,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { int maxClassLevel = getMaxClassLevel(); if (level == maxClassLevel) { if (!this.isGM()) { - if (ServerConstants.PLAYERNPC_AUTODEPLOY) { + if (YamlConfig.config.server.PLAYERNPC_AUTODEPLOY) { ThreadManager.getInstance().newTask(new Runnable() { @Override public void run() { @@ -6564,7 +6565,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } if (level % 20 == 0) { - if (ServerConstants.USE_ADD_SLOTS_BY_LEVEL == true) { + if (YamlConfig.config.server.USE_ADD_SLOTS_BY_LEVEL == true) { if (!isGM()) { for (byte i = 1; i < 5; i++) { gainSlots(i, 4, true); @@ -6573,14 +6574,14 @@ public class MapleCharacter extends AbstractMapleCharacterObject { this.yellowMessage("You reached level " + level + ". Congratulations! As a token of your success, your inventory has been expanded a little bit."); } } - if (ServerConstants.USE_ADD_RATES_BY_LEVEL == true) { //For the rate upgrade + if (YamlConfig.config.server.USE_ADD_RATES_BY_LEVEL == true) { //For the rate upgrade revertLastPlayerRates(); setPlayerRates(); this.yellowMessage("You managed to get level " + level + "! Getting experience and items seems a little easier now, huh?"); } } - if (ServerConstants.USE_PERFECT_PITCH && level >= 30) { + if (YamlConfig.config.server.USE_PERFECT_PITCH && level >= 30) { //milestones? if (MapleInventoryManipulator.checkSpace(client, 4310000, (short) 1, "")) { MapleInventoryManipulator.addById(client, 4310000, (short) 1, "", -1); @@ -6603,7 +6604,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { MapleFamilyEntry familyEntry = getFamilyEntry(); if(familyEntry != null) { - familyEntry.giveReputationToSenior(ServerConstants.FAMILY_REP_PER_LEVELUP, true); + familyEntry.giveReputationToSenior(YamlConfig.config.server.FAMILY_REP_PER_LEVELUP, true); MapleFamilyEntry senior = familyEntry.getSenior(); if(senior != null) { //only send the message to direct senior MapleCharacter seniorChr = senior.getChr(); @@ -6833,7 +6834,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { private List activateCouponsEffects() { List toCommitEffect = new LinkedList<>(); - if(ServerConstants.USE_STACK_COUPON_RATES) { + if(YamlConfig.config.server.USE_STACK_COUPON_RATES) { for(Entry coupon: activeCoupons.entrySet()) { int couponId = coupon.getKey(); int couponQty = coupon.getValue(); @@ -7908,7 +7909,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { reapplyLocalStats(); - if (ServerConstants.USE_FIXED_RATIO_HPMP_UPDATE) { + if (YamlConfig.config.server.USE_FIXED_RATIO_HPMP_UPDATE) { if (localmaxhp != oldlocalmaxhp) { Pair hpUpdate; @@ -8049,7 +8050,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public synchronized void resetStats() { - if(!ServerConstants.USE_AUTOASSIGN_STARTERS_AP) { + if(!YamlConfig.config.server.USE_AUTOASSIGN_STARTERS_AP) { return; } @@ -8298,7 +8299,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { int[] selectedType; int[] selectedAction; - if(ServerConstants.USE_CUSTOM_KEYSET) { + if(YamlConfig.config.server.USE_CUSTOM_KEYSET) { selectedKey = GameConstants.getCustomKey(true); selectedType = GameConstants.getCustomType(true); selectedAction = GameConstants.getCustomAction(true); @@ -8366,7 +8367,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public void saveCharToDB() { - if(ServerConstants.USE_AUTOSAVE) { + if(YamlConfig.config.server.USE_AUTOSAVE) { Runnable r = new Runnable() { @Override public void run() { @@ -9858,7 +9859,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public void awardQuestPoint(int awardedPoints) { - if (ServerConstants.QUEST_POINT_REQUIREMENT < 1 || awardedPoints < 1) { + if (YamlConfig.config.server.QUEST_POINT_REQUIREMENT < 1 || awardedPoints < 1) { return; } @@ -9866,8 +9867,8 @@ public class MapleCharacter extends AbstractMapleCharacterObject { synchronized (quests) { quest_fame += awardedPoints; - delta = quest_fame / ServerConstants.QUEST_POINT_REQUIREMENT; - quest_fame %= ServerConstants.QUEST_POINT_REQUIREMENT; + delta = quest_fame / YamlConfig.config.server.QUEST_POINT_REQUIREMENT; + quest_fame %= YamlConfig.config.server.QUEST_POINT_REQUIREMENT; } if(delta > 0) { @@ -9936,7 +9937,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { MapleQuest mquest = quest.getQuest(); short questid = mquest.getId(); if (!mquest.isSameDayRepeatable() && !MapleQuest.isExploitableQuest(questid)) { - awardQuestPoint(ServerConstants.QUEST_POINT_PER_QUEST_COMPLETE); + awardQuestPoint(YamlConfig.config.server.QUEST_POINT_PER_QUEST_COMPLETE); } quest.setCompleted(quest.getCompleted() + 1); // count quest completed Jayd's idea @@ -10394,7 +10395,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { private Collection getUpgradeableEquipList() { Collection fullList = getInventory(MapleInventoryType.EQUIPPED).list(); - if (ServerConstants.USE_EQUIPMNT_LVLUP_CASH) { + if (YamlConfig.config.server.USE_EQUIPMNT_LVLUP_CASH) { return fullList; } @@ -10660,7 +10661,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { while(rs.next()) { Timestamp completedTimestamp = rs.getTimestamp("completionTime"); if(completedTimestamp == null) return false; //pending - else if(completedTimestamp.getTime() + ServerConstants.NAME_CHANGE_COOLDOWN > currentTimeMillis) return false; + else if(completedTimestamp.getTime() + YamlConfig.config.server.NAME_CHANGE_COOLDOWN > currentTimeMillis) return false; } } catch(SQLException e) { e.printStackTrace(); @@ -10886,7 +10887,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public static String checkWorldTransferEligibility(Connection con, int characterId, int oldWorld, int newWorld) { - if(!ServerConstants.ALLOW_CASHSHOP_WORLD_TRANSFER) return "World transfers disabled."; + if(!YamlConfig.config.server.ALLOW_CASHSHOP_WORLD_TRANSFER) return "World transfers disabled."; int accountId = -1; try (PreparedStatement ps = con.prepareStatement("SELECT accountid, level, guildid, guildrank, partnerId, familyId FROM characters WHERE id = ?")) { ps.setInt(1, characterId); @@ -10936,7 +10937,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { while(rs.next()) { Timestamp completedTimestamp = rs.getTimestamp("completionTime"); if(completedTimestamp == null) return false; //pending - else if(completedTimestamp.getTime() + ServerConstants.WORLD_TRANSFER_COOLDOWN > currentTimeMillis) return false; + else if(completedTimestamp.getTime() + YamlConfig.config.server.WORLD_TRANSFER_COOLDOWN > currentTimeMillis) return false; } } catch(SQLException e) { e.printStackTrace(); @@ -10990,7 +10991,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } try (PreparedStatement ps = con.prepareStatement("UPDATE characters SET world = ?, meso = ?, guildid = ?, guildrank = ? WHERE id = ?")) { ps.setInt(1, newWorld); - ps.setInt(2, Math.min(mesos, 1000000)); //might want a limit in ServerConstants for this + ps.setInt(2, Math.min(mesos, 1000000)); //might want a limit in YamlConfig.config.server.for this ps.setInt(3, 0); ps.setInt(4, 5); ps.setInt(5, characterId); @@ -11071,7 +11072,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public void setReborns(int value) { - if (!ServerConstants.USE_REBIRTH_SYSTEM) { + if (!YamlConfig.config.server.USE_REBIRTH_SYSTEM) { yellowMessage("Rebirth system is not enabled!"); throw new NotEnabledException(); } @@ -11096,7 +11097,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public int getReborns() { - if (!ServerConstants.USE_REBIRTH_SYSTEM) { + if (!YamlConfig.config.server.USE_REBIRTH_SYSTEM) { yellowMessage("Rebirth system is not enabled!"); throw new NotEnabledException(); } @@ -11119,7 +11120,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public void executeReborn() { - if (!ServerConstants.USE_REBIRTH_SYSTEM) { + if (!YamlConfig.config.server.USE_REBIRTH_SYSTEM) { yellowMessage("Rebirth system is not enabled!"); throw new NotEnabledException(); } diff --git a/src/client/MapleClient.java b/src/client/MapleClient.java index 415a87b722..b68f27460e 100644 --- a/src/client/MapleClient.java +++ b/src/client/MapleClient.java @@ -44,6 +44,7 @@ import java.util.Set; import java.util.concurrent.Semaphore; import java.util.concurrent.locks.Lock; +import config.YamlConfig; import jdk.nashorn.api.scripting.NashornScriptEngine; import tools.*; @@ -489,7 +490,7 @@ public class MapleClient { } public boolean checkPin(String other) { - if (!(ServerConstants.ENABLE_PIN && !canBypassPin())) { + if (!(YamlConfig.config.server.ENABLE_PIN && !canBypassPin())) { return true; } @@ -526,7 +527,7 @@ public class MapleClient { } public boolean checkPic(String other) { - if (!(ServerConstants.ENABLE_PIC && !canBypassPic())) { + if (!(YamlConfig.config.server.ENABLE_PIC && !canBypassPic())) { return true; } @@ -592,7 +593,7 @@ public class MapleClient { loginok = (tos == 0) ? 23 : 0; } else if (pwd.equals(passhash) || checkHash(passhash, "SHA-1", pwd) || checkHash(passhash, "SHA-512", pwd)) { // thanks GabrielSin for detecting some no-bcrypt inconsistencies here - loginok = (tos == 0) ? (!ServerConstants.BCRYPT_MIGRATION ? 23 : -23) : (!ServerConstants.BCRYPT_MIGRATION ? 0 : -10); // migrate to bcrypt + loginok = (tos == 0) ? (!YamlConfig.config.server.BCRYPT_MIGRATION ? 23 : -23) : (!YamlConfig.config.server.BCRYPT_MIGRATION ? 0 : -10); // migrate to bcrypt } else { loggedIn = false; loginok = 4; @@ -1036,7 +1037,7 @@ public class MapleClient { player.saveCharToDB(true); player.logOff(); - if(ServerConstants.INSTANT_NAME_CHANGE) player.doPendingNameChange(); + if(YamlConfig.config.server.INSTANT_NAME_CHANGE) player.doPendingNameChange(); clear(); } else { getChannelServer().removePlayer(player); diff --git a/src/client/autoban/AutobanFactory.java b/src/client/autoban/AutobanFactory.java index 04f0f672c5..f5cac45c7e 100644 --- a/src/client/autoban/AutobanFactory.java +++ b/src/client/autoban/AutobanFactory.java @@ -23,6 +23,7 @@ along with this program. If not, see . package client.autoban; import client.MapleCharacter; +import config.YamlConfig; import constants.ServerConstants; import net.server.Server; import tools.FilePrinter; @@ -84,19 +85,19 @@ public enum AutobanFactory { } public void alert(MapleCharacter chr, String reason) { - if(ServerConstants.USE_AUTOBAN == true) { + if(YamlConfig.config.server.USE_AUTOBAN == true) { if (chr != null && MapleLogger.ignored.contains(chr.getId())){ return; } Server.getInstance().broadcastGMMessage((chr != null ? chr.getWorld() : 0), MaplePacketCreator.sendYellowTip((chr != null ? MapleCharacter.makeMapleReadable(chr.getName()) : "") + " caused " + this.name() + " " + reason)); } - if (ServerConstants.USE_AUTOBAN_LOG) { + if (YamlConfig.config.server.USE_AUTOBAN_LOG) { FilePrinter.print(FilePrinter.AUTOBAN_WARNING, (chr != null ? MapleCharacter.makeMapleReadable(chr.getName()) : "") + " caused " + this.name() + " " + reason); } } public void autoban(MapleCharacter chr, String value) { - if(ServerConstants.USE_AUTOBAN == true) { + if(YamlConfig.config.server.USE_AUTOBAN == true) { chr.autoban("Autobanned for (" + this.name() + ": " + value + ")"); //chr.sendPolice("You will be disconnected for (" + this.name() + ": " + value + ")"); } diff --git a/src/client/autoban/AutobanManager.java b/src/client/autoban/AutobanManager.java index a3da536387..227790107e 100644 --- a/src/client/autoban/AutobanManager.java +++ b/src/client/autoban/AutobanManager.java @@ -6,6 +6,7 @@ package client.autoban; import client.MapleCharacter; +import config.YamlConfig; import constants.ServerConstants; import java.util.HashMap; import java.util.Map; @@ -33,7 +34,7 @@ public class AutobanManager { } public void addPoint(AutobanFactory fac, String reason) { - if (ServerConstants.USE_AUTOBAN) { + if (YamlConfig.config.server.USE_AUTOBAN) { if (chr.isGM() || chr.isBanned()){ return; } @@ -57,7 +58,7 @@ public class AutobanManager { //chr.sendPolice("You have been blocked by #bMooplePolice for the HACK reason#k."); } } - if (ServerConstants.USE_AUTOBAN_LOG) { + if (YamlConfig.config.server.USE_AUTOBAN_LOG) { // Lets log every single point too. FilePrinter.print(FilePrinter.AUTOBAN_WARNING, MapleCharacter.makeMapleReadable(chr.getName()) + " caused " + fac.name() + " " + reason); } @@ -114,7 +115,7 @@ public class AutobanManager { if (this.timestamp[type] == time) { this.timestampcounter[type]++; if (this.timestampcounter[type] >= times) { - if (ServerConstants.USE_AUTOBAN) { + if (YamlConfig.config.server.USE_AUTOBAN) { chr.getClient().disconnect(false, false); } diff --git a/src/client/command/commands/gm0/DropLimitCommand.java b/src/client/command/commands/gm0/DropLimitCommand.java index 7f10a7dd2c..c27d8ac26d 100644 --- a/src/client/command/commands/gm0/DropLimitCommand.java +++ b/src/client/command/commands/gm0/DropLimitCommand.java @@ -25,6 +25,7 @@ package client.command.commands.gm0; import client.MapleClient; import client.command.Command; +import config.YamlConfig; import constants.ServerConstants; public class DropLimitCommand extends Command { @@ -35,10 +36,10 @@ public class DropLimitCommand extends Command { @Override public void execute(MapleClient c, String[] params) { int dropCount = c.getPlayer().getMap().getDroppedItemCount(); - if(((float) dropCount) / ServerConstants.ITEM_LIMIT_ON_MAP < 0.75f) { - c.getPlayer().showHint("Current drop count: #b" + dropCount + "#k / #e" + ServerConstants.ITEM_LIMIT_ON_MAP + "#n", 300); + if(((float) dropCount) / YamlConfig.config.server.ITEM_LIMIT_ON_MAP < 0.75f) { + c.getPlayer().showHint("Current drop count: #b" + dropCount + "#k / #e" + YamlConfig.config.server.ITEM_LIMIT_ON_MAP + "#n", 300); } else { - c.getPlayer().showHint("Current drop count: #r" + dropCount + "#k / #e" + ServerConstants.ITEM_LIMIT_ON_MAP + "#n", 300); + c.getPlayer().showHint("Current drop count: #r" + dropCount + "#k / #e" + YamlConfig.config.server.ITEM_LIMIT_ON_MAP + "#n", 300); } } diff --git a/src/client/command/commands/gm0/MapOwnerClaimCommand.java b/src/client/command/commands/gm0/MapOwnerClaimCommand.java index 1f6e5c0cdc..352e7029a1 100644 --- a/src/client/command/commands/gm0/MapOwnerClaimCommand.java +++ b/src/client/command/commands/gm0/MapOwnerClaimCommand.java @@ -26,6 +26,7 @@ package client.command.commands.gm0; import client.command.Command; import client.MapleCharacter; import client.MapleClient; +import config.YamlConfig; import constants.ServerConstants; import server.maps.MapleMap; @@ -40,7 +41,7 @@ public class MapOwnerClaimCommand extends Command { try { MapleCharacter chr = c.getPlayer(); - if (ServerConstants.USE_MAP_OWNERSHIP_SYSTEM) { + if (YamlConfig.config.server.USE_MAP_OWNERSHIP_SYSTEM) { if (chr.getEventInstance() == null) { MapleMap ownedMap = chr.getOwnedMap(); // thanks Conrad for suggesting not unlease a map as soon as player exits it if (ownedMap != null) { diff --git a/src/client/command/commands/gm0/RatesCommand.java b/src/client/command/commands/gm0/RatesCommand.java index 378923e632..103ad11365 100644 --- a/src/client/command/commands/gm0/RatesCommand.java +++ b/src/client/command/commands/gm0/RatesCommand.java @@ -26,6 +26,7 @@ package client.command.commands.gm0; import client.MapleCharacter; import client.command.Command; import client.MapleClient; +import config.YamlConfig; import constants.ServerConstants; public class RatesCommand extends Command { @@ -43,7 +44,7 @@ public class RatesCommand extends Command { showMsg_ += "MESO Rate: #e#b" + player.getMesoRate() + "x#k#n" + "\r\n"; showMsg_ += "DROP Rate: #e#b" + player.getDropRate() + "x#k#n" + "\r\n"; showMsg_ += "BOSS DROP Rate: #e#b" + player.getBossDropRate() + "x#k#n" + "\r\n"; - if(ServerConstants.USE_QUEST_RATE) showMsg_ += "QUEST Rate: #e#b" + c.getWorldServer().getQuestRate() + "x#k#n" + "\r\n"; + if(YamlConfig.config.server.USE_QUEST_RATE) showMsg_ += "QUEST Rate: #e#b" + c.getWorldServer().getQuestRate() + "x#k#n" + "\r\n"; player.showHint(showMsg_, 300); } diff --git a/src/client/command/commands/gm0/ShowRatesCommand.java b/src/client/command/commands/gm0/ShowRatesCommand.java index 0db9088efd..dc10109280 100644 --- a/src/client/command/commands/gm0/ShowRatesCommand.java +++ b/src/client/command/commands/gm0/ShowRatesCommand.java @@ -26,6 +26,7 @@ package client.command.commands.gm0; import client.MapleCharacter; import client.command.Command; import client.MapleClient; +import config.YamlConfig; import constants.ServerConstants; public class ShowRatesCommand extends Command { @@ -60,7 +61,7 @@ public class ShowRatesCommand extends Command { if(player.getCouponDropRate() != 1) showMsg += "Coupon DROP Rate: #k" + player.getCouponDropRate() + "x#k" + "\r\n"; showMsg += "BOSS DROP Rate: #e#b" + player.getBossDropRate() + "x#k#n" + "\r\n"; - if(ServerConstants.USE_QUEST_RATE) { + if(YamlConfig.config.server.USE_QUEST_RATE) { showMsg += "\r\n" + "#eQUEST RATE#n" + "\r\n"; showMsg += "World QUEST Rate: #e#b" + c.getWorldServer().getQuestRate() + "x#k#n" + "\r\n"; } diff --git a/src/client/command/commands/gm0/StatDexCommand.java b/src/client/command/commands/gm0/StatDexCommand.java index 8bd0fd97d6..8dafe4c6b2 100644 --- a/src/client/command/commands/gm0/StatDexCommand.java +++ b/src/client/command/commands/gm0/StatDexCommand.java @@ -26,6 +26,7 @@ package client.command.commands.gm0; import client.MapleCharacter; import client.MapleClient; import client.command.Command; +import config.YamlConfig; import constants.ServerConstants; public class StatDexCommand extends Command { @@ -47,10 +48,10 @@ public class StatDexCommand extends Command { return; } } else { - amount = Math.min(remainingAp, ServerConstants.MAX_AP - player.getDex()); + amount = Math.min(remainingAp, YamlConfig.config.server.MAX_AP - player.getDex()); } if (!player.assignDex(Math.max(amount, 0))) { - player.dropMessage("Please make sure your AP is not over " + ServerConstants.MAX_AP + " and you have enough to distribute."); + player.dropMessage("Please make sure your AP is not over " + YamlConfig.config.server.MAX_AP + " and you have enough to distribute."); } } } diff --git a/src/client/command/commands/gm0/StatIntCommand.java b/src/client/command/commands/gm0/StatIntCommand.java index f28233636f..1c9e0bfeae 100644 --- a/src/client/command/commands/gm0/StatIntCommand.java +++ b/src/client/command/commands/gm0/StatIntCommand.java @@ -26,6 +26,7 @@ package client.command.commands.gm0; import client.command.Command; import client.MapleClient; import client.MapleCharacter; +import config.YamlConfig; import constants.ServerConstants; public class StatIntCommand extends Command { @@ -47,10 +48,10 @@ public class StatIntCommand extends Command { return; } } else { - amount = Math.min(remainingAp, ServerConstants.MAX_AP - player.getInt()); + amount = Math.min(remainingAp, YamlConfig.config.server.MAX_AP - player.getInt()); } if (!player.assignInt(Math.max(amount, 0))) { - player.dropMessage("Please make sure your AP is not over " + ServerConstants.MAX_AP + " and you have enough to distribute."); + player.dropMessage("Please make sure your AP is not over " + YamlConfig.config.server.MAX_AP + " and you have enough to distribute."); } } } diff --git a/src/client/command/commands/gm0/StatLukCommand.java b/src/client/command/commands/gm0/StatLukCommand.java index 1ec1ae8366..8d1719e9ad 100644 --- a/src/client/command/commands/gm0/StatLukCommand.java +++ b/src/client/command/commands/gm0/StatLukCommand.java @@ -26,6 +26,7 @@ package client.command.commands.gm0; import client.MapleCharacter; import client.MapleClient; import client.command.Command; +import config.YamlConfig; import constants.ServerConstants; public class StatLukCommand extends Command { @@ -47,10 +48,10 @@ public class StatLukCommand extends Command { return; } } else { - amount = Math.min(remainingAp, ServerConstants.MAX_AP - player.getLuk()); + amount = Math.min(remainingAp, YamlConfig.config.server.MAX_AP - player.getLuk()); } if (!player.assignLuk(Math.max(amount, 0))) { - player.dropMessage("Please make sure your AP is not over " + ServerConstants.MAX_AP + " and you have enough to distribute."); + player.dropMessage("Please make sure your AP is not over " + YamlConfig.config.server.MAX_AP + " and you have enough to distribute."); } } } diff --git a/src/client/command/commands/gm0/StatStrCommand.java b/src/client/command/commands/gm0/StatStrCommand.java index 512ea226a4..3ab139946b 100644 --- a/src/client/command/commands/gm0/StatStrCommand.java +++ b/src/client/command/commands/gm0/StatStrCommand.java @@ -26,6 +26,7 @@ package client.command.commands.gm0; import client.command.Command; import client.MapleClient; import client.MapleCharacter; +import config.YamlConfig; import constants.ServerConstants; public class StatStrCommand extends Command { @@ -46,11 +47,11 @@ public class StatStrCommand extends Command { return; } } else { - amount = Math.min(remainingAp, ServerConstants.MAX_AP - player.getStr()); + amount = Math.min(remainingAp, YamlConfig.config.server.MAX_AP - player.getStr()); } if (!player.assignStr(Math.max(amount, 0))) { - player.dropMessage("Please make sure your AP is not over " + ServerConstants.MAX_AP + " and you have enough to distribute."); + player.dropMessage("Please make sure your AP is not over " + YamlConfig.config.server.MAX_AP + " and you have enough to distribute."); } } } diff --git a/src/client/command/commands/gm2/ApCommand.java b/src/client/command/commands/gm2/ApCommand.java index aaecf00dff..e78512317f 100644 --- a/src/client/command/commands/gm2/ApCommand.java +++ b/src/client/command/commands/gm2/ApCommand.java @@ -26,6 +26,7 @@ package client.command.commands.gm2; import client.command.Command; import client.MapleClient; import client.MapleCharacter; +import config.YamlConfig; import constants.ServerConstants; public class ApCommand extends Command { @@ -44,7 +45,7 @@ public class ApCommand extends Command { if (params.length < 2) { int newAp = Integer.parseInt(params[0]); if (newAp < 0) newAp = 0; - else if (newAp > ServerConstants.MAX_AP) newAp = ServerConstants.MAX_AP; + else if (newAp > YamlConfig.config.server.MAX_AP) newAp = YamlConfig.config.server.MAX_AP; player.changeRemainingAp(newAp, false); } else { @@ -52,7 +53,7 @@ public class ApCommand extends Command { if (victim != null) { int newAp = Integer.parseInt(params[1]); if (newAp < 0) newAp = 0; - else if (newAp > ServerConstants.MAX_AP) newAp = ServerConstants.MAX_AP; + else if (newAp > YamlConfig.config.server.MAX_AP) newAp = YamlConfig.config.server.MAX_AP; victim.changeRemainingAp(newAp, false); } else { diff --git a/src/client/command/commands/gm2/ItemCommand.java b/src/client/command/commands/gm2/ItemCommand.java index e59df0d908..47463cb3c5 100644 --- a/src/client/command/commands/gm2/ItemCommand.java +++ b/src/client/command/commands/gm2/ItemCommand.java @@ -28,6 +28,7 @@ import client.MapleClient; import client.MapleCharacter; import client.inventory.MaplePet; import client.inventory.manipulator.MapleInventoryManipulator; +import config.YamlConfig; import constants.ItemConstants; import constants.ServerConstants; import server.MapleItemInformationProvider; @@ -57,7 +58,7 @@ public class ItemCommand extends Command { short quantity = 1; if(params.length >= 2) quantity = Short.parseShort(params[1]); - if (ServerConstants.BLOCK_GENERATE_CASH_ITEM && ii.isCash(itemId)) { + if (YamlConfig.config.server.BLOCK_GENERATE_CASH_ITEM && ii.isCash(itemId)) { player.yellowMessage("You cannot create a cash item with this command."); return; } diff --git a/src/client/command/commands/gm2/ItemDropCommand.java b/src/client/command/commands/gm2/ItemDropCommand.java index 2185fd7df5..f94d79f27b 100644 --- a/src/client/command/commands/gm2/ItemDropCommand.java +++ b/src/client/command/commands/gm2/ItemDropCommand.java @@ -29,6 +29,7 @@ import client.MapleCharacter; import client.inventory.Item; import client.inventory.MapleInventoryType; import client.inventory.MaplePet; +import config.YamlConfig; import constants.ItemConstants; import constants.ServerConstants; import server.MapleItemInformationProvider; @@ -58,7 +59,7 @@ public class ItemDropCommand extends Command { short quantity = 1; if(params.length >= 2) quantity = Short.parseShort(params[1]); - if (ServerConstants.BLOCK_GENERATE_CASH_ITEM && ii.isCash(itemId)) { + if (YamlConfig.config.server.BLOCK_GENERATE_CASH_ITEM && ii.isCash(itemId)) { player.yellowMessage("You cannot create a cash item with this command."); return; } diff --git a/src/client/command/commands/gm2/LevelCommand.java b/src/client/command/commands/gm2/LevelCommand.java index e0b0b7392e..4b51b80404 100644 --- a/src/client/command/commands/gm2/LevelCommand.java +++ b/src/client/command/commands/gm2/LevelCommand.java @@ -26,6 +26,7 @@ package client.command.commands.gm2; import client.command.Command; import client.MapleClient; import client.MapleCharacter; +import config.YamlConfig; import constants.ServerConstants; public class LevelCommand extends Command { @@ -45,7 +46,7 @@ public class LevelCommand extends Command { player.setLevel(Math.min(Integer.parseInt(params[0]), player.getMaxClassLevel()) - 1); player.resetPlayerRates(); - if (ServerConstants.USE_ADD_RATES_BY_LEVEL) player.setPlayerRates(); + if (YamlConfig.config.server.USE_ADD_RATES_BY_LEVEL) player.setPlayerRates(); player.setWorldRates(); player.levelUp(false); diff --git a/src/client/command/commands/gm2/MaxStatCommand.java b/src/client/command/commands/gm2/MaxStatCommand.java index af770b4fe2..0136d4687a 100644 --- a/src/client/command/commands/gm2/MaxStatCommand.java +++ b/src/client/command/commands/gm2/MaxStatCommand.java @@ -27,6 +27,7 @@ import client.MapleStat; import client.command.Command; import client.MapleClient; import client.MapleCharacter; +import config.YamlConfig; import constants.ServerConstants; public class MaxStatCommand extends Command { @@ -40,7 +41,7 @@ public class MaxStatCommand extends Command { player.loseExp(player.getExp(), false, false); player.setLevel(255); player.resetPlayerRates(); - if (ServerConstants.USE_ADD_RATES_BY_LEVEL) player.setPlayerRates(); + if (YamlConfig.config.server.USE_ADD_RATES_BY_LEVEL) player.setPlayerRates(); player.setWorldRates(); player.updateStrDexIntLuk(Short.MAX_VALUE); player.setFame(13337); diff --git a/src/client/command/commands/gm2/SpCommand.java b/src/client/command/commands/gm2/SpCommand.java index 5b217b62c4..eb890b8a29 100644 --- a/src/client/command/commands/gm2/SpCommand.java +++ b/src/client/command/commands/gm2/SpCommand.java @@ -26,6 +26,7 @@ package client.command.commands.gm2; import client.command.Command; import client.MapleClient; import client.MapleCharacter; +import config.YamlConfig; import constants.ServerConstants; public class SpCommand extends Command { @@ -44,7 +45,7 @@ public class SpCommand extends Command { if (params.length == 1) { int newSp = Integer.parseInt(params[0]); if (newSp < 0) newSp = 0; - else if (newSp > ServerConstants.MAX_AP) newSp = ServerConstants.MAX_AP; + else if (newSp > YamlConfig.config.server.MAX_AP) newSp = YamlConfig.config.server.MAX_AP; player.updateRemainingSp(newSp); } else { @@ -52,7 +53,7 @@ public class SpCommand extends Command { if (victim != null) { int newSp = Integer.parseInt(params[1]); if (newSp < 0) newSp = 0; - else if (newSp > ServerConstants.MAX_AP) newSp = ServerConstants.MAX_AP; + else if (newSp > YamlConfig.config.server.MAX_AP) newSp = YamlConfig.config.server.MAX_AP; victim.updateRemainingSp(newSp); diff --git a/src/client/command/commands/gm5/SetCommand.java b/src/client/command/commands/gm5/SetCommand.java index 7614189753..0de439bcee 100644 --- a/src/client/command/commands/gm5/SetCommand.java +++ b/src/client/command/commands/gm5/SetCommand.java @@ -25,6 +25,7 @@ package client.command.commands.gm5; import client.command.Command; import client.MapleClient; +import config.YamlConfig; import constants.ServerConstants; public class SetCommand extends Command { @@ -35,7 +36,7 @@ public class SetCommand extends Command { @Override public void execute(MapleClient c, String[] params) { for (int i = 0; i < params.length; i++) { - ServerConstants.DEBUG_VALUES[i] = Integer.parseInt(params[i]); + YamlConfig.config.server.DEBUG_VALUES[i] = Integer.parseInt(params[i]); } } } diff --git a/src/client/command/commands/gm5/ShowMoveLifeCommand.java b/src/client/command/commands/gm5/ShowMoveLifeCommand.java index 291c1f63ab..df014eb882 100644 --- a/src/client/command/commands/gm5/ShowMoveLifeCommand.java +++ b/src/client/command/commands/gm5/ShowMoveLifeCommand.java @@ -25,6 +25,7 @@ package client.command.commands.gm5; import client.command.Command; import client.MapleClient; +import config.YamlConfig; import constants.ServerConstants; public class ShowMoveLifeCommand extends Command { @@ -34,6 +35,6 @@ public class ShowMoveLifeCommand extends Command { @Override public void execute(MapleClient c, String[] params) { - ServerConstants.USE_DEBUG_SHOW_RCVD_MVLIFE = !ServerConstants.USE_DEBUG_SHOW_RCVD_MVLIFE; + YamlConfig.config.server.USE_DEBUG_SHOW_RCVD_MVLIFE = !YamlConfig.config.server.USE_DEBUG_SHOW_RCVD_MVLIFE; } } diff --git a/src/client/command/commands/gm5/ShowPacketsCommand.java b/src/client/command/commands/gm5/ShowPacketsCommand.java index ff1798cc85..2d6ebce1dc 100644 --- a/src/client/command/commands/gm5/ShowPacketsCommand.java +++ b/src/client/command/commands/gm5/ShowPacketsCommand.java @@ -25,6 +25,7 @@ package client.command.commands.gm5; import client.command.Command; import client.MapleClient; +import config.YamlConfig; import constants.ServerConstants; public class ShowPacketsCommand extends Command { @@ -34,6 +35,6 @@ public class ShowPacketsCommand extends Command { @Override public void execute(MapleClient c, String[] params) { - ServerConstants.USE_DEBUG_SHOW_RCVD_PACKET = !ServerConstants.USE_DEBUG_SHOW_RCVD_PACKET; + YamlConfig.config.server.USE_DEBUG_SHOW_RCVD_PACKET = !YamlConfig.config.server.USE_DEBUG_SHOW_RCVD_PACKET; } } diff --git a/src/client/command/commands/gm6/SupplyRateCouponCommand.java b/src/client/command/commands/gm6/SupplyRateCouponCommand.java index 17a4defbab..10ac8be42b 100644 --- a/src/client/command/commands/gm6/SupplyRateCouponCommand.java +++ b/src/client/command/commands/gm6/SupplyRateCouponCommand.java @@ -22,6 +22,7 @@ package client.command.commands.gm6; import client.MapleCharacter; import client.MapleClient; import client.command.Command; +import config.YamlConfig; import constants.ServerConstants; public class SupplyRateCouponCommand extends Command { @@ -37,7 +38,7 @@ public class SupplyRateCouponCommand extends Command { return; } - ServerConstants.USE_SUPPLY_RATE_COUPONS = params[0].compareToIgnoreCase("no") != 0; - player.dropMessage(5, "Rate coupons are now " + (ServerConstants.USE_SUPPLY_RATE_COUPONS ? "enabled" : "disabled") + " for purchase at the Cash Shop."); + YamlConfig.config.server.USE_SUPPLY_RATE_COUPONS = params[0].compareToIgnoreCase("no") != 0; + player.dropMessage(5, "Rate coupons are now " + (YamlConfig.config.server.USE_SUPPLY_RATE_COUPONS ? "enabled" : "disabled") + " for purchase at the Cash Shop."); } } diff --git a/src/client/creator/CharacterFactory.java b/src/client/creator/CharacterFactory.java index 4aa0da0e24..54721932fb 100644 --- a/src/client/creator/CharacterFactory.java +++ b/src/client/creator/CharacterFactory.java @@ -25,6 +25,7 @@ import client.MapleSkinColor; import client.inventory.Item; import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; +import config.YamlConfig; import constants.ServerConstants; import net.server.Server; import server.MapleItemInformationProvider; @@ -38,7 +39,7 @@ import tools.MaplePacketCreator; public abstract class CharacterFactory { protected synchronized static int createNewCharacter(MapleClient c, String name, int face, int hair, int skin, int gender, CharacterFactoryRecipe recipe) { - if (ServerConstants.COLLECTIVE_CHARSLOT ? c.getAvailableCharacterSlots() <= 0 : c.getAvailableCharacterWorldSlots() <= 0) { + if (YamlConfig.config.server.COLLECTIVE_CHARSLOT ? c.getAvailableCharacterSlots() <= 0 : c.getAvailableCharacterWorldSlots() <= 0) { return -3; } diff --git a/src/client/creator/CharacterFactoryRecipe.java b/src/client/creator/CharacterFactoryRecipe.java index 74d73f001b..8d121558f8 100644 --- a/src/client/creator/CharacterFactoryRecipe.java +++ b/src/client/creator/CharacterFactoryRecipe.java @@ -23,6 +23,7 @@ import client.MapleJob; import client.Skill; import client.inventory.Item; import client.inventory.MapleInventoryType; +import config.YamlConfig; import constants.ServerConstants; import java.util.concurrent.atomic.AtomicInteger; import java.util.LinkedHashMap; @@ -56,8 +57,8 @@ public class CharacterFactoryRecipe { this.shoes = shoes; this.weapon = weapon; - if (!ServerConstants.USE_STARTING_AP_4) { - if (ServerConstants.USE_AUTOASSIGN_STARTERS_AP) { + if (!YamlConfig.config.server.USE_STARTING_AP_4) { + if (YamlConfig.config.server.USE_AUTOASSIGN_STARTERS_AP) { str = 12; dex = 5; } else { diff --git a/src/client/inventory/Equip.java b/src/client/inventory/Equip.java index 93f9ff0387..f78755ff59 100644 --- a/src/client/inventory/Equip.java +++ b/src/client/inventory/Equip.java @@ -22,6 +22,7 @@ package client.inventory; import client.MapleClient; +import config.YamlConfig; import constants.ServerConstants; import constants.ExpTable; import constants.ItemConstants; @@ -279,7 +280,7 @@ public class Equip extends Item { private static int getStatModifier(boolean isAttribute) { // each set of stat points grants a chance for a bonus stat point upgrade at equip level up. - if(ServerConstants.USE_EQUIPMNT_LVLUP_POWER) { + if(YamlConfig.config.server.USE_EQUIPMNT_LVLUP_POWER) { if(isAttribute) return 2; else return 4; } @@ -290,7 +291,7 @@ public class Equip extends Item { } private static int randomizeStatUpgrade(int top) { - int limit = Math.min(top, ServerConstants.MAX_EQUIPMNT_LVLUP_STAT_UP); + int limit = Math.min(top, YamlConfig.config.server.MAX_EQUIPMNT_LVLUP_STAT_UP); int poolCount = (limit * (limit + 1) / 2) + limit; int rnd = Randomizer.rand(0, poolCount); @@ -383,7 +384,7 @@ public class Equip extends Item { public Pair> gainStats(List> stats) { boolean gotSlot = false, gotVicious = false; String lvupStr = ""; - Integer statUp, maxStat = ServerConstants.MAX_EQUIPMNT_STAT; + Integer statUp, maxStat = YamlConfig.config.server.MAX_EQUIPMNT_STAT; for (Pair stat : stats) { switch (stat.getLeft()) { case incDEX: @@ -483,7 +484,7 @@ public class Equip extends Item { } if(!stats.isEmpty()) { - if(ServerConstants.USE_EQUIPMNT_LVLUP_SLOTS) { + if(YamlConfig.config.server.USE_EQUIPMNT_LVLUP_SLOTS) { if(vicious > 0) getUnitSlotUpgrade(stats, StatUpgrade.incVicious); getUnitSlotUpgrade(stats, StatUpgrade.incSlot); } @@ -491,7 +492,7 @@ public class Equip extends Item { isUpgradeable = false; improveDefaultStats(stats); - if(ServerConstants.USE_EQUIPMNT_LVLUP_SLOTS) { + if(YamlConfig.config.server.USE_EQUIPMNT_LVLUP_SLOTS) { if(vicious > 0) getUnitSlotUpgrade(stats, StatUpgrade.incVicious); getUnitSlotUpgrade(stats, StatUpgrade.incSlot); } @@ -499,7 +500,7 @@ public class Equip extends Item { if(isUpgradeable) { while(stats.isEmpty()) { improveDefaultStats(stats); - if(ServerConstants.USE_EQUIPMNT_LVLUP_SLOTS) { + if(YamlConfig.config.server.USE_EQUIPMNT_LVLUP_SLOTS) { if(vicious > 0) getUnitSlotUpgrade(stats, StatUpgrade.incVicious); getUnitSlotUpgrade(stats, StatUpgrade.incSlot); } @@ -563,14 +564,14 @@ public class Equip extends Item { return; } - int equipMaxLevel = Math.min(30, Math.max(ii.getEquipLevel(this.getItemId(), true), ServerConstants.USE_EQUIPMNT_LVLUP)); + int equipMaxLevel = Math.min(30, Math.max(ii.getEquipLevel(this.getItemId(), true), YamlConfig.config.server.USE_EQUIPMNT_LVLUP)); if (itemLevel >= equipMaxLevel) { return; } int reqLevel = ii.getEquipLevelReq(this.getItemId()); - float masteryModifier = (float)(ServerConstants.EQUIP_EXP_RATE * ExpTable.getExpNeededForLevel(1)) / (float)normalizedMasteryExp(reqLevel); + float masteryModifier = (float)(YamlConfig.config.server.EQUIP_EXP_RATE * ExpTable.getExpNeededForLevel(1)) / (float)normalizedMasteryExp(reqLevel); float elementModifier = (isElemental) ? 0.85f : 0.6f; float baseExpGain = gain * elementModifier * masteryModifier; @@ -578,7 +579,7 @@ public class Equip extends Item { itemExp += baseExpGain; int expNeeded = ExpTable.getEquipExpNeededForLevel(itemLevel); - if(ServerConstants.USE_DEBUG_SHOW_INFO_EQPEXP) System.out.println("'" + ii.getName(this.getItemId()) + "' -> EXP Gain: " + gain + " Mastery: " + masteryModifier + " Base gain: " + baseExpGain + " exp: " + itemExp + " / " + expNeeded + ", Kills TNL: " + expNeeded / (baseExpGain / c.getPlayer().getExpRate())); + if(YamlConfig.config.server.USE_DEBUG_SHOW_INFO_EQPEXP) System.out.println("'" + ii.getName(this.getItemId()) + "' -> EXP Gain: " + gain + " Mastery: " + masteryModifier + " Base gain: " + baseExpGain + " exp: " + itemExp + " / " + expNeeded + ", Kills TNL: " + expNeeded / (baseExpGain / c.getPlayer().getExpRate())); if (itemExp >= expNeeded) { while(itemExp >= expNeeded) { @@ -595,7 +596,7 @@ public class Equip extends Item { } c.getPlayer().forceUpdateItem(this); - //if(ServerConstants.USE_DEBUG) c.getPlayer().dropMessage("'" + ii.getName(this.getItemId()) + "': " + itemExp + " / " + expNeeded); + //if(YamlConfig.config.server.USE_DEBUG) c.getPlayer().dropMessage("'" + ii.getName(this.getItemId()) + "': " + itemExp + " / " + expNeeded); } private boolean reachedMaxLevel() { @@ -605,7 +606,7 @@ public class Equip extends Item { } } - return itemLevel >= ServerConstants.USE_EQUIPMNT_LVLUP; + return itemLevel >= YamlConfig.config.server.USE_EQUIPMNT_LVLUP; } public String showEquipFeatures(MapleClient c) { diff --git a/src/client/inventory/manipulator/MapleInventoryManipulator.java b/src/client/inventory/manipulator/MapleInventoryManipulator.java index 5a9247af51..036bb74f8b 100644 --- a/src/client/inventory/manipulator/MapleInventoryManipulator.java +++ b/src/client/inventory/manipulator/MapleInventoryManipulator.java @@ -31,6 +31,7 @@ import client.inventory.MapleInventoryType; import client.inventory.MaplePet; import client.inventory.ModifyInventory; import client.newyear.NewYearCardRecord; +import config.YamlConfig; import constants.ItemConstants; import constants.ServerConstants; @@ -689,9 +690,9 @@ public class MapleInventoryManipulator { if (ii.isDropRestricted(it.getItemId())) { return true; } else if (ii.isCash(it.getItemId())) { - if (ServerConstants.USE_ENFORCE_UNMERCHABLE_CASH) { // thanks Ari for noticing cash drops not available server-side + if (YamlConfig.config.server.USE_ENFORCE_UNMERCHABLE_CASH) { // thanks Ari for noticing cash drops not available server-side return true; - } else if (ItemConstants.isPet(it.getItemId()) && ServerConstants.USE_ENFORCE_UNMERCHABLE_PET) { + } else if (ItemConstants.isPet(it.getItemId()) && YamlConfig.config.server.USE_ENFORCE_UNMERCHABLE_PET) { return true; } } else if (isDroppedItemRestricted(it)) { @@ -802,7 +803,7 @@ public class MapleInventoryManipulator { } private static boolean isDroppedItemRestricted(Item it) { - return ServerConstants.USE_ERASE_UNTRADEABLE_DROP && it.isUntradeable(); + return YamlConfig.config.server.USE_ERASE_UNTRADEABLE_DROP && it.isUntradeable(); } public static boolean isSandboxItem(Item it) { diff --git a/src/client/processor/AssignAPProcessor.java b/src/client/processor/AssignAPProcessor.java index 30fe248e21..9ba1c9fed1 100644 --- a/src/client/processor/AssignAPProcessor.java +++ b/src/client/processor/AssignAPProcessor.java @@ -33,6 +33,7 @@ import client.autoban.AutobanFactory; import client.inventory.Equip; import client.inventory.Item; import client.inventory.MapleInventoryType; +import config.YamlConfig; import constants.ServerConstants; import constants.skills.BlazeWizard; import constants.skills.Brawler; @@ -70,7 +71,7 @@ public class AssignAPProcessor { int remainingAp = chr.getRemainingAp(); slea.skip(8); - if(ServerConstants.USE_SERVER_AUTOASSIGNER) { + if(YamlConfig.config.server.USE_SERVER_AUTOASSIGNER) { // --------- Ronan Lana's AUTOASSIGNER --------- // This method excels for assigning APs in such a way to cover all equipments AP requirements. byte opt = slea.readByte(); // useful for pirate autoassigning @@ -135,7 +136,7 @@ public class AssignAPProcessor { luk = scStat; str = 0; dex = 0; - if(ServerConstants.USE_AUTOASSIGN_SECONDARY_CAP && luk + chr.getLuk() > CAP) { + if(YamlConfig.config.server.USE_AUTOASSIGN_SECONDARY_CAP && luk + chr.getLuk() > CAP) { temp = luk + chr.getLuk() - CAP; scStat -= temp; prStat += temp; @@ -161,7 +162,7 @@ public class AssignAPProcessor { str = scStat; int_ = 0; luk = 0; - if(ServerConstants.USE_AUTOASSIGN_SECONDARY_CAP && str + chr.getStr() > CAP) { + if(YamlConfig.config.server.USE_AUTOASSIGN_SECONDARY_CAP && str + chr.getStr() > CAP) { temp = str + chr.getStr() - CAP; scStat -= temp; prStat += temp; @@ -187,7 +188,7 @@ public class AssignAPProcessor { str = scStat; int_ = 0; luk = 0; - if(ServerConstants.USE_AUTOASSIGN_SECONDARY_CAP && str + chr.getStr() > CAP) { + if(YamlConfig.config.server.USE_AUTOASSIGN_SECONDARY_CAP && str + chr.getStr() > CAP) { temp = str + chr.getStr() - CAP; scStat -= temp; prStat += temp; @@ -241,12 +242,12 @@ public class AssignAPProcessor { str = trStat; int_ = 0; - if(ServerConstants.USE_AUTOASSIGN_SECONDARY_CAP && dex + chr.getDex() > CAP) { + if(YamlConfig.config.server.USE_AUTOASSIGN_SECONDARY_CAP && dex + chr.getDex() > CAP) { temp = dex + chr.getDex() - CAP; scStat -= temp; prStat += temp; } - if(ServerConstants.USE_AUTOASSIGN_SECONDARY_CAP && str + chr.getStr() > CAP) { + if(YamlConfig.config.server.USE_AUTOASSIGN_SECONDARY_CAP && str + chr.getStr() > CAP) { temp = str + chr.getStr() - CAP; trStat -= temp; prStat += temp; @@ -313,7 +314,7 @@ public class AssignAPProcessor { dex = scStat; int_ = 0; luk = 0; - if(ServerConstants.USE_AUTOASSIGN_SECONDARY_CAP && dex + chr.getDex() > CAP) { + if(YamlConfig.config.server.USE_AUTOASSIGN_SECONDARY_CAP && dex + chr.getDex() > CAP) { temp = dex + chr.getDex() - CAP; scStat -= temp; prStat += temp; @@ -387,44 +388,44 @@ public class AssignAPProcessor { int newVal = 0; if (type.equals(MapleStat.STR)) { newVal = statUpdate[0] + gain; - if (newVal > ServerConstants.MAX_AP) { - statGain[0] += (gain - (newVal - ServerConstants.MAX_AP)); - statUpdate[0] = ServerConstants.MAX_AP; + if (newVal > YamlConfig.config.server.MAX_AP) { + statGain[0] += (gain - (newVal - YamlConfig.config.server.MAX_AP)); + statUpdate[0] = YamlConfig.config.server.MAX_AP; } else { statGain[0] += gain; statUpdate[0] = newVal; } } else if (type.equals(MapleStat.INT)) { newVal = statUpdate[3] + gain; - if (newVal > ServerConstants.MAX_AP) { - statGain[3] += (gain - (newVal - ServerConstants.MAX_AP)); - statUpdate[3] = ServerConstants.MAX_AP; + if (newVal > YamlConfig.config.server.MAX_AP) { + statGain[3] += (gain - (newVal - YamlConfig.config.server.MAX_AP)); + statUpdate[3] = YamlConfig.config.server.MAX_AP; } else { statGain[3] += gain; statUpdate[3] = newVal; } } else if (type.equals(MapleStat.LUK)) { newVal = statUpdate[2] + gain; - if (newVal > ServerConstants.MAX_AP) { - statGain[2] += (gain - (newVal - ServerConstants.MAX_AP)); - statUpdate[2] = ServerConstants.MAX_AP; + if (newVal > YamlConfig.config.server.MAX_AP) { + statGain[2] += (gain - (newVal - YamlConfig.config.server.MAX_AP)); + statUpdate[2] = YamlConfig.config.server.MAX_AP; } else { statGain[2] += gain; statUpdate[2] = newVal; } } else if (type.equals(MapleStat.DEX)) { newVal = statUpdate[1] + gain; - if (newVal > ServerConstants.MAX_AP) { - statGain[1] += (gain - (newVal - ServerConstants.MAX_AP)); - statUpdate[1] = ServerConstants.MAX_AP; + if (newVal > YamlConfig.config.server.MAX_AP) { + statGain[1] += (gain - (newVal - YamlConfig.config.server.MAX_AP)); + statUpdate[1] = YamlConfig.config.server.MAX_AP; } else { statGain[1] += gain; statUpdate[1] = newVal; } } - if (newVal > ServerConstants.MAX_AP) { - return newVal - ServerConstants.MAX_AP; + if (newVal > YamlConfig.config.server.MAX_AP) { + return newVal - YamlConfig.config.server.MAX_AP; } return 0; } @@ -489,7 +490,7 @@ public class AssignAPProcessor { } break; case 2048: // HP - if(ServerConstants.USE_ENFORCE_HPMP_SWAP) { + if(YamlConfig.config.server.USE_ENFORCE_HPMP_SWAP) { if (APTo != 8192) { player.message("You can only swap HP ability points to MP."); c.announce(MaplePacketCreator.enableActions()); @@ -514,13 +515,13 @@ public class AssignAPProcessor { int curHp = player.getHp(); int hplose = -takeHp(player.getJob()); player.assignHP(hplose, -1); - if (!ServerConstants.USE_FIXED_RATIO_HPMP_UPDATE) { + if (!YamlConfig.config.server.USE_FIXED_RATIO_HPMP_UPDATE) { player.updateHp(Math.max(1, curHp + hplose)); } break; case 8192: // MP - if(ServerConstants.USE_ENFORCE_HPMP_SWAP) { + if(YamlConfig.config.server.USE_ENFORCE_HPMP_SWAP) { if (APTo != 2048) { player.message("You can only swap MP ability points to HP."); c.announce(MaplePacketCreator.enableActions()); @@ -558,7 +559,7 @@ public class AssignAPProcessor { int curMp = player.getMp(); int mplose = -takeMp(job); player.assignMP(mplose, -1); - if (!ServerConstants.USE_FIXED_RATIO_HPMP_UPDATE) { + if (!YamlConfig.config.server.USE_FIXED_RATIO_HPMP_UPDATE) { player.updateMp(Math.max(0, curMp + mplose)); } break; @@ -647,7 +648,7 @@ public class AssignAPProcessor { MaxHP += increaseHP.getEffect(sLvl).getY(); } - if(ServerConstants.USE_RANDOMIZE_HPMP_GAIN) { + if(YamlConfig.config.server.USE_RANDOMIZE_HPMP_GAIN) { if (usedAPReset) { MaxHP += 20; } else { @@ -657,7 +658,7 @@ public class AssignAPProcessor { MaxHP += 20; } } else if(job.isA(MapleJob.ARAN1)) { - if(ServerConstants.USE_RANDOMIZE_HPMP_GAIN) { + if(YamlConfig.config.server.USE_RANDOMIZE_HPMP_GAIN) { if (usedAPReset) { MaxHP += 20; } else { @@ -667,7 +668,7 @@ public class AssignAPProcessor { MaxHP += 28; } } else if (job.isA(MapleJob.MAGICIAN) || job.isA(MapleJob.BLAZEWIZARD1)) { - if(ServerConstants.USE_RANDOMIZE_HPMP_GAIN) { + if(YamlConfig.config.server.USE_RANDOMIZE_HPMP_GAIN) { if (usedAPReset) { MaxHP += 6; } else { @@ -677,7 +678,7 @@ public class AssignAPProcessor { MaxHP += 6; } } else if (job.isA(MapleJob.THIEF) || job.isA(MapleJob.NIGHTWALKER1)) { - if(ServerConstants.USE_RANDOMIZE_HPMP_GAIN) { + if(YamlConfig.config.server.USE_RANDOMIZE_HPMP_GAIN) { if (usedAPReset) { MaxHP += 16; } else { @@ -687,7 +688,7 @@ public class AssignAPProcessor { MaxHP += 16; } } else if(job.isA(MapleJob.BOWMAN) || job.isA(MapleJob.WINDARCHER1)) { - if(ServerConstants.USE_RANDOMIZE_HPMP_GAIN) { + if(YamlConfig.config.server.USE_RANDOMIZE_HPMP_GAIN) { if (usedAPReset) { MaxHP += 16; } else { @@ -705,7 +706,7 @@ public class AssignAPProcessor { MaxHP += increaseHP.getEffect(sLvl).getY(); } - if(ServerConstants.USE_RANDOMIZE_HPMP_GAIN) { + if(YamlConfig.config.server.USE_RANDOMIZE_HPMP_GAIN) { if (usedAPReset) { MaxHP += 18; } else { @@ -717,7 +718,7 @@ public class AssignAPProcessor { } else if (usedAPReset) { MaxHP += 8; } else { - if(ServerConstants.USE_RANDOMIZE_HPMP_GAIN) { + if(YamlConfig.config.server.USE_RANDOMIZE_HPMP_GAIN) { MaxHP += Randomizer.rand(8, 12); } else { MaxHP += 10; @@ -732,7 +733,7 @@ public class AssignAPProcessor { int MaxMP = 0; if (job.isA(MapleJob.WARRIOR) || job.isA(MapleJob.DAWNWARRIOR1) || job.isA(MapleJob.ARAN1)) { - if(ServerConstants.USE_RANDOMIZE_HPMP_GAIN) { + if(YamlConfig.config.server.USE_RANDOMIZE_HPMP_GAIN) { if(!usedAPReset) { MaxMP += (Randomizer.rand(2, 4) + (player.getInt() / 10)); } else { @@ -750,7 +751,7 @@ public class AssignAPProcessor { MaxMP += increaseMP.getEffect(sLvl).getY(); } - if(ServerConstants.USE_RANDOMIZE_HPMP_GAIN) { + if(YamlConfig.config.server.USE_RANDOMIZE_HPMP_GAIN) { if(!usedAPReset) { MaxMP += (Randomizer.rand(12, 16) + (player.getInt() / 20)); } else { @@ -760,7 +761,7 @@ public class AssignAPProcessor { MaxMP += 18; } } else if (job.isA(MapleJob.BOWMAN) || job.isA(MapleJob.WINDARCHER1)) { - if(ServerConstants.USE_RANDOMIZE_HPMP_GAIN) { + if(YamlConfig.config.server.USE_RANDOMIZE_HPMP_GAIN) { if(!usedAPReset) { MaxMP += (Randomizer.rand(6, 8) + (player.getInt() / 10)); } else { @@ -770,7 +771,7 @@ public class AssignAPProcessor { MaxMP += 10; } } else if(job.isA(MapleJob.THIEF) || job.isA(MapleJob.NIGHTWALKER1)) { - if(ServerConstants.USE_RANDOMIZE_HPMP_GAIN) { + if(YamlConfig.config.server.USE_RANDOMIZE_HPMP_GAIN) { if(!usedAPReset) { MaxMP += (Randomizer.rand(6, 8) + (player.getInt() / 10)); } else { @@ -780,7 +781,7 @@ public class AssignAPProcessor { MaxMP += 10; } } else if (job.isA(MapleJob.PIRATE) || job.isA(MapleJob.THUNDERBREAKER1)) { - if(ServerConstants.USE_RANDOMIZE_HPMP_GAIN) { + if(YamlConfig.config.server.USE_RANDOMIZE_HPMP_GAIN) { if(!usedAPReset) { MaxMP += (Randomizer.rand(7, 9) + (player.getInt() / 10)); } else { @@ -790,7 +791,7 @@ public class AssignAPProcessor { MaxMP += 14; } } else { - if(ServerConstants.USE_RANDOMIZE_HPMP_GAIN) { + if(YamlConfig.config.server.USE_RANDOMIZE_HPMP_GAIN) { if(!usedAPReset) { MaxMP += (Randomizer.rand(4, 6) + (player.getInt() / 10)); } else { diff --git a/src/client/processor/DueyProcessor.java b/src/client/processor/DueyProcessor.java index d629e565c2..9630ddba57 100644 --- a/src/client/processor/DueyProcessor.java +++ b/src/client/processor/DueyProcessor.java @@ -32,6 +32,7 @@ import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; import client.inventory.manipulator.MapleInventoryManipulator; import client.inventory.manipulator.MapleKarmaManipulator; +import config.YamlConfig; import constants.ItemConstants; import constants.ServerConstants; import java.sql.Connection; @@ -501,7 +502,7 @@ public class DueyProcessor { if (c.tryacquireClient()) { try { long timeNow = System.currentTimeMillis(); - if(timeNow - c.getPlayer().getNpcCooldown() < ServerConstants.BLOCK_NPC_RACE_CONDT) { + if(timeNow - c.getPlayer().getNpcCooldown() < YamlConfig.config.server.BLOCK_NPC_RACE_CONDT) { c.announce(MaplePacketCreator.enableActions()); return; } diff --git a/src/client/processor/MakerProcessor.java b/src/client/processor/MakerProcessor.java index 7c4ec841dc..fc48e30615 100644 --- a/src/client/processor/MakerProcessor.java +++ b/src/client/processor/MakerProcessor.java @@ -24,6 +24,7 @@ import client.MapleCharacter; import client.inventory.Equip; import client.inventory.Item; import client.inventory.MapleInventoryType; +import config.YamlConfig; import constants.ItemConstants; import constants.ServerConstants; import client.inventory.manipulator.MapleInventoryManipulator; @@ -238,7 +239,7 @@ public class MakerProcessor { Map reagentType = new LinkedHashMap<>(); List toRemove = new LinkedList<>(); - boolean isWeapon = ItemConstants.isWeapon(toCreate) || ServerConstants.USE_MAKER_PERMISSIVE_ATKUP; // thanks Vcoc for finding a case where a weapon wouldn't be counted as such due to a bounding on isWeapon + boolean isWeapon = ItemConstants.isWeapon(toCreate) || YamlConfig.config.server.USE_MAKER_PERMISSIVE_ATKUP; // thanks Vcoc for finding a case where a weapon wouldn't be counted as such due to a bounding on isWeapon for(Map.Entry r : reagentids.entrySet()) { int curRid = r.getKey(); @@ -371,8 +372,8 @@ public class MakerProcessor { Equip eqp = (Equip)item; if(ItemConstants.isAccessory(item.getItemId()) && eqp.getUpgradeSlots() <= 0) eqp.setUpgradeSlots(3); - if(ServerConstants.USE_ENHANCED_CRAFTING == true) { - if(!(c.getPlayer().isGM() && ServerConstants.USE_PERFECT_GM_SCROLL)) { + if(YamlConfig.config.server.USE_ENHANCED_CRAFTING == true) { + if(!(c.getPlayer().isGM() && YamlConfig.config.server.USE_PERFECT_GM_SCROLL)) { eqp.setUpgradeSlots((byte)(eqp.getUpgradeSlots() + 1)); } item = MapleItemInformationProvider.getInstance().scrollEquipWithId(eqp, 2049100, true, 2049100, c.getPlayer().isGM()); diff --git a/src/client/processor/PetAutopotProcessor.java b/src/client/processor/PetAutopotProcessor.java index faaf04912a..bca2d0e3a3 100644 --- a/src/client/processor/PetAutopotProcessor.java +++ b/src/client/processor/PetAutopotProcessor.java @@ -27,6 +27,7 @@ import client.inventory.Item; import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; import client.inventory.manipulator.MapleInventoryManipulator; +import config.YamlConfig; import constants.ServerConstants; import java.util.List; import server.MapleItemInformationProvider; @@ -125,13 +126,13 @@ public class PetAutopotProcessor { incMp = stat.getMp(); if(incMp <= 0 && hasMpGain) incMp = Math.ceil(maxMp * stat.getMpRate()); - if (ServerConstants.USE_COMPULSORY_AUTOPOT) { + if (YamlConfig.config.server.USE_COMPULSORY_AUTOPOT) { if (hasHpGain) { - qtyCount = (int) Math.ceil(((ServerConstants.PET_AUTOHP_RATIO * maxHp) - curHp) / incHp); + qtyCount = (int) Math.ceil(((YamlConfig.config.server.PET_AUTOHP_RATIO * maxHp) - curHp) / incHp); } if (hasMpGain) { - qtyCount = Math.max(qtyCount, (int) Math.ceil(((ServerConstants.PET_AUTOMP_RATIO * maxMp) - curMp) / incMp)); + qtyCount = Math.max(qtyCount, (int) Math.ceil(((YamlConfig.config.server.PET_AUTOMP_RATIO * maxMp) - curMp) / incMp)); } } else { qtyCount = 1; // non-compulsory autopot concept thanks to marcuswoon diff --git a/src/client/processor/StorageProcessor.java b/src/client/processor/StorageProcessor.java index d465d184f7..f900b676a5 100644 --- a/src/client/processor/StorageProcessor.java +++ b/src/client/processor/StorageProcessor.java @@ -28,6 +28,7 @@ import client.inventory.Item; import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; import client.inventory.manipulator.MapleKarmaManipulator; +import config.YamlConfig; import constants.ItemConstants; import constants.ServerConstants; import client.inventory.manipulator.MapleInventoryManipulator; @@ -167,7 +168,7 @@ public class StorageProcessor { storage.sendStored(c, ItemConstants.getInventoryType(itemId)); } } else if (mode == 6) { // arrange items - if(ServerConstants.USE_STORAGE_ITEM_SORT) storage.arrangeItems(c); + if(YamlConfig.config.server.USE_STORAGE_ITEM_SORT) storage.arrangeItems(c); c.announce(MaplePacketCreator.enableActions()); } else if (mode == 7) { // meso int meso = slea.readInt(); diff --git a/src/config/ServerConfig.java b/src/config/ServerConfig.java new file mode 100644 index 0000000000..d19727735e --- /dev/null +++ b/src/config/ServerConfig.java @@ -0,0 +1,305 @@ +package config; + +public class ServerConfig { + //Thread Tracker Configuration + public boolean USE_THREAD_TRACKER; + + //Database Configuration + public String DB_URL; + public String DB_USER; + public String DB_PASS; + public boolean DB_CONNECTION_POOL; + + //Login Configuration + public int WLDLIST_SIZE; + public int CHANNEL_SIZE; + public int CHANNEL_LOAD; + public int CHANNEL_LOCKS; + + public long RESPAWN_INTERVAL; + public long PURGING_INTERVAL; + public long RANKING_INTERVAL; + public long COUPON_INTERVAL; + public long UPDATE_INTERVAL; + + public boolean ENABLE_PIC; + public boolean ENABLE_PIN; + + public int BYPASS_PIC_EXPIRATION; + public int BYPASS_PIN_EXPIRATION; + + public boolean AUTOMATIC_REGISTER; + public boolean BCRYPT_MIGRATION; + public boolean COLLECTIVE_CHARSLOT; + public boolean DETERRED_MULTICLIENT; + + //Besides blocking logging in with several client sessions on the same machine, this also blocks suspicious login attempts for players that tries to login on an account using several diferent remote addresses. + + //Multiclient Coordinator Configuration + public int MAX_ALLOWED_ACCOUNT_HWID; + public int MAX_ACCOUNT_LOGIN_ATTEMPT; + public int LOGIN_ATTEMPT_DURATION; + + //Ip Configuration + public String HOST; + public boolean LOCALSERVER; + public boolean GMSERVER; + + //Other configuration + public boolean SHUTDOWNHOOK; + + //Server Flags + public boolean USE_CUSTOM_KEYSET; + public boolean USE_DEBUG; + public boolean USE_DEBUG_SHOW_INFO_EQPEXP; + public boolean USE_DEBUG_SHOW_RCVD_PACKET; + public boolean USE_DEBUG_SHOW_RCVD_MVLIFE; + public boolean USE_DEBUG_SHOW_PACKET; + public boolean USE_SUPPLY_RATE_COUPONS; + public boolean USE_IP_VALIDATION; + + public boolean USE_MAXRANGE; + public boolean USE_MAXRANGE_ECHO_OF_HERO; + public boolean USE_MTS; + public boolean USE_CPQ; + public boolean USE_AUTOHIDE_GM; + public boolean USE_BUYBACK_SYSTEM; + public boolean USE_FIXED_RATIO_HPMP_UPDATE; + public boolean USE_FAMILY_SYSTEM; + public boolean USE_DUEY; + public boolean USE_RANDOMIZE_HPMP_GAIN; + public boolean USE_STORAGE_ITEM_SORT; + public boolean USE_ITEM_SORT; + public boolean USE_ITEM_SORT_BY_NAME; + public boolean USE_PARTY_FOR_STARTERS; + public boolean USE_AUTOASSIGN_STARTERS_AP; + public boolean USE_AUTOASSIGN_SECONDARY_CAP; + public boolean USE_STARTING_AP_4; + public boolean USE_AUTOBAN; + public boolean USE_AUTOBAN_LOG; + public boolean USE_AUTOSAVE; + public boolean USE_SERVER_AUTOASSIGNER; + public boolean USE_REFRESH_RANK_MOVE; + public boolean USE_ENFORCE_ADMIN_ACCOUNT; + public boolean USE_ENFORCE_NOVICE_EXPRATE; + public boolean USE_ENFORCE_HPMP_SWAP; + public boolean USE_ENFORCE_MOB_LEVEL_RANGE; + public boolean USE_ENFORCE_JOB_LEVEL_RANGE; + public boolean USE_ENFORCE_JOB_SP_RANGE; + public boolean USE_ENFORCE_ITEM_SUGGESTION; + public boolean USE_ENFORCE_UNMERCHABLE_CASH; + public boolean USE_ENFORCE_UNMERCHABLE_PET; + public boolean USE_ENFORCE_MERCHANT_SAVE; + public boolean USE_ENFORCE_MDOOR_POSITION; + public boolean USE_SPAWN_CLEAN_MDOOR; + public boolean USE_SPAWN_LOOT_ON_ANIMATION; + public boolean USE_SPAWN_RELEVANT_LOOT; + public boolean USE_ERASE_PERMIT_ON_OPENSHOP; + public boolean USE_ERASE_UNTRADEABLE_DROP; + public boolean USE_ERASE_PET_ON_EXPIRATION; + public boolean USE_BUFF_MOST_SIGNIFICANT; + public boolean USE_BUFF_EVERLASTING; + public boolean USE_MULTIPLE_SAME_EQUIP_DROP; + public boolean USE_BANISHABLE_TOWN_SCROLL; + public boolean USE_ENABLE_FULL_RESPAWN; + public boolean USE_ENABLE_CHAT_LOG; + public boolean USE_REBIRTH_SYSTEM; + public boolean USE_MAP_OWNERSHIP_SYSTEM; + public boolean USE_FISHING_SYSTEM; + public boolean USE_NPCS_SCRIPTABLE; + + //Events/PQs Configuration + public boolean USE_OLD_GMS_STYLED_PQ_NPCS; + public boolean USE_ENABLE_SOLO_EXPEDITIONS; + public boolean USE_ENABLE_DAILY_EXPEDITIONS; + public boolean USE_ENABLE_RECALL_EVENT; + + //Announcement Configuration + public boolean USE_ANNOUNCE_SHOPITEMSOLD; + public boolean USE_ANNOUNCE_CHANGEJOB; + + //Cash Shop Configuration + public boolean USE_JOINT_CASHSHOP_INVENTORY; + public boolean USE_CLEAR_OUTDATED_COUPONS; + public boolean ALLOW_CASHSHOP_NAME_CHANGE; + public boolean ALLOW_CASHSHOP_WORLD_TRANSFER;//Allows players to buy world transfers in the cash shop. + + //Maker Configuration + public boolean USE_MAKER_PERMISSIVE_ATKUP; + public boolean USE_MAKER_FEE_HEURISTICS; + + //Custom Configuration + public boolean USE_ENABLE_CUSTOM_NPC_SCRIPT; + public boolean USE_STARTER_MERGE; + + //Commands Configuration + public boolean BLOCK_GENERATE_CASH_ITEM; + public boolean USE_WHOLE_SERVER_RANKING; + + public double EQUIP_EXP_RATE; + public double PQ_BONUS_EXP_RATE; + + public byte EXP_SPLIT_LEVEL_INTERVAL; + public byte EXP_SPLIT_LEECH_INTERVAL; + public float EXP_SPLIT_MVP_MOD; + public float EXP_SPLIT_COMMON_MOD; + public float PARTY_BONUS_EXP_RATE; + + //Miscellaneous Configuration + public String TIMEZONE; + public boolean USE_DISPLAY_NUMBERS_WITH_COMMA; + public boolean USE_UNITPRICE_WITH_COMMA; + public byte MAX_MONITORED_BUFFSTATS; + public int MAX_AP; + public int MAX_EVENT_LEVELS; + public long BLOCK_NPC_RACE_CONDT; + public long PET_LOOT_UPON_ATTACK; + public int TOT_MOB_QUEST_REQUIREMENT; + public int MOB_REACTOR_REFRESH_TIME; + public int PARTY_SEARCH_REENTRY_LIMIT; + public long NAME_CHANGE_COOLDOWN; + public long WORLD_TRANSFER_COOLDOWN=NAME_CHANGE_COOLDOWN;//Cooldown for world tranfers, default is same as name change (30 days). + public boolean INSTANT_NAME_CHANGE; + + //Dangling Items/Locks Configuration + public int ITEM_EXPIRE_TIME ; + public int KITE_EXPIRE_TIME ; + public int ITEM_MONITOR_TIME; + public int LOCK_MONITOR_TIME; + + //Map Monitor Configuration + public int ITEM_EXPIRE_CHECK; + public int ITEM_LIMIT_ON_MAP; + public int MAP_VISITED_SIZE; + public int MAP_DAMAGE_OVERTIME_INTERVAL; + + //Channel Mob Disease Monitor Configuration + public int MOB_STATUS_MONITOR_PROC; + public int MOB_STATUS_MONITOR_LIFE; + public int MOB_STATUS_AGGRO_PERSISTENCE; + public int MOB_STATUS_AGGRO_INTERVAL; + + //Some Gameplay Enhancing Configurations + //Scroll Configuration + public boolean USE_PERFECT_GM_SCROLL; + public boolean USE_PERFECT_SCROLLING; + public boolean USE_ENHANCED_CHSCROLL; + public boolean USE_ENHANCED_CRAFTING; + public boolean USE_ENHANCED_CLNSLATE; + public int SCROLL_CHANCE_RATE; + public int CHSCROLL_STAT_RATE; + public int CHSCROLL_STAT_RANGE; + + //Beginner Skills Configuration + public boolean USE_ULTRA_NIMBLE_FEET; + public boolean USE_ULTRA_RECOVERY; + public boolean USE_ULTRA_THREE_SNAILS; + + //Other Skills Configuration + public boolean USE_FULL_ARAN_SKILLSET; + public boolean USE_FAST_REUSE_HERO_WILL; + public boolean USE_ANTI_IMMUNITY_CRASH; + public boolean USE_UNDISPEL_HOLY_SHIELD; + public boolean USE_FULL_HOLY_SYMBOL; + + //Character Configuration + public boolean USE_ADD_SLOTS_BY_LEVEL; + public boolean USE_ADD_RATES_BY_LEVEL; + public boolean USE_STACK_COUPON_RATES; + public boolean USE_PERFECT_PITCH; + + //Quest Configuration + public boolean USE_QUEST_RATE; + + //Quest Points Configuration + public int QUEST_POINT_REPEATABLE_INTERVAL; + public int QUEST_POINT_REQUIREMENT; + public int QUEST_POINT_PER_QUEST_COMPLETE; + public int QUEST_POINT_PER_EVENT_CLEAR; + + //Guild Configuration + public int CREATE_GUILD_MIN_PARTNERS; + public int CREATE_GUILD_COST; + public int CHANGE_EMBLEM_COST; + public int EXPAND_GUILD_BASE_COST; + public int EXPAND_GUILD_TIER_COST; + public int EXPAND_GUILD_MAX_COST; + + //Family Configuration + public int FAMILY_REP_PER_KILL; + public int FAMILY_REP_PER_BOSS_KILL; + public int FAMILY_REP_PER_LEVELUP; + public int FAMILY_MAX_GENERATIONS; + + //Equipment Configuration + public boolean USE_EQUIPMNT_LVLUP_SLOTS; + public boolean USE_EQUIPMNT_LVLUP_POWER; + public boolean USE_EQUIPMNT_LVLUP_CASH; + public boolean USE_SPIKES_AVOID_BANISH; + public int MAX_EQUIPMNT_LVLUP_STAT_UP; + public int MAX_EQUIPMNT_STAT; + public int USE_EQUIPMNT_LVLUP; + + //Map-Chair Configuration + public boolean USE_CHAIR_EXTRAHEAL; + public byte CHAIR_EXTRA_HEAL_MULTIPLIER; + public int CHAIR_EXTRA_HEAL_MAX_DELAY; + + //Player NPC Configuration + public int PLAYERNPC_INITIAL_X; + public int PLAYERNPC_INITIAL_Y; + public int PLAYERNPC_AREA_X; + public int PLAYERNPC_AREA_Y; + public int PLAYERNPC_AREA_STEPS; + public boolean PLAYERNPC_ORGANIZE_AREA; + public boolean PLAYERNPC_AUTODEPLOY; + + //Pet Auto-Pot Configuration + public boolean USE_COMPULSORY_AUTOPOT; + public boolean USE_EQUIPS_ON_AUTOPOT; + public double PET_AUTOHP_RATIO; + public double PET_AUTOMP_RATIO; + + //Pet & Mount Configuration + public byte PET_EXHAUST_COUNT; + public byte MOUNT_EXHAUST_COUNT; + + //Pet Hunger Configuration + public boolean PETS_NEVER_HUNGRY; + public boolean GM_PETS_NEVER_HUNGRY; + + //Event Configuration + public int EVENT_MAX_GUILD_QUEUE; + public long EVENT_LOBBY_DELAY; + + //Dojo Configuration + public boolean USE_FAST_DOJO_UPGRADE; + public boolean USE_DEADLY_DOJO; + public int DOJO_ENERGY_ATK; + public int DOJO_ENERGY_DMG; + + //Wedding Configuration + public int WEDDING_RESERVATION_DELAY; + public int WEDDING_RESERVATION_TIMEOUT; + public int WEDDING_RESERVATION_INTERVAL; + public int WEDDING_BLESS_EXP; + public int WEDDING_GIFT_LIMIT; + public boolean WEDDING_BLESSER_SHOWFX; + + //Buyback Configuration + public boolean USE_BUYBACK_WITH_MESOS; + public float BUYBACK_FEE; + public float BUYBACK_LEVEL_STACK_FEE; + public int BUYBACK_MESO_MULTIPLIER; + public int BUYBACK_RETURN_MINUTES; + public int BUYBACK_COOLDOWN_MINUTES; + + // Login timeout by shavit + public long TIMEOUT_DURATION; + + //Event End Timestamp + public long EVENT_END_TIMESTAMP; + + //Debug Variables + public int DEBUG_VALUES[]; +} diff --git a/src/config/WorldConfig.java b/src/config/WorldConfig.java new file mode 100644 index 0000000000..075282bf50 --- /dev/null +++ b/src/config/WorldConfig.java @@ -0,0 +1,16 @@ +package config; + +public class WorldConfig { + public int flag = 0; + public String server_message = "Welcome!"; + public String event_message = ""; + public String why_am_i_recommended = ""; + public int channels = 1; + public int exp_rate = 1; + public int meso_rate = 1; + public int drop_rate = 1; + public int boss_drop_rate = 1; + public int quest_rate = 1; + public int travel_rate = 1; + public int fishing_rate = 1; +} diff --git a/src/config/YamlConfig.java b/src/config/YamlConfig.java new file mode 100644 index 0000000000..0af88cad37 --- /dev/null +++ b/src/config/YamlConfig.java @@ -0,0 +1,30 @@ +package config; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.List; + + +public class YamlConfig { + + public static final YamlConfig config = fromFile("config.yaml"); + public List worlds; + public ServerConfig server; + + public static YamlConfig fromFile(String filename) { + ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); + try { + return mapper.readValue(new File(filename), YamlConfig.class); + } catch (FileNotFoundException e) { + String message = "Could not read config file " + filename + ": " + e.getMessage(); + throw new RuntimeException(message); + } catch (IOException e) { + String message = "Could not successfully parse config file " + filename + ": " + e.getMessage(); + throw new RuntimeException(message); + } + } +} diff --git a/src/constants/GameConstants.java b/src/constants/GameConstants.java index a869edb18b..e7b4017f96 100644 --- a/src/constants/GameConstants.java +++ b/src/constants/GameConstants.java @@ -6,6 +6,7 @@ import java.util.List; import java.util.HashMap; import java.util.Map; import client.MapleJob; +import config.YamlConfig; import constants.skills.Aran; import java.io.File; import java.text.DecimalFormat; @@ -40,7 +41,7 @@ public class GameConstants { private static final int[] jobUpgradeSpUp = {0, 1, 2, 3, 6}; private final static Map jobNames = new HashMap<>(); private final static NumberFormat nfFormatter = new DecimalFormat("#,###,###,###"); - private final static NumberFormat nfParser = NumberFormat.getInstance(ServerConstants.USE_UNITPRICE_WITH_COMMA ? Locale.FRANCE : Locale.UK); + private final static NumberFormat nfParser = NumberFormat.getInstance(YamlConfig.config.server.USE_UNITPRICE_WITH_COMMA ? Locale.FRANCE : Locale.UK); public static final MapleDisease[] CPQ_DISEASES = {MapleDisease.SLOW, MapleDisease.SEDUCE, MapleDisease.STUN, MapleDisease.POISON, MapleDisease.SEAL, MapleDisease.DARKNESS, MapleDisease.WEAKEN, MapleDisease.CURSE}; @@ -666,7 +667,7 @@ public class GameConstants { } public synchronized static String numberWithCommas(int i) { - if(!ServerConstants.USE_DISPLAY_NUMBERS_WITH_COMMA) { + if(!YamlConfig.config.server.USE_DISPLAY_NUMBERS_WITH_COMMA) { return nfFormatter.format(i); // will display number on whatever locale is currently assigned on NumberFormat } else { return NumberFormat.getNumberInstance(Locale.UK).format(i); diff --git a/src/constants/ItemConstants.java b/src/constants/ItemConstants.java index c3ff38e458..1ae3d13507 100644 --- a/src/constants/ItemConstants.java +++ b/src/constants/ItemConstants.java @@ -22,6 +22,8 @@ package constants; import client.inventory.MapleInventoryType; +import config.YamlConfig; + import java.util.HashSet; import java.util.Set; import java.util.HashMap; @@ -107,7 +109,7 @@ public final class ItemConstants { } public static boolean isExpirablePet(int itemId) { - return ServerConstants.USE_ERASE_PET_ON_EXPIRATION || itemId == 5000054; + return YamlConfig.config.server.USE_ERASE_PET_ON_EXPIRATION || itemId == 5000054; } public static boolean isPermanentItem(int itemId) { diff --git a/src/constants/ServerConstants.java b/src/constants/ServerConstants.java index 4a29d301c7..8e39808de2 100644 --- a/src/constants/ServerConstants.java +++ b/src/constants/ServerConstants.java @@ -1,347 +1,15 @@ package constants; -import java.io.FileInputStream; -import java.util.Properties; - public class ServerConstants { - //Thread Tracker Configuration - public static final boolean USE_THREAD_TRACKER = true; //[SEVERE] This deadlock auditing thing will bloat the memory as fast as the time frame one takes to lose track of a raindrop on a tempesting day. Only for debugging purposes. - - //Database Configuration - public static String DB_URL = ""; - public static String DB_USER = ""; - public static String DB_PASS = ""; - public static final boolean DB_CONNECTION_POOL = true; //Installs a connection pool to hub DB connections. Set false to default. - //Server Version public static short VERSION = 83; - //Login Configuration - public static final int WLDLIST_SIZE = 21; //Max possible worlds on the server. - public static final int CHANNEL_SIZE = 20; //Max possible channels per world (which is 20, based on the channel list on login phase). - public static final int CHANNEL_LOAD = 100; //Max players per channel (limit actually used to calculate the World server capacity). - public static final int CHANNEL_LOCKS = 20; //Total number of structure management locks each channel has. - - public static final long RESPAWN_INTERVAL = 10 * 1000; //10 seconds, 10000. - public static final long PURGING_INTERVAL = 5 * 60 * 1000; - public static final long RANKING_INTERVAL = 60 * 60 * 1000; //60 minutes, 3600000. - public static final long COUPON_INTERVAL = 60 * 60 * 1000; //60 minutes, 3600000. - public static final long UPDATE_INTERVAL = 777; //Dictates the frequency on which the "centralized server time" is updated. - - public static final boolean ENABLE_PIC = false; //Pick true/false to enable or disable Pic. Delete character requires PIC available. - public static final boolean ENABLE_PIN = false; //Pick true/false to enable or disable Pin. - - public static final int BYPASS_PIC_EXPIRATION = 20; //Enables PIC bypass, which will remain active for that account by that client machine for N minutes. Set 0 to disable. - public static final int BYPASS_PIN_EXPIRATION = 15; //Enables PIN bypass, which will remain active for that account by that client machine for N minutes. Set 0 to disable. - - public static final boolean AUTOMATIC_REGISTER = true; //Automatically register players when they login with a nonexistent username. - public static final boolean BCRYPT_MIGRATION = true; //Performs a migration from old SHA-1 and SHA-512 password to bcrypt. - public static final boolean COLLECTIVE_CHARSLOT = false; //Available character slots are contabilized globally rather than per world server. - public static final boolean DETERRED_MULTICLIENT = false; //Enables detection of multi-client and suspicious remote IP on the login system. - - //Besides blocking logging in with several client sessions on the same machine, this also blocks suspicious login attempts for players that tries to login on an account using several diferent remote addresses. - - //Multiclient Coordinator Configuration - public static final int MAX_ALLOWED_ACCOUNT_HWID = 4; //Allows up to N concurrent HWID's for an account. HWID's remains linked to an account longer the more times it's used to login. - public static final int MAX_ACCOUNT_LOGIN_ATTEMPT = 15; //After N tries on an account, login on that account gets disabled for a short period. - public static final int LOGIN_ATTEMPT_DURATION = 120; //Period in seconds the login attempt remains registered on the system. - - //Ip Configuration - public static String HOST; - public static boolean LOCALSERVER; - - //Other Configuration - public static final boolean JAVA_8 = getJavaVersion() >= 8; - public static boolean SHUTDOWNHOOK; - - //Server Flags - public static final boolean USE_CUSTOM_KEYSET = true; //Enables auto-setup of the HeavenMS's custom keybindings when creating characters. - public static final boolean USE_DEBUG = false; //Will enable some text prints on the client, oriented for debugging purposes. - public static final boolean USE_DEBUG_SHOW_INFO_EQPEXP = false; //Prints on the cmd all equip exp gain info. - public static boolean USE_DEBUG_SHOW_RCVD_PACKET = false; //Prints on the cmd all received packet ids. - public static boolean USE_DEBUG_SHOW_RCVD_MVLIFE = false; //Prints on the cmd all received move life content. - public static final boolean USE_DEBUG_SHOW_PACKET = false; - public static boolean USE_SUPPLY_RATE_COUPONS = true; //Allows rate coupons to be sold through the Cash Shop. - public static final boolean USE_IP_VALIDATION = true; //Enables IP checking when logging in. - - public static final boolean USE_MAXRANGE = true; //Will send and receive packets from all events on a map, rather than those of only view range. - public static final boolean USE_MAXRANGE_ECHO_OF_HERO = true; - public static final boolean USE_MTS = false; - public static final boolean USE_CPQ = true; //Renders the CPQ available or not. - public static final boolean USE_AUTOHIDE_GM = false; //When enabled, GMs are automatically hidden when joining. Thanks to Steven Deblois (steven1152). - public static final boolean USE_BUYBACK_SYSTEM = true; //Enables the HeavenMS-builtin buyback system, to be used by dead players when clicking the MTS button. - public static final boolean USE_FIXED_RATIO_HPMP_UPDATE = true; //Enables the HeavenMS-builtin HPMP update based on the current pool to max pool ratio. - public static final boolean USE_FAMILY_SYSTEM = true; - public static final boolean USE_DUEY = true; - public static final boolean USE_RANDOMIZE_HPMP_GAIN = true; //Enables randomizing on MaxHP/MaxMP gains and INT accounting for the MaxMP gain on level up. - public static final boolean USE_STORAGE_ITEM_SORT = true; //Enables storage "Arrange Items" feature. - public static final boolean USE_ITEM_SORT = true; //Enables inventory "Item Sort/Merge" feature. - public static final boolean USE_ITEM_SORT_BY_NAME = false; //Item sorting based on name rather than id. - public static final boolean USE_PARTY_FOR_STARTERS = true; //Players level 10 or below can create/invite other players on the given level range. - public static final boolean USE_AUTOASSIGN_STARTERS_AP = false; //Beginners level 10 or below have their AP autoassigned (they can't choose to levelup a stat). Set true ONLY if the localhost doesn't support AP assigning for beginners level 10 or below. - public static final boolean USE_AUTOASSIGN_SECONDARY_CAP = true;//Prevents AP autoassign from spending on secondary stats after the player class' cap (defined on the autoassign handler) has been reached. - public static final boolean USE_STARTING_AP_4 = true; //Use early-GMS 4/4/4/4 starting stats. To overcome AP shortage, this gives 4AP/5AP at 1st/2nd job advancements. - public static final boolean USE_AUTOBAN = false; //Commands the server to detect infractors automatically. - public static final boolean USE_AUTOBAN_LOG = true; //Log autoban related messages. Still logs even with USE_AUTOBAN disabled. - public static final boolean USE_AUTOSAVE = true; //Enables server autosaving feature (saves characters to DB each 1 hour). - public static final boolean USE_SERVER_AUTOASSIGNER = true; //HeavenMS-builtin autoassigner, uses algorithm based on distributing AP accordingly with required secondary stat on equipments. - public static final boolean USE_REFRESH_RANK_MOVE = true; - public static final boolean USE_ENFORCE_ADMIN_ACCOUNT = false; //Forces accounts having GM characters to be treated as a "GM account" by the client (localhost). Some of the GM account perks is the ability to FLY, but unable to TRADE. - public static final boolean USE_ENFORCE_NOVICE_EXPRATE = false; //Hardsets experience rate 1x for beginners level 10 or under. Ideal for roaming on novice areas without caring too much about losing some stats. - public static final boolean USE_ENFORCE_HPMP_SWAP = false; //Forces players to reuse stats (via AP Resetting) located on HP/MP pool only inside the HP/MP stats. - public static final boolean USE_ENFORCE_MOB_LEVEL_RANGE = true; //Players N levels below the killed mob will gain no experience from defeating it. - public static final boolean USE_ENFORCE_JOB_LEVEL_RANGE = false;//Caps the player level on the minimum required to advance their current jobs. - public static final boolean USE_ENFORCE_JOB_SP_RANGE = false; //Caps the player SP level on the total obtainable by their current jobs. After changing jobs, missing SP will be retrieved. - public static final boolean USE_ENFORCE_ITEM_SUGGESTION = false;//Forces the Owl of Minerva and the Cash Shop to always display the defined item array instead of those featured by the players. - public static final boolean USE_ENFORCE_UNMERCHABLE_CASH = true;//Forces players to not sell CASH items via merchants, drops of it disappears. - public static final boolean USE_ENFORCE_UNMERCHABLE_PET = true; //Forces players to not sell pets via merchants, drops of it disappears. (since non-named pets gets dirty name and other possible DB-related issues) - public static final boolean USE_ENFORCE_MERCHANT_SAVE = true; //Forces automatic DB save on merchant owners, at every item movement on shop. - public static final boolean USE_ENFORCE_MDOOR_POSITION = false; //Forces mystic door to be spawned near spawnpoints. - public static final boolean USE_SPAWN_CLEAN_MDOOR = false; //Makes mystic doors to be spawned without deploy animation. This clears disconnecting issues that may happen when trying to cancel doors a couple seconds after deployment. - public static final boolean USE_SPAWN_LOOT_ON_ANIMATION = false;//Makes loot appear some time after the mob has been killed (following the mob death animation, instead of instantly). - public static final boolean USE_SPAWN_RELEVANT_LOOT = true; //Forces to only spawn loots that are collectable by the player or any of their party members. - public static final boolean USE_ERASE_PERMIT_ON_OPENSHOP = true;//Forces "shop permit" item to be consumed when player deploy his/her player shop. - public static final boolean USE_ERASE_UNTRADEABLE_DROP = true; //Forces flagged untradeable items to disappear when dropped. - public static final boolean USE_ERASE_PET_ON_EXPIRATION = false;//Forces pets to be removed from inventory when expire time comes, rather than converting it to a doll. - public static final boolean USE_BUFF_MOST_SIGNIFICANT = true; //When applying buffs, the player will stick with the highest stat boost among the listed, rather than overwriting stats. - public static final boolean USE_BUFF_EVERLASTING = false; //Every applied buff on players holds expiration time so high it'd be considered permanent. Suggestion thanks to Vcoc. - public static final boolean USE_MULTIPLE_SAME_EQUIP_DROP = true;//Enables multiple drops by mobs of the same equipment, number of possible drops based on the quantities provided at the drop data. - public static final boolean USE_BANISHABLE_TOWN_SCROLL = true; //Enables town scrolls to act as if it's a "player banish", rendering the antibanish scroll effect available. - public static final boolean USE_ENABLE_FULL_RESPAWN = true; //At respawn task, always respawn missing mobs when they're available. Spawn count doesn't depend on how many players are currently there. - public static final boolean USE_ENABLE_CHAT_LOG = false; //Write in-game chat to log - public static final boolean USE_REBIRTH_SYSTEM = false; //Flag to enable/disable rebirth system - public static final boolean USE_MAP_OWNERSHIP_SYSTEM = true; //Flag to enable/disable map ownership system - public static final boolean USE_FISHING_SYSTEM = true; //Flag to enable/disable custom fishing system - public static final boolean USE_NPCS_SCRIPTABLE = true; //Flag to enable/disable serverside predefined script NPCs. - - //Events/PQs Configuration - public static final boolean USE_OLD_GMS_STYLED_PQ_NPCS = true; //Enables PQ NPCs with similar behaviour to old GMS style, that skips info about the PQs and immediately tries to register the party in. - public static final boolean USE_ENABLE_SOLO_EXPEDITIONS = true; //Enables start expeditions with any number of players. This will also bypass all the Zakum prequest. - public static final boolean USE_ENABLE_DAILY_EXPEDITIONS = false;//Enables daily entry limitations in expeditions. - public static final boolean USE_ENABLE_RECALL_EVENT = false; //Enables a disconnected player to reaccess the last event instance they were in before logging out. Recall only works if the event isn't cleared or disposed yet. Suggestion thanks to Alisson (Goukken). - - //Announcement Configuration - public static final boolean USE_ANNOUNCE_SHOPITEMSOLD = false; //Automatic message sent to owner when an item from the Player Shop or Hired Merchant is sold. - public static final boolean USE_ANNOUNCE_CHANGEJOB = false; //Automatic message sent to acquantainces when changing jobs. - - //Cash Shop Configuration - public static final boolean USE_JOINT_CASHSHOP_INVENTORY = true;//Enables usage of a same cash shop inventory for explorers, cygnus and legends. Items from exclusive cash shop inventories won't show up on the shared inventory, though. - public static final boolean USE_CLEAR_OUTDATED_COUPONS = true; //Enables deletion of older code coupon registry from the DB, freeing so-long irrelevant data. - public static final boolean ALLOW_CASHSHOP_NAME_CHANGE = true; //Allows players to buy name changes in the cash shop. - public static final boolean ALLOW_CASHSHOP_WORLD_TRANSFER =true;//Allows players to buy world transfers in the cash shop. - - //Maker Configuration - public static final boolean USE_MAKER_PERMISSIVE_ATKUP = true; //Allows players to use attack-based strengthening gems on non-weapon items. - public static final boolean USE_MAKER_FEE_HEURISTICS = true; //Apply compiled values for stimulants and reagents into the Maker fee calculations (max error revolves around 50k mesos). Set false to use basic constant values instead (results are never higher than requested by the client-side). - - //Custom Configuration - public static final boolean USE_ENABLE_CUSTOM_NPC_SCRIPT = true;//Enables usage of custom HeavenMS NPC scripts (Agent E, Coco, etc). Will not disable Abdula (it's actually useful for the gameplay) or quests. - public static final boolean USE_STARTER_MERGE = false; //Allows any players to use the Equipment Merge custom mechanic (as opposed to the high-level, Maker lv3 requisites). - - //Commands Configuration - public static final boolean BLOCK_GENERATE_CASH_ITEM = false; //Prevents creation of cash items with the item/drop command. - public static final boolean USE_WHOLE_SERVER_RANKING = false; //Enables a ranking pool made from every character registered on the server for the "ranks" command, instead of separated by worlds. - - //Server Rates And Experience - public static final int EXP_RATE = 10; //NOTE: World-specific rates within "world.ini" OVERRIDES the default rates from here. - public static final int MESO_RATE = 10; - public static final int DROP_RATE = 10; - public static final int BOSS_DROP_RATE = 10; //NOTE: Boss drop rate OVERRIDES common drop rate, for bosses-only. - public static final int QUEST_RATE = 5; //Multiplier for Exp & Meso gains when completing a quest. Only available when USE_QUEST_RATE is true. Stacks with server Exp & Meso rates. - public static final int FISHING_RATE = 10; //Multiplier for success likelihood on meso thrown during fishing. - public static final int TRAVEL_RATE = 10; //Means of transportation rides/departs using 1/N of the default time. - - public static final double EQUIP_EXP_RATE = 1.0; //Rate for equipment exp gain, grows linearly. Set 1.0 for default (about 100~200 same-level range mobs killed to pass equip from level 1 to 2). - public static final double PQ_BONUS_EXP_RATE = 0.5; //Rate for the PQ exp reward. - - public static final byte EXP_SPLIT_LEVEL_INTERVAL = 5; //Non-contributing players must be within N level between the mob to receive EXP. - public static final byte EXP_SPLIT_LEECH_INTERVAL = 5; //Non-contributing players must be within N level between any contributing party member to receive EXP. - public static final float EXP_SPLIT_MVP_MOD = 0.2f; - public static final float EXP_SPLIT_COMMON_MOD = 0.8f; - public static final float PARTY_BONUS_EXP_RATE = 1.0f; //Rate for the party exp bonus reward. - - //Miscellaneous Configuration - public static String TIMEZONE = "GMT-3"; - public static boolean USE_DISPLAY_NUMBERS_WITH_COMMA = true; //Enforce comma on displayed strings (use this when USE_UNITPRICE_WITH_COMMA is active and you still want to display comma-separated values). - public static boolean USE_UNITPRICE_WITH_COMMA = true; //Set this accordingly with the layout of the unitPrices on Item.wz XML's, whether it's using commas or dots to represent fractions. - public static final byte MAX_MONITORED_BUFFSTATS = 5; //Limits accounting for "dormant" buff effects, that should take place when stronger stat buffs expires. - public static final int MAX_AP = 32767; //Max AP allotted on the auto-assigner. - public static final int MAX_EVENT_LEVELS = 8; //Event has different levels of rewarding system. - public static final long BLOCK_NPC_RACE_CONDT = (long)(0.5 * 1000); //Time the player client must wait before reopening a conversation with an NPC. - public static final long PET_LOOT_UPON_ATTACK = (long)(0.7 * 1000); //Time the pet must wait before trying to pick items up. - public static final int TOT_MOB_QUEST_REQUIREMENT = 77; //Overwrites old 999-mobs requirement for the ToT questline with new requirement value, set 0 for default. - public static final int MOB_REACTOR_REFRESH_TIME = 30 * 1000; //Overwrites refresh time for those reactors oriented to inflict damage to bosses (Ice Queen, Riche), set 0 for default. - public static final int PARTY_SEARCH_REENTRY_LIMIT = 10; //Max amount of times a party leader is allowed to persist on the Party Search before entry expiration (thus needing to manually restart the Party Search to be able to search for members). - public static final int NAME_CHANGE_COOLDOWN = 30*24*60*60*1000; //Cooldown for name changes, default (GMS) is 30 days. - public static final int WORLD_TRANSFER_COOLDOWN=NAME_CHANGE_COOLDOWN;//Cooldown for world tranfers, default is same as name change (30 days). - public static final boolean INSTANT_NAME_CHANGE = false; //Whether or not to wait for server restart to apply name changes. Does on reconnect otherwise (requires queries on every login). - - //Dangling Items/Locks Configuration - public static final int ITEM_EXPIRE_TIME = 3 * 60 * 1000; //Time before items start disappearing. Recommended to be set up to 3 minutes. - public static final int KITE_EXPIRE_TIME = 60 * 60 * 1000; //Time before kites (cash item) disappears. - public static final int ITEM_MONITOR_TIME = 5 * 60 * 1000; //Interval between item monitoring tasks on maps, which checks for dangling (null) item objects on the map item history. - public static final int LOCK_MONITOR_TIME = 30 * 1000; //Waiting time for a lock to be released. If it reaches timeout, a critical server deadlock has made present. - - //Map Monitor Configuration - public static final int ITEM_EXPIRE_CHECK = 10 * 1000; //Interval between item expiring tasks on maps, which checks and makes disappear expired items. - public static final int ITEM_LIMIT_ON_MAP = 200; //Max number of items allowed on a map. - public static final int MAP_VISITED_SIZE = 5; //Max length for last mapids visited by a player. This is used to recover and update drops on these maps accordingly with player actions. - public static final int MAP_DAMAGE_OVERTIME_INTERVAL = 5000;//Interval in milliseconds between map environment damage (e.g. El Nath and Aqua Road surrondings). - - //Channel Mob Disease Monitor Configuration - public static final int MOB_STATUS_MONITOR_PROC = 200; //Frequency in milliseconds between each proc on the mob disease monitor schedule. - public static final int MOB_STATUS_MONITOR_LIFE = 84; //Idle proc count the mob disease monitor is allowed to be there before closing it due to inactivity. - public static final int MOB_STATUS_AGGRO_PERSISTENCE = 2; //Idle proc count on aggro update for a mob to keep following the current controller, given him/her is the leading damage dealer. - public static final int MOB_STATUS_AGGRO_INTERVAL = 5000; //Interval in milliseconds between aggro logistics update. - - //Some Gameplay Enhancing Configurations - //Scroll Configuration - public static final boolean USE_PERFECT_GM_SCROLL = true; //Scrolls from GMs never uses up slots nor fails. - public static final boolean USE_PERFECT_SCROLLING = true; //Scrolls doesn't use slots upon failure. - public static final boolean USE_ENHANCED_CHSCROLL = true; //Equips even more powerful with chaos upgrade. - public static final boolean USE_ENHANCED_CRAFTING = true; //Apply chaos scroll on every equip crafted. - public static final boolean USE_ENHANCED_CLNSLATE = true; //Clean slates can be applied to recover successfully used slots as well. - public static final int SCROLL_CHANCE_RATE = 10; //Number of rolls for success on a scroll, set 1 for default. - public static final int CHSCROLL_STAT_RATE = 3; //Number of rolls of stat upgrade on a successfully applied chaos scroll, set 1 for default. - public static final int CHSCROLL_STAT_RANGE = 6; //Stat upgrade range (-N, N) on chaos scrolls. - - //Beginner Skills Configuration - public static final boolean USE_ULTRA_NIMBLE_FEET = true; //Massive speed & jump upgrade. - public static final boolean USE_ULTRA_RECOVERY = true; //Massive recovery amounts overtime. - public static final boolean USE_ULTRA_THREE_SNAILS = true; //Massive damage on shell toss. - - //Other Skills Configuration - public static final boolean USE_FULL_ARAN_SKILLSET = false; //Enables starter availability to all Aran job skills. Suggestion thanks to Masterrulax. - public static final boolean USE_FAST_REUSE_HERO_WILL = true;//Greatly reduce cooldown on Hero's Will. - public static final boolean USE_ANTI_IMMUNITY_CRASH = true; //Crash skills additionally removes the mob's invincibility buffs. Suggestion thanks to Celestial. - public static final boolean USE_UNDISPEL_HOLY_SHIELD = true;//Holy shield buff also prevents players from suffering dispel from mobs. - public static final boolean USE_FULL_HOLY_SYMBOL = true; //Holy symbol doesn't require EXP sharers to work in full. - - //Character Configuration - public static final boolean USE_ADD_SLOTS_BY_LEVEL = true; //Slots are added each 20 levels. - public static final boolean USE_ADD_RATES_BY_LEVEL = true; //Rates are added each 20 levels. - public static final boolean USE_STACK_COUPON_RATES = false; //Multiple coupons effects builds up together. - public static final boolean USE_PERFECT_PITCH = true; //For lvl 30 or above, each lvlup grants player 1 perfect pitch. - - //Quest Configuration - public static final boolean USE_QUEST_RATE = false; //Exp/Meso gained by quests uses fixed server exp/meso rate times quest rate as multiplier, instead of player rates. - - //Quest Points Configuration - public static final int QUEST_POINT_REPEATABLE_INTERVAL = 24;//Minimum interval between repeatable quest completions for quest points to be awarded. - public static final int QUEST_POINT_REQUIREMENT = 16; //Exchange factor between N quest points to +1 fame, set 0 to disable the entire quest point mechanism. - public static final int QUEST_POINT_PER_QUEST_COMPLETE = 4; //Each completed quest awards N quest points, set 0 to disable. - public static final int QUEST_POINT_PER_EVENT_CLEAR = 1; //Each completed event instance awards N quest points, set 0 to disable. - - //Guild Configuration - public static final int CREATE_GUILD_MIN_PARTNERS = 6; //Minimum number of members on Guild Headquarters to establish a new guild. - public static final int CREATE_GUILD_COST = 1500000; - public static final int CHANGE_EMBLEM_COST = 5000000; - public static final int EXPAND_GUILD_BASE_COST = 500000; - public static final int EXPAND_GUILD_TIER_COST = 1000000; - public static final int EXPAND_GUILD_MAX_COST = 5000000; - - //Family Configuration - public static final int FAMILY_REP_PER_KILL = 4; //Amount of rep gained per monster kill. - public static final int FAMILY_REP_PER_BOSS_KILL = 20; //Amount of rep gained per boss kill. - public static final int FAMILY_REP_PER_LEVELUP = 200; //Amount of rep gained upon leveling up. - public static final int FAMILY_MAX_GENERATIONS = 1000; //Maximum depth of family tree. (Distance from leader to farthest junior) - - //Equipment Configuration - public static final boolean USE_EQUIPMNT_LVLUP_SLOTS = true;//Equips can upgrade slots at level up. - public static final boolean USE_EQUIPMNT_LVLUP_POWER = true;//Enable more powerful stat upgrades at equip level up. - public static final boolean USE_EQUIPMNT_LVLUP_CASH = true; //Enable equip leveling up on cash equipments as well. - public static final boolean USE_SPIKES_AVOID_BANISH = true; //Shoes equipped with spikes prevents mobs from banishing wearer. - public static final int MAX_EQUIPMNT_LVLUP_STAT_UP = 10000; //Max stat upgrade an equipment can have on a levelup. - public static final int MAX_EQUIPMNT_STAT = 32767; //Max stat on an equipment by leveling up. - public static final int USE_EQUIPMNT_LVLUP = 7; //All equips lvlup at max level of N, set 1 to disable. - - //Map-Chair Configuration - public static final boolean USE_CHAIR_EXTRAHEAL = true; //Enable map chairs to further recover player's HP and MP (player must have the Chair Mastery skill). - public static final byte CHAIR_EXTRA_HEAL_MULTIPLIER = 10; //Due to only being able to be send up-to-255 heal values, values being actually updated is the one displayed times this. - public static final int CHAIR_EXTRA_HEAL_MAX_DELAY = 21; //Players are expected to recover fully after using this skill for N seconds. - - //Player NPC Configuration - public static final int PLAYERNPC_INITIAL_X = 262; //Map frame width for putting PlayerNPCs. - public static final int PLAYERNPC_INITIAL_Y = 262; //Map frame height for putting PlayerNPCs. - public static final int PLAYERNPC_AREA_X = 320; //Initial width gap between PlayerNPCs. - public static final int PLAYERNPC_AREA_Y = 160; //Initial height gap between PlayerNPCs. - public static final int PLAYERNPC_AREA_STEPS = 4; //Max number of times gap is shortened to comport PlayerNPCs. - public static final boolean PLAYERNPC_ORGANIZE_AREA = true; //Automatically rearranges PlayerNPCs on the map if there is no space set the new NPC. Current distance gap between NPCs is decreased to solve this issue. - public static final boolean PLAYERNPC_AUTODEPLOY = true; //Makes PlayerNPC automatically deployed on the Hall of Fame at the instant one reaches max level. If false, eligible players must talk to 1st job instructor to deploy a NPC. - - //Pet Auto-Pot Configuration - public static final boolean USE_COMPULSORY_AUTOPOT = true; //Pets will consume as many potions as needed to fulfill the AUTOHP/MP ratio threshold. - public static final boolean USE_EQUIPS_ON_AUTOPOT = true; //Player MaxHP and MaxMP check values on autopot handler will be updated by the HP/MP bonuses on equipped items. - public static final double PET_AUTOHP_RATIO = 0.99; //Will automatically consume potions until given ratio of the MaxHP/MaxMP is reached. - public static final double PET_AUTOMP_RATIO = 0.99; - - //Pet & Mount Configuration - public static final byte PET_EXHAUST_COUNT = 3; //Number of proc counts (1 per minute) on the exhaust schedule for fullness. - public static final byte MOUNT_EXHAUST_COUNT = 1; //Number of proc counts (1 per minute) on the exhaust schedule for tiredness. - - //Pet Hunger Configuration - public static final boolean PETS_NEVER_HUNGRY = false; //If true, pets and mounts will never grow hungry. - public static final boolean GM_PETS_NEVER_HUNGRY = true; //If true, pets and mounts owned by GMs will never grow hungry. - - //Event Configuration - public static final int EVENT_MAX_GUILD_QUEUE = 10; //Max number of guilds in queue for GPQ. - public static final long EVENT_LOBBY_DELAY = 10; //Cooldown duration in seconds before reopening an event lobby. - - //Dojo Configuration - public static final boolean USE_FAST_DOJO_UPGRADE = true; //Reduced Dojo training points amount required for a belt upgrade. - public static final boolean USE_DEADLY_DOJO = false; //Should bosses really use 1HP,1MP attacks in dojo? - public static final int DOJO_ENERGY_ATK = 100; //Dojo energy gain when deal attack - public static final int DOJO_ENERGY_DMG = 20; //Dojo energy gain when recv attack - - //Wedding Configuration - public static final int WEDDING_RESERVATION_DELAY = 3; //Minimum idle slots before processing a wedding reservation. - public static final int WEDDING_RESERVATION_TIMEOUT = 10; //Limit time in minutes for the couple to show up before cancelling the wedding reservation. - public static final int WEDDING_RESERVATION_INTERVAL = 60; //Time between wedding starts in minutes. - public static final int WEDDING_BLESS_EXP = 30000; //Exp gained per bless count. - public static final int WEDDING_GIFT_LIMIT = 1; //Max number of gifts per person to same wishlist on marriage instances. - public static final boolean WEDDING_BLESSER_SHOWFX = true; //Pops bubble sprite effect on players blessing the couple. Setting this false shows the blessing effect on the couple instead. - - //Buyback Configuration - public static final boolean USE_BUYBACK_WITH_MESOS = true; //Enables usage of either mesos or NX for the buyback fee. - public static final float BUYBACK_FEE = 77.70f; //Sets the base amount needed to buyback (level 30 or under will use the base value). - public static final float BUYBACK_LEVEL_STACK_FEE = 85.47f; //Sets the level-stacking portion of the amount needed to buyback (fee will sum up linearly until level 120, when it reaches the peak). - public static final int BUYBACK_MESO_MULTIPLIER = 1000; //Sets a multiplier for the fee when using meso as the charge unit. - public static final int BUYBACK_RETURN_MINUTES = 1; //Sets the maximum amount of time the player can wait before decide to buyback. - public static final int BUYBACK_COOLDOWN_MINUTES = 7; //Sets the time the player must wait before using buyback again. - - // Login timeout by shavit - public static long TIMEOUT_DURATION = 3600000L; // Kicks clients who don't send any packet to the game server in due time (in millisseconds). - - //Event End Timestamp - public static final long EVENT_END_TIMESTAMP = 1428897600000L; + //Java Configuration + public static final boolean JAVA_8 = getJavaVersion() >= 8; //Max amount of times a party leader is allowed to persist on the Party Search before entry expiration (thus needing to manually restart the Party Search to be able to search for members). //Debug Variables public static int DEBUG_VALUES[] = new int[10]; // Field designed for packet testing purposes - - //Properties - static { - Properties p = new Properties(); - try { - p.load(new FileInputStream("configuration.ini")); - //Server Host - ServerConstants.HOST = p.getProperty("HOST"); - ServerConstants.LOCALSERVER = ServerConstants.HOST.startsWith("127.") || ServerConstants.HOST.startsWith("localhost"); - - //Sql Database - ServerConstants.DB_URL = p.getProperty("URL"); - ServerConstants.DB_USER = p.getProperty("DB_USER"); - ServerConstants.DB_PASS = p.getProperty("DB_PASS"); - - // shutdownhook - ServerConstants.SHUTDOWNHOOK = p.getProperty("SHUTDOWNHOOK").equalsIgnoreCase("true"); - - } catch (Exception e) { - e.printStackTrace(); - System.out.println("Failed to load configuration.ini."); - System.exit(0); - } - } // https://github.com/openstreetmap/josm/blob/a3a6e8a6b657cf4c5b4c64ea14d6e87be6280d65/src/org/openstreetmap/josm/tools/Utils.java#L1566-L1585 /** * Returns the Java version as an int value. diff --git a/src/net/MapleServerHandler.java b/src/net/MapleServerHandler.java index 6c9e4c2021..5b16e0ae02 100644 --- a/src/net/MapleServerHandler.java +++ b/src/net/MapleServerHandler.java @@ -28,6 +28,8 @@ import java.util.HashSet; import java.util.Calendar; import java.util.concurrent.atomic.AtomicLong; +import config.ServerConfig; +import config.YamlConfig; import org.apache.mina.core.service.IoHandlerAdapter; import org.apache.mina.core.session.IdleStatus; import org.apache.mina.core.session.IoSession; @@ -188,7 +190,7 @@ public class MapleServerHandler extends IoHandlerAdapter { short packetId = slea.readShort(); MapleClient client = (MapleClient) session.getAttribute(MapleClient.CLIENT_KEY); - if(ServerConstants.USE_DEBUG_SHOW_RCVD_PACKET && !ignoredDebugRecvPackets.contains(packetId)) System.out.println("Received packet id " + packetId); + if(YamlConfig.config.server.USE_DEBUG_SHOW_RCVD_PACKET && !ignoredDebugRecvPackets.contains(packetId)) System.out.println("Received packet id " + packetId); final MaplePacketHandler packetHandler = processor.getHandler(packetId); if (packetHandler != null && packetHandler.validateState(client)) { try { diff --git a/src/net/mina/MaplePacketDecoder.java b/src/net/mina/MaplePacketDecoder.java index 0acffa2881..b08116fc23 100644 --- a/src/net/mina/MaplePacketDecoder.java +++ b/src/net/mina/MaplePacketDecoder.java @@ -21,6 +21,7 @@ */ package net.mina; +import config.YamlConfig; import constants.ServerConstants; import client.MapleClient; import constants.OpcodeConstants; @@ -75,7 +76,7 @@ public class MaplePacketDecoder extends CumulativeProtocolDecoder { rcvdCrypto.crypt(decryptedPacket); MapleCustomEncryption.decryptData(decryptedPacket); out.write(decryptedPacket); - if (ServerConstants.USE_DEBUG_SHOW_PACKET){ // packet traffic log: Atoot's idea, applied using auto-identation thanks to lrenex + if (YamlConfig.config.server.USE_DEBUG_SHOW_PACKET){ // packet traffic log: Atoot's idea, applied using auto-identation thanks to lrenex int packetLen = decryptedPacket.length; int pHeader = readFirstShort(decryptedPacket); String pHeaderStr = Integer.toHexString(pHeader).toUpperCase(); diff --git a/src/net/mina/MaplePacketEncoder.java b/src/net/mina/MaplePacketEncoder.java index cad289e166..8aafcf2e60 100644 --- a/src/net/mina/MaplePacketEncoder.java +++ b/src/net/mina/MaplePacketEncoder.java @@ -21,6 +21,7 @@ along with this program. If not, see . */ package net.mina; +import config.YamlConfig; import constants.ServerConstants; import client.MapleClient; import constants.OpcodeConstants; @@ -46,7 +47,7 @@ public class MaplePacketEncoder implements ProtocolEncoder { try { final MapleAESOFB send_crypto = client.getSendCrypto(); final byte[] input = (byte[]) message; - if (ServerConstants.USE_DEBUG_SHOW_PACKET) { + if (YamlConfig.config.server.USE_DEBUG_SHOW_PACKET) { int packetLen = input.length; int pHeader = readFirstShort(input); String pHeaderStr = Integer.toHexString(pHeader).toUpperCase(); diff --git a/src/net/server/Server.java b/src/net/server/Server.java index a370db5cc8..25d4c77cc3 100644 --- a/src/net/server/Server.java +++ b/src/net/server/Server.java @@ -46,6 +46,7 @@ import java.util.concurrent.locks.ReentrantReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock; import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; +import config.YamlConfig; import net.server.audit.ThreadTracker; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.MonitoredReentrantReadWriteLock; @@ -170,7 +171,7 @@ public class Server { } public void updateCurrentTime() { - serverCurrentTime = currentTime.addAndGet(ServerConstants.UPDATE_INTERVAL); + serverCurrentTime = currentTime.addAndGet(YamlConfig.config.server.UPDATE_INTERVAL); } public long forceUpdateCurrentTime() { @@ -342,18 +343,13 @@ public class Server { if(worldChannels == null) return -3; int channelid = worldChannels.size(); - if(channelid >= ServerConstants.CHANNEL_SIZE) return -2; - - Properties p = loadWorldINI(); - if(p == null) { - return -1; - } + if(channelid >= YamlConfig.config.server.CHANNEL_SIZE) return -2; channelid++; World world = this.getWorld(worldid); Channel channel = new Channel(worldid, channelid, getCurrentTime()); - - channel.setServerMessage(p.getProperty("whyamirecommended" + worldid)); + + channel.setServerMessage(YamlConfig.config.worlds.get(worldid).why_am_i_recommended); world.addChannel(channel); worldChannels.put(channelid, channel.getIP()); @@ -365,10 +361,7 @@ public class Server { } public int addWorld() { - Properties p = loadWorldINI(); - if(p == null) return -2; - - int newWorld = initWorld(p); + int newWorld = initWorld(); if(newWorld > -1) { installWorldPlayerRanking(newWorld); @@ -388,40 +381,40 @@ public class Server { return newWorld; } - private static int getWorldProperty(Properties p, String property, int wid, int defaultValue) { - String content = p.getProperty(property + wid); - return content != null ? Integer.parseInt(content) : defaultValue; - } - - private int initWorld(Properties p) { + private int initWorld() { wldWLock.lock(); try { int i = worlds.size(); - if(i >= ServerConstants.WLDLIST_SIZE) { + if(i >= YamlConfig.config.server.WLDLIST_SIZE) { return -1; } System.out.println("Starting world " + i); - int exprate = getWorldProperty(p, "exprate", i, ServerConstants.EXP_RATE); - int mesorate = getWorldProperty(p, "mesorate", i, ServerConstants.MESO_RATE); - int droprate = getWorldProperty(p, "droprate", i, ServerConstants.DROP_RATE); - int bossdroprate = getWorldProperty(p, "bossdroprate", i, ServerConstants.BOSS_DROP_RATE); - int questrate = getWorldProperty(p, "questrate", i, ServerConstants.QUEST_RATE); - int travelrate = getWorldProperty(p, "travelrate", i, ServerConstants.TRAVEL_RATE); - int fishingrate = getWorldProperty(p, "fishrate", i, ServerConstants.FISHING_RATE); + + int exprate = YamlConfig.config.worlds.get(i).exp_rate; + int mesorate = YamlConfig.config.worlds.get(i).meso_rate; + int droprate = YamlConfig.config.worlds.get(i).drop_rate; + int bossdroprate = YamlConfig.config.worlds.get(i).boss_drop_rate; + int questrate = YamlConfig.config.worlds.get(i).quest_rate; + int travelrate = YamlConfig.config.worlds.get(i).travel_rate; + int fishingrate = YamlConfig.config.worlds.get(i).fishing_rate; + + int flag = YamlConfig.config.worlds.get(i).flag; + String event_message = YamlConfig.config.worlds.get(i).event_message; + String why_am_i_recommended = YamlConfig.config.worlds.get(i).why_am_i_recommended; World world = new World(i, - Integer.parseInt(p.getProperty("flag" + i)), - p.getProperty("eventmessage" + i), + flag, + event_message, exprate, droprate, bossdroprate, mesorate, questrate, travelrate, fishingrate); - worldRecommendedList.add(new Pair<>(i, p.getProperty("whyamirecommended" + i))); + worldRecommendedList.add(new Pair<>(i, why_am_i_recommended)); worlds.add(world); Map channelInfo = new HashMap<>(); long bootTime = getCurrentTime(); - for (int j = 1; j <= Integer.parseInt(p.getProperty("channels" + i)); j++) { + for (int j = 1; j <= YamlConfig.config.worlds.get(i).channels; j++) { int channelid = j; Channel channel = new Channel(i, channelid, bootTime); @@ -431,7 +424,7 @@ public class Server { channels.add(i, channelInfo); - world.setServerMessage(p.getProperty("servermessage" + i)); + world.setServerMessage(YamlConfig.config.worlds.get(i).server_message); System.out.println("Finished loading world " + i + "\r\n"); return i; @@ -511,18 +504,6 @@ public class Server { } } - public static Properties loadWorldINI() { - Properties p = new Properties(); - try { - p.load(new FileInputStream("world.ini")); - return p; - } catch (Exception e) { - e.printStackTrace(); - System.out.println("[SEVERE] Could not find/open 'world.ini'."); - return null; - } - } - private static long getTimeLeftForNextHour() { Calendar nextHour = Calendar.getInstance(); nextHour.add(Calendar.HOUR, 1); @@ -547,7 +528,7 @@ public class Server { } public static void cleanNxcodeCoupons(Connection con) throws SQLException { - if (!ServerConstants.USE_CLEAR_OUTDATED_COUPONS) return; + if (!YamlConfig.config.server.USE_CLEAR_OUTDATED_COUPONS) return; long timeClear = System.currentTimeMillis() - 14 * 24 * 60 * 60 * 1000; @@ -705,7 +686,7 @@ public class Server { public List> getWorldPlayerRanking(int worldid) { wldRLock.lock(); try { - return new ArrayList<>(playerRanking.get(!ServerConstants.USE_WHOLE_SERVER_RANKING ? worldid : 0)); + return new ArrayList<>(playerRanking.get(!YamlConfig.config.server.USE_WHOLE_SERVER_RANKING ? worldid : 0)); } finally { wldRLock.unlock(); } @@ -716,7 +697,7 @@ public class Server { if(!ranking.isEmpty()) { wldWLock.lock(); try { - if (!ServerConstants.USE_WHOLE_SERVER_RANKING) { + if (!YamlConfig.config.server.USE_WHOLE_SERVER_RANKING) { for(int i = playerRanking.size(); i <= worldid; i++) { playerRanking.add(new ArrayList>(0)); } @@ -732,7 +713,7 @@ public class Server { } private void removeWorldPlayerRanking() { - if (!ServerConstants.USE_WHOLE_SERVER_RANKING) { + if (!YamlConfig.config.server.USE_WHOLE_SERVER_RANKING) { wldWLock.lock(); try { if(playerRanking.size() < this.getWorldsSize()) { @@ -760,7 +741,7 @@ public class Server { if(!rankUpdates.isEmpty()) { wldWLock.lock(); try { - if (!ServerConstants.USE_WHOLE_SERVER_RANKING) { + if (!YamlConfig.config.server.USE_WHOLE_SERVER_RANKING) { for(int i = playerRanking.size(); i <= rankUpdates.get(rankUpdates.size() - 1).getLeft(); i++) { playerRanking.add(new ArrayList>(0)); } @@ -778,7 +759,7 @@ public class Server { } private void initWorldPlayerRanking() { - if (ServerConstants.USE_WHOLE_SERVER_RANKING) { + if (YamlConfig.config.server.USE_WHOLE_SERVER_RANKING) { playerRanking.add(new ArrayList>(0)); } updateWorldPlayerRanking(); @@ -795,7 +776,7 @@ public class Server { con = DatabaseConnection.getConnection(); String worldQuery; - if (!ServerConstants.USE_WHOLE_SERVER_RANKING) { + if (!YamlConfig.config.server.USE_WHOLE_SERVER_RANKING) { if(worldid >= 0) { worldQuery = (" AND `characters`.`world` = " + worldid); } else { @@ -805,10 +786,10 @@ public class Server { worldQuery = (" AND `characters`.`world` >= 0 AND `characters`.`world` <= " + Math.abs(worldid)); } - ps = con.prepareStatement("SELECT `characters`.`name`, `characters`.`level`, `characters`.`world` FROM `characters` LEFT JOIN accounts ON accounts.id = characters.accountid WHERE `characters`.`gm` < 2 AND `accounts`.`banned` = '0'" + worldQuery + " ORDER BY " + (!ServerConstants.USE_WHOLE_SERVER_RANKING ? "world, " : "") + "level DESC, exp DESC, lastExpGainTime ASC LIMIT 50"); + ps = con.prepareStatement("SELECT `characters`.`name`, `characters`.`level`, `characters`.`world` FROM `characters` LEFT JOIN accounts ON accounts.id = characters.accountid WHERE `characters`.`gm` < 2 AND `accounts`.`banned` = '0'" + worldQuery + " ORDER BY " + (!YamlConfig.config.server.USE_WHOLE_SERVER_RANKING ? "world, " : "") + "level DESC, exp DESC, lastExpGainTime ASC LIMIT 50"); rs = ps.executeQuery(); - if (!ServerConstants.USE_WHOLE_SERVER_RANKING) { + if (!YamlConfig.config.server.USE_WHOLE_SERVER_RANKING) { int currentWorld = -1; while(rs.next()) { int rsWorld = rs.getInt("world"); @@ -854,17 +835,12 @@ public class Server { } public void init() { - Properties p = loadWorldINI(); - if(p == null) { - System.exit(0); - } - System.out.println("HeavenMS v" + ServerConstants.VERSION + " starting up.\r\n"); - if(ServerConstants.SHUTDOWNHOOK) + if(YamlConfig.config.server.SHUTDOWNHOOK) Runtime.getRuntime().addShutdownHook(new Thread(shutdown(false))); - TimeZone.setDefault(TimeZone.getTimeZone(ServerConstants.TIMEZONE)); + TimeZone.setDefault(TimeZone.getTimeZone(YamlConfig.config.server.TIMEZONE)); Connection c = null; try { @@ -897,21 +873,21 @@ public class Server { ThreadManager.getInstance().start(); TimerManager tMan = TimerManager.getInstance(); tMan.start(); - tMan.register(tMan.purge(), ServerConstants.PURGING_INTERVAL);//Purging ftw... + tMan.register(tMan.purge(), YamlConfig.config.server.PURGING_INTERVAL);//Purging ftw... disconnectIdlesOnLoginTask(); long timeLeft = getTimeLeftForNextHour(); - tMan.register(new CharacterDiseaseWorker(), ServerConstants.UPDATE_INTERVAL, ServerConstants.UPDATE_INTERVAL); + tMan.register(new CharacterDiseaseWorker(), YamlConfig.config.server.UPDATE_INTERVAL, YamlConfig.config.server.UPDATE_INTERVAL); tMan.register(new ReleaseLockWorker(), 2 * 60 * 1000, 2 * 60 * 1000); - tMan.register(new CouponWorker(), ServerConstants.COUPON_INTERVAL, timeLeft); + tMan.register(new CouponWorker(), YamlConfig.config.server.COUPON_INTERVAL, timeLeft); tMan.register(new RankingCommandWorker(), 5 * 60 * 1000, 5 * 60 * 1000); - tMan.register(new RankingLoginWorker(), ServerConstants.RANKING_INTERVAL, timeLeft); + tMan.register(new RankingLoginWorker(), YamlConfig.config.server.RANKING_INTERVAL, timeLeft); tMan.register(new LoginCoordinatorWorker(), 60 * 60 * 1000, timeLeft); tMan.register(new EventRecallCoordinatorWorker(), 60 * 60 * 1000, timeLeft); tMan.register(new LoginStorageWorker(), 2 * 60 * 1000, 2 * 60 * 1000); tMan.register(new DueyFredrickWorker(), 60 * 60 * 1000, timeLeft); tMan.register(new InvitationWorker(), 30 * 1000, 30 * 1000); - tMan.register(new RespawnWorker(), ServerConstants.RESPAWN_INTERVAL, ServerConstants.RESPAWN_INTERVAL); + tMan.register(new RespawnWorker(), YamlConfig.config.server.RESPAWN_INTERVAL, YamlConfig.config.server.RESPAWN_INTERVAL); timeLeft = getTimeLeftForNextDay(); MapleExpeditionBossLog.resetBossLogTable(); @@ -932,13 +908,13 @@ public class Server { NewYearCardRecord.startPendingNewYearCardRequests(); - if(ServerConstants.USE_THREAD_TRACKER) ThreadTracker.getInstance().registerThreadTrackerTask(); + if(YamlConfig.config.server.USE_THREAD_TRACKER) ThreadTracker.getInstance().registerThreadTrackerTask(); try { - Integer worldCount = Math.min(GameConstants.WORLD_NAMES.length, Integer.parseInt(p.getProperty("worlds"))); + Integer worldCount = Math.min(GameConstants.WORLD_NAMES.length, YamlConfig.config.worlds.size()); for (int i = 0; i < worldCount; i++) { - initWorld(p); + initWorld(); } initWorldPlayerRanking(); @@ -952,7 +928,7 @@ public class Server { System.out.println(); - if(ServerConstants.USE_FAMILY_SYSTEM) { + if(YamlConfig.config.server.USE_FAMILY_SYSTEM) { timeToTake = System.currentTimeMillis(); MapleFamily.loadAllFamilies(); System.out.println("Families loaded in " + ((System.currentTimeMillis() - timeToTake) / 1000.0) + " seconds\r\n"); @@ -1767,7 +1743,7 @@ public class Server { } public boolean validateCharacteridInTransition(IoSession session, int charId) { - if (!ServerConstants.USE_IP_VALIDATION) { + if (!YamlConfig.config.server.USE_IP_VALIDATION) { return true; } @@ -1783,7 +1759,7 @@ public class Server { } public Integer freeCharacteridInTransition(IoSession session) { - if (!ServerConstants.USE_IP_VALIDATION) { + if (!YamlConfig.config.server.USE_IP_VALIDATION) { return null; } @@ -1798,7 +1774,7 @@ public class Server { } public boolean hasCharacteridInTransition(IoSession session) { - if (!ServerConstants.USE_IP_VALIDATION) { + if (!YamlConfig.config.server.USE_IP_VALIDATION) { return true; } @@ -1905,7 +1881,7 @@ public class Server { List allChannels = getAllChannels(); - if(ServerConstants.USE_THREAD_TRACKER) ThreadTracker.getInstance().cancelThreadTrackerTask(); + if(YamlConfig.config.server.USE_THREAD_TRACKER) ThreadTracker.getInstance().cancelThreadTrackerTask(); for (Channel ch : allChannels) { while (!ch.finishedShutdown()) { diff --git a/src/net/server/audit/locks/active/TrackerReadLock.java b/src/net/server/audit/locks/active/TrackerReadLock.java index bed688d8f0..4b05805d0a 100644 --- a/src/net/server/audit/locks/active/TrackerReadLock.java +++ b/src/net/server/audit/locks/active/TrackerReadLock.java @@ -19,6 +19,7 @@ */ package net.server.audit.locks.active; +import config.YamlConfig; import constants.ServerConstants; import java.text.DateFormat; import java.text.SimpleDateFormat; @@ -59,7 +60,7 @@ public class TrackerReadLock extends ReentrantReadWriteLock.ReadLock implements @Override public void lock() { - if(ServerConstants.USE_THREAD_TRACKER) { + if(YamlConfig.config.server.USE_THREAD_TRACKER) { if(deadlockedState != null) { DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); dateFormat.setTimeZone(TimeZone.getDefault()); @@ -77,7 +78,7 @@ public class TrackerReadLock extends ReentrantReadWriteLock.ReadLock implements @Override public void unlock() { - if(ServerConstants.USE_THREAD_TRACKER) { + if(YamlConfig.config.server.USE_THREAD_TRACKER) { unregisterLocking(); } @@ -87,7 +88,7 @@ public class TrackerReadLock extends ReentrantReadWriteLock.ReadLock implements @Override public boolean tryLock() { if(super.tryLock()) { - if(ServerConstants.USE_THREAD_TRACKER) { + if(YamlConfig.config.server.USE_THREAD_TRACKER) { if(deadlockedState != null) { //FilePrinter.printError(FilePrinter.DEADLOCK_ERROR, "Deadlock occurred when trying to use the '" + id.name() + "' lock resources:\r\n" + printStackTrace(deadlockedState)); ThreadTracker.getInstance().accessThreadTracker(true, true, id, hashcode); @@ -114,7 +115,7 @@ public class TrackerReadLock extends ReentrantReadWriteLock.ReadLock implements public void run() { issueDeadlock(t); } - }, ServerConstants.LOCK_MONITOR_TIME); + }, YamlConfig.config.server.LOCK_MONITOR_TIME); } } finally { state.unlock(); diff --git a/src/net/server/audit/locks/active/TrackerReentrantLock.java b/src/net/server/audit/locks/active/TrackerReentrantLock.java index 5a211086f2..3f1432465e 100644 --- a/src/net/server/audit/locks/active/TrackerReentrantLock.java +++ b/src/net/server/audit/locks/active/TrackerReentrantLock.java @@ -23,6 +23,8 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.ScheduledFuture; + +import config.YamlConfig; import constants.ServerConstants; import java.text.DateFormat; import java.text.SimpleDateFormat; @@ -61,7 +63,7 @@ public class TrackerReentrantLock extends ReentrantLock implements MonitoredReen @Override public void lock() { - if(ServerConstants.USE_THREAD_TRACKER) { + if(YamlConfig.config.server.USE_THREAD_TRACKER) { if(deadlockedState != null) { DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); dateFormat.setTimeZone(TimeZone.getDefault()); @@ -79,7 +81,7 @@ public class TrackerReentrantLock extends ReentrantLock implements MonitoredReen @Override public void unlock() { - if(ServerConstants.USE_THREAD_TRACKER) { + if(YamlConfig.config.server.USE_THREAD_TRACKER) { unregisterLocking(); } @@ -89,7 +91,7 @@ public class TrackerReentrantLock extends ReentrantLock implements MonitoredReen @Override public boolean tryLock() { if(super.tryLock()) { - if(ServerConstants.USE_THREAD_TRACKER) { + if(YamlConfig.config.server.USE_THREAD_TRACKER) { if(deadlockedState != null) { //FilePrinter.printError(FilePrinter.DEADLOCK_ERROR, "Deadlock occurred when trying to use the '" + id.name() + "' lock resources:\r\n" + printStackTrace(deadlockedState)); ThreadTracker.getInstance().accessThreadTracker(true, true, id, hashcode); @@ -116,7 +118,7 @@ public class TrackerReentrantLock extends ReentrantLock implements MonitoredReen public void run() { issueDeadlock(t); } - }, ServerConstants.LOCK_MONITOR_TIME); + }, YamlConfig.config.server.LOCK_MONITOR_TIME); } } finally { state.unlock(); diff --git a/src/net/server/audit/locks/active/TrackerWriteLock.java b/src/net/server/audit/locks/active/TrackerWriteLock.java index dd160fcad9..e77aaec924 100644 --- a/src/net/server/audit/locks/active/TrackerWriteLock.java +++ b/src/net/server/audit/locks/active/TrackerWriteLock.java @@ -19,6 +19,7 @@ */ package net.server.audit.locks.active; +import config.YamlConfig; import constants.ServerConstants; import java.text.DateFormat; import java.text.SimpleDateFormat; @@ -57,7 +58,7 @@ public class TrackerWriteLock extends ReentrantReadWriteLock.WriteLock implement @Override public void lock() { - if(ServerConstants.USE_THREAD_TRACKER) { + if(YamlConfig.config.server.USE_THREAD_TRACKER) { if(deadlockedState != null) { DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); dateFormat.setTimeZone(TimeZone.getDefault()); @@ -75,7 +76,7 @@ public class TrackerWriteLock extends ReentrantReadWriteLock.WriteLock implement @Override public void unlock() { - if(ServerConstants.USE_THREAD_TRACKER) { + if(YamlConfig.config.server.USE_THREAD_TRACKER) { unregisterLocking(); } @@ -85,7 +86,7 @@ public class TrackerWriteLock extends ReentrantReadWriteLock.WriteLock implement @Override public boolean tryLock() { if(super.tryLock()) { - if(ServerConstants.USE_THREAD_TRACKER) { + if(YamlConfig.config.server.USE_THREAD_TRACKER) { if(deadlockedState != null) { //FilePrinter.printError(FilePrinter.DEADLOCK_ERROR, "Deadlock occurred when trying to use the '" + id.name() + "' lock resources:\r\n" + printStackTrace(deadlockedState)); ThreadTracker.getInstance().accessThreadTracker(true, true, id, hashcode); @@ -112,7 +113,7 @@ public class TrackerWriteLock extends ReentrantReadWriteLock.WriteLock implement public void run() { issueDeadlock(t); } - }, ServerConstants.LOCK_MONITOR_TIME); + }, YamlConfig.config.server.LOCK_MONITOR_TIME); } } finally { state.unlock(); diff --git a/src/net/server/channel/Channel.java b/src/net/server/channel/Channel.java index 4433d65d4c..aaa7aa64e2 100644 --- a/src/net/server/channel/Channel.java +++ b/src/net/server/channel/Channel.java @@ -37,6 +37,8 @@ import java.util.concurrent.ScheduledFuture; import java.util.concurrent.locks.ReentrantReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock; import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; + +import config.YamlConfig; import net.server.audit.LockCollector; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.MonitoredReentrantLock; @@ -88,13 +90,13 @@ public final class Channel { private String ip, serverMessage; private MapleMapManager mapManager; private EventScriptManager eventSM; - private MobStatusScheduler mobStatusSchedulers[] = new MobStatusScheduler[ServerConstants.CHANNEL_LOCKS]; - private MobAnimationScheduler mobAnimationSchedulers[] = new MobAnimationScheduler[ServerConstants.CHANNEL_LOCKS]; - private MobClearSkillScheduler mobClearSkillSchedulers[] = new MobClearSkillScheduler[ServerConstants.CHANNEL_LOCKS]; - private MobMistScheduler mobMistSchedulers[] = new MobMistScheduler[ServerConstants.CHANNEL_LOCKS]; - private FaceExpressionScheduler faceExpressionSchedulers[] = new FaceExpressionScheduler[ServerConstants.CHANNEL_LOCKS]; - private EventScheduler eventSchedulers[] = new EventScheduler[ServerConstants.CHANNEL_LOCKS]; - private OverallScheduler channelSchedulers[] = new OverallScheduler[ServerConstants.CHANNEL_LOCKS]; + private MobStatusScheduler mobStatusSchedulers[] = new MobStatusScheduler[YamlConfig.config.server.CHANNEL_LOCKS]; + private MobAnimationScheduler mobAnimationSchedulers[] = new MobAnimationScheduler[YamlConfig.config.server.CHANNEL_LOCKS]; + private MobClearSkillScheduler mobClearSkillSchedulers[] = new MobClearSkillScheduler[YamlConfig.config.server.CHANNEL_LOCKS]; + private MobMistScheduler mobMistSchedulers[] = new MobMistScheduler[YamlConfig.config.server.CHANNEL_LOCKS]; + private FaceExpressionScheduler faceExpressionSchedulers[] = new FaceExpressionScheduler[YamlConfig.config.server.CHANNEL_LOCKS]; + private EventScheduler eventSchedulers[] = new EventScheduler[YamlConfig.config.server.CHANNEL_LOCKS]; + private OverallScheduler channelSchedulers[] = new OverallScheduler[YamlConfig.config.server.CHANNEL_LOCKS]; private Map hiredMerchants = new HashMap<>(); private final Map storedVars = new HashMap<>(); private Set playersAway = new HashSet<>(); @@ -129,7 +131,7 @@ public final class Channel { private ReadLock merchRlock = merchantLock.readLock(); private WriteLock merchWlock = merchantLock.writeLock(); - private MonitoredReentrantLock faceLock[] = new MonitoredReentrantLock[ServerConstants.CHANNEL_LOCKS]; + private MonitoredReentrantLock faceLock[] = new MonitoredReentrantLock[YamlConfig.config.server.CHANNEL_LOCKS]; private MonitoredReentrantLock lock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CHANNEL, true); @@ -143,7 +145,7 @@ public final class Channel { eventSM = new EventScriptManager(this, getEvents()); port = 7575 + this.channel - 1; port += (world * 100); - ip = ServerConstants.HOST + ":" + port; + ip = YamlConfig.config.server.HOST + ":" + port; IoBuffer.setUseDirectBuffer(false); IoBuffer.setAllocator(new SimpleBufferAllocator()); acceptor = new NioSocketAcceptor(); @@ -166,7 +168,7 @@ public final class Channel { dojoTask[i] = null; } - for(int i = 0; i < ServerConstants.CHANNEL_LOCKS; i++) { + for(int i = 0; i < YamlConfig.config.server.CHANNEL_LOCKS; i++) { faceLock[i] = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CHANNEL_FACEEXPRS, true); mobStatusSchedulers[i] = new MobStatusScheduler(); @@ -228,7 +230,7 @@ public final class Channel { } } - for(int i = 0; i < ServerConstants.CHANNEL_LOCKS; i++) { + for(int i = 0; i < YamlConfig.config.server.CHANNEL_LOCKS; i++) { if(mobStatusSchedulers[i] != null) { mobStatusSchedulers[i].dispose(); mobStatusSchedulers[i] = null; @@ -278,7 +280,7 @@ public final class Channel { } private void emptyLocks() { - for(int i = 0; i < ServerConstants.CHANNEL_LOCKS; i++) { + for(int i = 0; i < YamlConfig.config.server.CHANNEL_LOCKS; i++) { faceLock[i] = faceLock[i].dispose(); } @@ -335,7 +337,7 @@ public final class Channel { } public int getChannelCapacity() { - return (int)(Math.ceil(((float) players.getAllCharacters().size() / ServerConstants.CHANNEL_LOAD) * 800)); + return (int)(Math.ceil(((float) players.getAllCharacters().size() / YamlConfig.config.server.CHANNEL_LOAD) * 800)); } public void broadcastPacket(final byte[] data) { @@ -786,7 +788,7 @@ public final class Channel { try { List weddingReservationQueue = (cathedral ? cathedralReservationQueue : chapelReservationQueue); - int delay = ServerConstants.WEDDING_RESERVATION_DELAY - 1 - weddingReservationQueue.size(); + int delay = YamlConfig.config.server.WEDDING_RESERVATION_DELAY - 1 - weddingReservationQueue.size(); for(int i = 0; i < delay; i++) { weddingReservationQueue.add(null); // push empty slots to fill the waiting time } @@ -869,7 +871,7 @@ public final class Channel { public void run() { closeOngoingWedding(cathedral); } - }, ServerConstants.WEDDING_RESERVATION_TIMEOUT * 60 * 1000); + }, YamlConfig.config.server.WEDDING_RESERVATION_TIMEOUT * 60 * 1000); if(cathedral) { cathedralReservationTask = weddingTask; @@ -933,7 +935,7 @@ public final class Channel { } public static long getRelativeWeddingTicketExpireTime(int resSlot) { - return (resSlot * ServerConstants.WEDDING_RESERVATION_INTERVAL * 60 * 1000); + return (resSlot * YamlConfig.config.server.WEDDING_RESERVATION_INTERVAL * 60 * 1000); } public String getWeddingReservationTimeLeft(Integer weddingId) { @@ -959,7 +961,7 @@ public final class Channel { return venue + " - RIGHT NOW"; } - return venue + " - " + getTimeLeft(ongoingStartTime + (resStatus * ServerConstants.WEDDING_RESERVATION_INTERVAL * 60 * 1000)) + " from now"; + return venue + " - " + getTimeLeft(ongoingStartTime + (resStatus * YamlConfig.config.server.WEDDING_RESERVATION_INTERVAL * 60 * 1000)) + " from now"; } finally { lock.unlock(); } @@ -1019,7 +1021,7 @@ public final class Channel { } private static int getChannelSchedulerIndex(int mapid) { - int section = 1000000000 / ServerConstants.CHANNEL_LOCKS; + int section = 1000000000 / YamlConfig.config.server.CHANNEL_LOCKS; return mapid / section; } diff --git a/src/net/server/channel/handlers/AbstractDealDamageHandler.java b/src/net/server/channel/handlers/AbstractDealDamageHandler.java index 2ca1a9bcec..ec977f1501 100644 --- a/src/net/server/channel/handlers/AbstractDealDamageHandler.java +++ b/src/net/server/channel/handlers/AbstractDealDamageHandler.java @@ -28,6 +28,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import config.YamlConfig; import net.AbstractMaplePacketHandler; import server.MapleStatEffect; import server.TimerManager; @@ -462,7 +463,7 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl int threeSnailsId = player.getJobType() * 10000000 + 1000; if(attack.skill == threeSnailsId) { - if(ServerConstants.USE_ULTRA_THREE_SNAILS) { + if(YamlConfig.config.server.USE_ULTRA_THREE_SNAILS) { int skillLv = player.getSkillLevel(threeSnailsId); if(skillLv > 0) { diff --git a/src/net/server/channel/handlers/AcceptFamilyHandler.java b/src/net/server/channel/handlers/AcceptFamilyHandler.java index 4bffaa5d50..670f37fec4 100644 --- a/src/net/server/channel/handlers/AcceptFamilyHandler.java +++ b/src/net/server/channel/handlers/AcceptFamilyHandler.java @@ -21,6 +21,7 @@ */ package net.server.channel.handlers; +import config.YamlConfig; import constants.ServerConstants; import java.sql.Connection; @@ -50,7 +51,7 @@ public final class AcceptFamilyHandler extends AbstractMaplePacketHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { - if(!ServerConstants.USE_FAMILY_SYSTEM) { + if(!YamlConfig.config.server.USE_FAMILY_SYSTEM) { return; } MapleCharacter chr = c.getPlayer(); @@ -79,7 +80,7 @@ public final class AcceptFamilyHandler extends AbstractMaplePacketHandler { MapleFamilyEntry targetEntry = chr.getFamilyEntry(); MapleFamily targetFamily = targetEntry.getFamily(); if(targetFamily.getLeader() != targetEntry) return; - if(inviter.getFamily().getTotalGenerations() + targetFamily.getTotalGenerations() <= ServerConstants.FAMILY_MAX_GENERATIONS) { + if(inviter.getFamily().getTotalGenerations() + targetFamily.getTotalGenerations() <= YamlConfig.config.server.FAMILY_MAX_GENERATIONS) { targetEntry.join(inviter.getFamilyEntry()); } else { inviter.announce(MaplePacketCreator.sendFamilyMessage(76, 0)); @@ -88,7 +89,7 @@ public final class AcceptFamilyHandler extends AbstractMaplePacketHandler { } } } else { // create new family - if(chr.getFamily() != null && inviter.getFamily() != null && chr.getFamily().getTotalGenerations() + inviter.getFamily().getTotalGenerations() >= ServerConstants.FAMILY_MAX_GENERATIONS) { + if(chr.getFamily() != null && inviter.getFamily() != null && chr.getFamily().getTotalGenerations() + inviter.getFamily().getTotalGenerations() >= YamlConfig.config.server.FAMILY_MAX_GENERATIONS) { inviter.announce(MaplePacketCreator.sendFamilyMessage(76, 0)); chr.announce(MaplePacketCreator.sendFamilyMessage(76, 0)); return; diff --git a/src/net/server/channel/handlers/AdminChatHandler.java b/src/net/server/channel/handlers/AdminChatHandler.java index a27edfa2d0..35be0f800b 100644 --- a/src/net/server/channel/handlers/AdminChatHandler.java +++ b/src/net/server/channel/handlers/AdminChatHandler.java @@ -1,6 +1,7 @@ package net.server.channel.handlers; import client.MapleClient; +import config.YamlConfig; import constants.ServerConstants; import net.AbstractMaplePacketHandler; import tools.LogHelper; @@ -25,19 +26,19 @@ public class AdminChatHandler extends AbstractMaplePacketHandler { switch (mode) { case 0:// /alertall, /noticeall, /slideall c.getWorldServer().broadcastPacket(packet); - if (ServerConstants.USE_ENABLE_CHAT_LOG) { + if (YamlConfig.config.server.USE_ENABLE_CHAT_LOG) { LogHelper.logChat(c, "Alert All", message); } break; case 1:// /alertch, /noticech, /slidech c.getChannelServer().broadcastPacket(packet); - if (ServerConstants.USE_ENABLE_CHAT_LOG) { + if (YamlConfig.config.server.USE_ENABLE_CHAT_LOG) { LogHelper.logChat(c, "Alert Ch", message); } break; case 2:// /alertm /alertmap, /noticem /noticemap, /slidem /slidemap c.getPlayer().getMap().broadcastMessage(packet); - if (ServerConstants.USE_ENABLE_CHAT_LOG) { + if (YamlConfig.config.server.USE_ENABLE_CHAT_LOG) { LogHelper.logChat(c, "Alert Map", message); } break; diff --git a/src/net/server/channel/handlers/CashOperationHandler.java b/src/net/server/channel/handlers/CashOperationHandler.java index f1b51fadf8..ca25e216fb 100644 --- a/src/net/server/channel/handlers/CashOperationHandler.java +++ b/src/net/server/channel/handlers/CashOperationHandler.java @@ -28,6 +28,7 @@ import client.inventory.Equip; import client.inventory.Item; import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; +import config.YamlConfig; import constants.ItemConstants; import java.sql.SQLException; import java.util.Calendar; @@ -76,7 +77,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { if (ItemConstants.isCashStore(cItem.getItemId()) && chr.getLevel() < 16) { c.enableCSActions(); return; - } else if (ItemConstants.isRateCoupon(cItem.getItemId()) && !ServerConstants.USE_SUPPLY_RATE_COUPONS) { + } else if (ItemConstants.isRateCoupon(cItem.getItemId()) && !YamlConfig.config.server.USE_SUPPLY_RATE_COUPONS) { chr.dropMessage(1, "Rate coupons are currently unavailable to purchase."); c.enableCSActions(); return; @@ -376,7 +377,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { c.enableCSActions(); return; } - if(cItem.getSN() == 50600000 && ServerConstants.ALLOW_CASHSHOP_NAME_CHANGE) { + if(cItem.getSN() == 50600000 && YamlConfig.config.server.ALLOW_CASHSHOP_NAME_CHANGE) { slea.readMapleAsciiString(); //old name String newName = slea.readMapleAsciiString(); if(!MapleCharacter.canCreateChar(newName) || chr.getLevel() < 10) { //(longest ban duration isn't tracked currently) @@ -405,7 +406,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { c.enableCSActions(); return; } - if(cItem.getSN() == 50600001 && ServerConstants.ALLOW_CASHSHOP_WORLD_TRANSFER) { + if(cItem.getSN() == 50600001 && YamlConfig.config.server.ALLOW_CASHSHOP_WORLD_TRANSFER) { int newWorldSelection = slea.readInt(); int worldTransferError = chr.checkWorldTransferEligibility(); diff --git a/src/net/server/channel/handlers/CloseRangeDamageHandler.java b/src/net/server/channel/handlers/CloseRangeDamageHandler.java index cc5551c571..3f23247fac 100644 --- a/src/net/server/channel/handlers/CloseRangeDamageHandler.java +++ b/src/net/server/channel/handlers/CloseRangeDamageHandler.java @@ -25,6 +25,7 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; +import config.YamlConfig; import server.MapleStatEffect; import tools.MaplePacketCreator; import tools.Pair; @@ -70,7 +71,7 @@ public final class CloseRangeDamageHandler extends AbstractDealDamageHandler { if (chr.getDojoEnergy() < 10000 && (attack.skill == 1009 || attack.skill == 10001009 || attack.skill == 20001009)) // PE hacking or maybe just lagging return; if (chr.getMap().isDojoMap() && attack.numAttacked > 0) { - chr.setDojoEnergy(chr.getDojoEnergy() + ServerConstants.DOJO_ENERGY_ATK); + chr.setDojoEnergy(chr.getDojoEnergy() + YamlConfig.config.server.DOJO_ENERGY_ATK); c.announce(MaplePacketCreator.getEnergy("energy", chr.getDojoEnergy())); } diff --git a/src/net/server/channel/handlers/DueyHandler.java b/src/net/server/channel/handlers/DueyHandler.java index 89fc361282..71c0bdd390 100644 --- a/src/net/server/channel/handlers/DueyHandler.java +++ b/src/net/server/channel/handlers/DueyHandler.java @@ -23,6 +23,7 @@ package net.server.channel.handlers; import client.MapleClient; import client.processor.DueyProcessor; +import config.YamlConfig; import constants.ServerConstants; import net.AbstractMaplePacketHandler; @@ -33,7 +34,7 @@ public final class DueyHandler extends AbstractMaplePacketHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { - if (!ServerConstants.USE_DUEY){ + if (!YamlConfig.config.server.USE_DUEY){ c.announce(MaplePacketCreator.enableActions()); return; } diff --git a/src/net/server/channel/handlers/EnterMTSHandler.java b/src/net/server/channel/handlers/EnterMTSHandler.java index ce78a5ca12..8de629d4e9 100644 --- a/src/net/server/channel/handlers/EnterMTSHandler.java +++ b/src/net/server/channel/handlers/EnterMTSHandler.java @@ -28,6 +28,7 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.List; +import config.YamlConfig; import constants.ServerConstants; import client.MapleCharacter; import client.MapleClient; @@ -49,11 +50,11 @@ public final class EnterMTSHandler extends AbstractMaplePacketHandler { public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { MapleCharacter chr = c.getPlayer(); - if(!chr.isAlive() && ServerConstants.USE_BUYBACK_SYSTEM) { + if(!chr.isAlive() && YamlConfig.config.server.USE_BUYBACK_SYSTEM) { BuybackProcessor.processBuyback(c); c.announce(MaplePacketCreator.enableActions()); } else { - if (!ServerConstants.USE_MTS) { + if (!YamlConfig.config.server.USE_MTS) { c.announce(MaplePacketCreator.enableActions()); return; } diff --git a/src/net/server/channel/handlers/FamilyAddHandler.java b/src/net/server/channel/handlers/FamilyAddHandler.java index a7638e401d..1553908173 100644 --- a/src/net/server/channel/handlers/FamilyAddHandler.java +++ b/src/net/server/channel/handlers/FamilyAddHandler.java @@ -21,6 +21,7 @@ */ package net.server.channel.handlers; +import config.YamlConfig; import constants.ServerConstants; import client.MapleCharacter; import client.MapleClient; @@ -38,7 +39,7 @@ import tools.data.input.SeekableLittleEndianAccessor; public final class FamilyAddHandler extends AbstractMaplePacketHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { - if(!ServerConstants.USE_FAMILY_SYSTEM) { + if(!YamlConfig.config.server.USE_FAMILY_SYSTEM) { return; } String toAdd = slea.readMapleAsciiString(); @@ -58,7 +59,7 @@ public final class FamilyAddHandler extends AbstractMaplePacketHandler { c.announce(MaplePacketCreator.enableActions()); } else if(MapleInviteCoordinator.hasInvite(InviteType.FAMILY, addChr.getId())) { c.announce(MaplePacketCreator.sendFamilyMessage(73, 0)); - } else if(chr.getFamily() != null && addChr.getFamily() != null && addChr.getFamily().getTotalGenerations() + chr.getFamily().getTotalGenerations() > ServerConstants.FAMILY_MAX_GENERATIONS) { + } else if(chr.getFamily() != null && addChr.getFamily() != null && addChr.getFamily().getTotalGenerations() + chr.getFamily().getTotalGenerations() > YamlConfig.config.server.FAMILY_MAX_GENERATIONS) { c.announce(MaplePacketCreator.sendFamilyMessage(76, 0)); } else { MapleInviteCoordinator.createInvite(InviteType.FAMILY, chr, addChr, addChr.getId()); diff --git a/src/net/server/channel/handlers/FamilySeparateHandler.java b/src/net/server/channel/handlers/FamilySeparateHandler.java index 191ce23a38..1dee691f5c 100644 --- a/src/net/server/channel/handlers/FamilySeparateHandler.java +++ b/src/net/server/channel/handlers/FamilySeparateHandler.java @@ -22,6 +22,7 @@ package net.server.channel.handlers; import client.MapleClient; import client.MapleFamily; import client.MapleFamilyEntry; +import config.YamlConfig; import constants.ServerConstants; import net.AbstractMaplePacketHandler; import tools.MaplePacketCreator; @@ -31,7 +32,7 @@ public class FamilySeparateHandler extends AbstractMaplePacketHandler { @Override public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { - if(!ServerConstants.USE_FAMILY_SYSTEM) return; + if(!YamlConfig.config.server.USE_FAMILY_SYSTEM) return; MapleFamily oldFamily = c.getPlayer().getFamily(); if(oldFamily == null) return; MapleFamilyEntry forkOn = null; diff --git a/src/net/server/channel/handlers/FamilySummonResponseHandler.java b/src/net/server/channel/handlers/FamilySummonResponseHandler.java index 96ccee2c44..0bbaa58830 100644 --- a/src/net/server/channel/handlers/FamilySummonResponseHandler.java +++ b/src/net/server/channel/handlers/FamilySummonResponseHandler.java @@ -4,6 +4,7 @@ import client.MapleCharacter; import client.MapleClient; import client.MapleFamilyEntitlement; import client.MapleFamilyEntry; +import config.YamlConfig; import constants.ServerConstants; import net.AbstractMaplePacketHandler; import net.server.coordinator.MapleInviteCoordinator; @@ -18,7 +19,7 @@ public class FamilySummonResponseHandler extends AbstractMaplePacketHandler { @Override public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { - if(!ServerConstants.USE_FAMILY_SYSTEM) return; + if(!YamlConfig.config.server.USE_FAMILY_SYSTEM) return; slea.readMapleAsciiString(); //family name boolean accept = slea.readByte() != 0; MapleInviteResult inviteResult = MapleInviteCoordinator.answerInvite(InviteType.FAMILY_SUMMON, c.getPlayer().getId(), c.getPlayer(), accept); diff --git a/src/net/server/channel/handlers/FamilyUseHandler.java b/src/net/server/channel/handlers/FamilyUseHandler.java index dd33793e6d..24b2abc758 100644 --- a/src/net/server/channel/handlers/FamilyUseHandler.java +++ b/src/net/server/channel/handlers/FamilyUseHandler.java @@ -25,6 +25,7 @@ import client.MapleCharacter; import client.MapleClient; import client.MapleFamilyEntitlement; import client.MapleFamilyEntry; +import config.YamlConfig; import constants.ServerConstants; import net.AbstractMaplePacketHandler; import net.server.coordinator.MapleInviteCoordinator; @@ -42,7 +43,7 @@ import tools.data.input.SeekableLittleEndianAccessor; public final class FamilyUseHandler extends AbstractMaplePacketHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { - if(!ServerConstants.USE_FAMILY_SYSTEM) { + if(!YamlConfig.config.server.USE_FAMILY_SYSTEM) { return; } MapleFamilyEntitlement type = MapleFamilyEntitlement.values()[slea.readInt()]; diff --git a/src/net/server/channel/handlers/GeneralChatHandler.java b/src/net/server/channel/handlers/GeneralChatHandler.java index 5fbea4eb43..dcf8b66b85 100644 --- a/src/net/server/channel/handlers/GeneralChatHandler.java +++ b/src/net/server/channel/handlers/GeneralChatHandler.java @@ -25,6 +25,7 @@ import client.MapleCharacter; import client.MapleClient; import client.autoban.AutobanFactory; import client.command.CommandsExecutor; +import config.YamlConfig; import constants.ServerConstants; import net.AbstractMaplePacketHandler; import tools.FilePrinter; @@ -59,12 +60,12 @@ public final class GeneralChatHandler extends AbstractMaplePacketHandler { if (!chr.isHidden()) { chr.getMap().broadcastMessage(MaplePacketCreator.getChatText(chr.getId(), s, chr.getWhiteChat(), show)); - if (ServerConstants.USE_ENABLE_CHAT_LOG) { + if (YamlConfig.config.server.USE_ENABLE_CHAT_LOG) { LogHelper.logChat(c, "General", s); } } else { chr.getMap().broadcastGMMessage(MaplePacketCreator.getChatText(chr.getId(), s, chr.getWhiteChat(), show)); - if (ServerConstants.USE_ENABLE_CHAT_LOG) { + if (YamlConfig.config.server.USE_ENABLE_CHAT_LOG) { LogHelper.logChat(c, "GM General", s); } } diff --git a/src/net/server/channel/handlers/GuildOperationHandler.java b/src/net/server/channel/handlers/GuildOperationHandler.java index cb1a41e189..ac5f0b3b70 100644 --- a/src/net/server/channel/handlers/GuildOperationHandler.java +++ b/src/net/server/channel/handlers/GuildOperationHandler.java @@ -21,6 +21,7 @@ */ package net.server.channel.handlers; +import config.YamlConfig; import net.server.guild.MapleGuildResponse; import net.server.guild.MapleGuild; import constants.GameConstants; @@ -65,8 +66,8 @@ public final class GuildOperationHandler extends AbstractMaplePacketHandler { mc.dropMessage(1, "You cannot create a new Guild while in one."); return; } - if (mc.getMeso() < ServerConstants.CREATE_GUILD_COST) { - mc.dropMessage(1, "You do not have " + GameConstants.numberWithCommas(ServerConstants.CREATE_GUILD_COST) + " mesos to create a Guild."); + if (mc.getMeso() < YamlConfig.config.server.CREATE_GUILD_COST) { + mc.dropMessage(1, "You do not have " + GameConstants.numberWithCommas(YamlConfig.config.server.CREATE_GUILD_COST) + " mesos to create a Guild."); return; } String guildName = slea.readMapleAsciiString(); @@ -76,8 +77,8 @@ public final class GuildOperationHandler extends AbstractMaplePacketHandler { } Set eligibleMembers = new HashSet<>(MapleGuild.getEligiblePlayersForGuild(mc)); - if (eligibleMembers.size() < ServerConstants.CREATE_GUILD_MIN_PARTNERS) { - if (mc.getMap().getAllPlayers().size() < ServerConstants.CREATE_GUILD_MIN_PARTNERS) { + if (eligibleMembers.size() < YamlConfig.config.server.CREATE_GUILD_MIN_PARTNERS) { + if (mc.getMap().getAllPlayers().size() < YamlConfig.config.server.CREATE_GUILD_MIN_PARTNERS) { // thanks NovaStory for noticing message in need of smoother info mc.dropMessage(1, "Your Guild doesn't have enough cofounders present here and therefore cannot be created at this time."); } else { @@ -211,8 +212,8 @@ public final class GuildOperationHandler extends AbstractMaplePacketHandler { System.out.println("[Hack] " + mc.getName() + " tried to change guild emblem without being the guild leader."); return; } - if (mc.getMeso() < ServerConstants.CHANGE_EMBLEM_COST) { - c.announce(MaplePacketCreator.serverNotice(1, "You do not have " + GameConstants.numberWithCommas(ServerConstants.CHANGE_EMBLEM_COST) + " mesos to change the Guild emblem.")); + if (mc.getMeso() < YamlConfig.config.server.CHANGE_EMBLEM_COST) { + c.announce(MaplePacketCreator.serverNotice(1, "You do not have " + GameConstants.numberWithCommas(YamlConfig.config.server.CHANGE_EMBLEM_COST) + " mesos to change the Guild emblem.")); return; } short bg = slea.readShort(); @@ -226,7 +227,7 @@ public final class GuildOperationHandler extends AbstractMaplePacketHandler { Server.getInstance().allianceMessage(alliance.getId(), MaplePacketCreator.getGuildAlliances(alliance, c.getWorld()), -1, -1); } - mc.gainMeso(-ServerConstants.CHANGE_EMBLEM_COST, true, false, true); + mc.gainMeso(-YamlConfig.config.server.CHANGE_EMBLEM_COST, true, false, true); mc.getGuild().broadcastNameChanged(); mc.getGuild().broadcastEmblemChanged(); break; diff --git a/src/net/server/channel/handlers/InventoryMergeHandler.java b/src/net/server/channel/handlers/InventoryMergeHandler.java index 43ec9f437e..1e87fa2e23 100644 --- a/src/net/server/channel/handlers/InventoryMergeHandler.java +++ b/src/net/server/channel/handlers/InventoryMergeHandler.java @@ -21,6 +21,7 @@ */ package net.server.channel.handlers; +import config.YamlConfig; import constants.ServerConstants; import net.AbstractMaplePacketHandler; import client.inventory.manipulator.MapleInventoryManipulator; @@ -42,7 +43,7 @@ public final class InventoryMergeHandler extends AbstractMaplePacketHandler { slea.readInt(); chr.getAutobanManager().setTimestamp(2, Server.getInstance().getCurrentTimestamp(), 4); - if(!ServerConstants.USE_ITEM_SORT) { + if(!YamlConfig.config.server.USE_ITEM_SORT) { c.announce(MaplePacketCreator.enableActions()); return; } diff --git a/src/net/server/channel/handlers/InventorySortHandler.java b/src/net/server/channel/handlers/InventorySortHandler.java index c48a8d9390..5d2b32db38 100644 --- a/src/net/server/channel/handlers/InventorySortHandler.java +++ b/src/net/server/channel/handlers/InventorySortHandler.java @@ -24,6 +24,7 @@ package net.server.channel.handlers; import java.util.ArrayList; import java.util.List; +import config.YamlConfig; import net.AbstractMaplePacketHandler; import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; @@ -265,7 +266,7 @@ public final class InventorySortHandler extends AbstractMaplePacketHandler { slea.readInt(); chr.getAutobanManager().setTimestamp(3, Server.getInstance().getCurrentTimestamp(), 4); - if(!ServerConstants.USE_ITEM_SORT) { + if(!YamlConfig.config.server.USE_ITEM_SORT) { c.announce(MaplePacketCreator.enableActions()); return; } @@ -295,7 +296,7 @@ public final class InventorySortHandler extends AbstractMaplePacketHandler { } int invTypeCriteria = (MapleInventoryType.getByType(invType) == MapleInventoryType.EQUIP) ? 3 : 1; - int sortCriteria = (ServerConstants.USE_ITEM_SORT_BY_NAME == true) ? 2 : 0; + int sortCriteria = (YamlConfig.config.server.USE_ITEM_SORT_BY_NAME == true) ? 2 : 0; PairedQuicksort pq = new PairedQuicksort(itemarray, sortCriteria, invTypeCriteria); for (Item item : itemarray) { diff --git a/src/net/server/channel/handlers/MagicDamageHandler.java b/src/net/server/channel/handlers/MagicDamageHandler.java index 52778e8b12..cd562e5d63 100644 --- a/src/net/server/channel/handlers/MagicDamageHandler.java +++ b/src/net/server/channel/handlers/MagicDamageHandler.java @@ -21,6 +21,7 @@ */ package net.server.channel.handlers; +import config.YamlConfig; import server.MapleStatEffect; import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; @@ -58,7 +59,7 @@ public final class MagicDamageHandler extends AbstractDealDamageHandler { } if (chr.getMap().isDojoMap() && attack.numAttacked > 0) { - chr.setDojoEnergy(chr.getDojoEnergy() + + ServerConstants.DOJO_ENERGY_ATK); + chr.setDojoEnergy(chr.getDojoEnergy() + + YamlConfig.config.server.DOJO_ENERGY_ATK); c.announce(MaplePacketCreator.getEnergy("energy", chr.getDojoEnergy())); } diff --git a/src/net/server/channel/handlers/MoveLifeHandler.java b/src/net/server/channel/handlers/MoveLifeHandler.java index b1c52deaef..5c4581fa1f 100644 --- a/src/net/server/channel/handlers/MoveLifeHandler.java +++ b/src/net/server/channel/handlers/MoveLifeHandler.java @@ -26,6 +26,8 @@ import client.MapleClient; import java.awt.Point; import java.util.LinkedList; import java.util.List; + +import config.YamlConfig; import constants.ServerConstants; import server.life.MapleMonster; import server.life.MapleMonsterInformationProvider; @@ -156,7 +158,7 @@ public final class MoveLifeHandler extends AbstractMovementPacketHandler { } if (movementDataLength > 0) { - if (ServerConstants.USE_DEBUG_SHOW_RCVD_MVLIFE) { + if (YamlConfig.config.server.USE_DEBUG_SHOW_RCVD_MVLIFE) { System.out.println((isSkill ? "SKILL " : (isAttack ? "ATTCK " : " ")) + "castPos: " + castPos + " rawAct: " + rawActivity + " opt: " + pOption + " skillID: " + useSkillId + " skillLV: " + useSkillLevel + " " + "allowSkill: " + nextMovementCouldBeSkill + " mobMp: " + mobMp); } slea.seek(movementDataStart); diff --git a/src/net/server/channel/handlers/MultiChatHandler.java b/src/net/server/channel/handlers/MultiChatHandler.java index 8924774c32..a31c265d17 100644 --- a/src/net/server/channel/handlers/MultiChatHandler.java +++ b/src/net/server/channel/handlers/MultiChatHandler.java @@ -24,6 +24,7 @@ package net.server.channel.handlers; import client.MapleCharacter; import client.MapleClient; import client.autoban.AutobanFactory; +import config.YamlConfig; import constants.ServerConstants; import net.AbstractMaplePacketHandler; import net.server.Server; @@ -57,24 +58,24 @@ public final class MultiChatHandler extends AbstractMaplePacketHandler { World world = c.getWorldServer(); if (type == 0) { world.buddyChat(recipients, player.getId(), player.getName(), chattext); - if (ServerConstants.USE_ENABLE_CHAT_LOG) { + if (YamlConfig.config.server.USE_ENABLE_CHAT_LOG) { LogHelper.logChat(c, "Buddy", chattext); } } else if (type == 1 && player.getParty() != null) { world.partyChat(player.getParty(), chattext, player.getName()); - if (ServerConstants.USE_ENABLE_CHAT_LOG) { + if (YamlConfig.config.server.USE_ENABLE_CHAT_LOG) { LogHelper.logChat(c, "Party", chattext); } } else if (type == 2 && player.getGuildId() > 0) { Server.getInstance().guildChat(player.getGuildId(), player.getName(), player.getId(), chattext); - if (ServerConstants.USE_ENABLE_CHAT_LOG) { + if (YamlConfig.config.server.USE_ENABLE_CHAT_LOG) { LogHelper.logChat(c, "Guild", chattext); } } else if (type == 3 && player.getGuild() != null) { int allianceId = player.getGuild().getAllianceId(); if (allianceId > 0) { Server.getInstance().allianceMessage(allianceId, MaplePacketCreator.multiChat(player.getName(), chattext, 3), player.getId(), -1); - if (ServerConstants.USE_ENABLE_CHAT_LOG) { + if (YamlConfig.config.server.USE_ENABLE_CHAT_LOG) { LogHelper.logChat(c, "Ally", chattext); } } diff --git a/src/net/server/channel/handlers/NPCTalkHandler.java b/src/net/server/channel/handlers/NPCTalkHandler.java index a9165d8ee2..e9ca76240a 100644 --- a/src/net/server/channel/handlers/NPCTalkHandler.java +++ b/src/net/server/channel/handlers/NPCTalkHandler.java @@ -23,6 +23,7 @@ package net.server.channel.handlers; import client.MapleClient; import client.processor.DueyProcessor; +import config.YamlConfig; import constants.ServerConstants; import net.AbstractMaplePacketHandler; import scripting.npc.NPCScriptManager; @@ -41,7 +42,7 @@ public final class NPCTalkHandler extends AbstractMaplePacketHandler { return; } - if(currentServerTime() - c.getPlayer().getNpcCooldown() < ServerConstants.BLOCK_NPC_RACE_CONDT) { + if(currentServerTime() - c.getPlayer().getNpcCooldown() < YamlConfig.config.server.BLOCK_NPC_RACE_CONDT) { c.announce(MaplePacketCreator.enableActions()); return; } @@ -50,7 +51,7 @@ public final class NPCTalkHandler extends AbstractMaplePacketHandler { MapleMapObject obj = c.getPlayer().getMap().getMapObject(oid); if (obj instanceof MapleNPC) { MapleNPC npc = (MapleNPC) obj; - if(ServerConstants.USE_DEBUG == true) c.getPlayer().dropMessage(5, "Talking to NPC " + npc.getId()); + if(YamlConfig.config.server.USE_DEBUG == true) c.getPlayer().dropMessage(5, "Talking to NPC " + npc.getId()); if (npc.getId() == 9010009) { //is duey DueyProcessor.dueySendTalk(c, false); diff --git a/src/net/server/channel/handlers/OpenFamilyHandler.java b/src/net/server/channel/handlers/OpenFamilyHandler.java index 3cd053c8b2..242b510bb3 100644 --- a/src/net/server/channel/handlers/OpenFamilyHandler.java +++ b/src/net/server/channel/handlers/OpenFamilyHandler.java @@ -19,6 +19,7 @@ */ package net.server.channel.handlers; +import config.YamlConfig; import constants.ServerConstants; import client.MapleCharacter; import client.MapleClient; @@ -33,7 +34,7 @@ import tools.data.input.SeekableLittleEndianAccessor; public final class OpenFamilyHandler extends AbstractMaplePacketHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { - if(!ServerConstants.USE_FAMILY_SYSTEM) return; + if(!YamlConfig.config.server.USE_FAMILY_SYSTEM) return; MapleCharacter chr = c.getPlayer(); c.announce(MaplePacketCreator.getFamilyInfo(chr.getFamilyEntry())); } diff --git a/src/net/server/channel/handlers/OpenFamilyPedigreeHandler.java b/src/net/server/channel/handlers/OpenFamilyPedigreeHandler.java index e382112f40..c6a57a78d7 100644 --- a/src/net/server/channel/handlers/OpenFamilyPedigreeHandler.java +++ b/src/net/server/channel/handlers/OpenFamilyPedigreeHandler.java @@ -19,6 +19,7 @@ */ package net.server.channel.handlers; +import config.YamlConfig; import constants.ServerConstants; import client.MapleCharacter; import client.MapleClient; @@ -33,7 +34,7 @@ import tools.data.input.SeekableLittleEndianAccessor; public final class OpenFamilyPedigreeHandler extends AbstractMaplePacketHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { - if(!ServerConstants.USE_FAMILY_SYSTEM) return; + if(!YamlConfig.config.server.USE_FAMILY_SYSTEM) return; MapleCharacter target = c.getChannelServer().getPlayerStorage().getCharacterByName(slea.readMapleAsciiString()); if(target != null && target.getFamily() != null) { c.announce(MaplePacketCreator.showPedigree(target.getFamilyEntry())); diff --git a/src/net/server/channel/handlers/PartyOperationHandler.java b/src/net/server/channel/handlers/PartyOperationHandler.java index fcc1ba9da8..562cb04136 100644 --- a/src/net/server/channel/handlers/PartyOperationHandler.java +++ b/src/net/server/channel/handlers/PartyOperationHandler.java @@ -21,6 +21,7 @@ */ package net.server.channel.handlers; +import config.YamlConfig; import net.AbstractMaplePacketHandler; import net.server.world.MapleParty; import net.server.world.MaplePartyCharacter; @@ -77,11 +78,11 @@ public final class PartyOperationHandler extends AbstractMaplePacketHandler { String name = slea.readMapleAsciiString(); MapleCharacter invited = world.getPlayerStorage().getCharacterByName(name); if (invited != null) { - if(invited.getLevel() < 10 && (!ServerConstants.USE_PARTY_FOR_STARTERS || player.getLevel() >= 10)) { //min requirement is level 10 + if(invited.getLevel() < 10 && (!YamlConfig.config.server.USE_PARTY_FOR_STARTERS || player.getLevel() >= 10)) { //min requirement is level 10 c.announce(MaplePacketCreator.serverNotice(5, "The player you have invited does not meet the requirements.")); return; } - if(ServerConstants.USE_PARTY_FOR_STARTERS && invited.getLevel() >= 10 && player.getLevel() < 10) { //trying to invite high level + if(YamlConfig.config.server.USE_PARTY_FOR_STARTERS && invited.getLevel() >= 10 && player.getLevel() < 10) { //trying to invite high level c.announce(MaplePacketCreator.serverNotice(5, "The player you have invited does not meet the requirements.")); return; } diff --git a/src/net/server/channel/handlers/PetChatHandler.java b/src/net/server/channel/handlers/PetChatHandler.java index 448583b5f6..abb21c849d 100644 --- a/src/net/server/channel/handlers/PetChatHandler.java +++ b/src/net/server/channel/handlers/PetChatHandler.java @@ -23,6 +23,7 @@ package net.server.channel.handlers; import client.MapleClient; import client.autoban.AutobanFactory; +import config.YamlConfig; import constants.ServerConstants; import net.AbstractMaplePacketHandler; import tools.FilePrinter; @@ -50,7 +51,7 @@ public final class PetChatHandler extends AbstractMaplePacketHandler { return; } c.getPlayer().getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.petChat(c.getPlayer().getId(), pet, act, text), true); - if (ServerConstants.USE_ENABLE_CHAT_LOG) { + if (YamlConfig.config.server.USE_ENABLE_CHAT_LOG) { LogHelper.logChat(c, "Pet", text); } } diff --git a/src/net/server/channel/handlers/PetLootHandler.java b/src/net/server/channel/handlers/PetLootHandler.java index 26e7609ba1..c20ba61a2d 100644 --- a/src/net/server/channel/handlers/PetLootHandler.java +++ b/src/net/server/channel/handlers/PetLootHandler.java @@ -26,6 +26,7 @@ import java.util.Set; import client.MapleCharacter; import client.MapleClient; import client.inventory.MaplePet; +import config.YamlConfig; import net.AbstractMaplePacketHandler; import server.maps.MapleMapItem; import server.maps.MapleMapObject; @@ -41,7 +42,7 @@ public final class PetLootHandler extends AbstractMaplePacketHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { MapleCharacter chr = c.getPlayer(); - if(currentServerTime() - chr.getPetLootCd() < ServerConstants.PET_LOOT_UPON_ATTACK) { + if(currentServerTime() - chr.getPetLootCd() < YamlConfig.config.server.PET_LOOT_UPON_ATTACK) { c.announce(MaplePacketCreator.enableActions()); return; } diff --git a/src/net/server/channel/handlers/PlayerInteractionHandler.java b/src/net/server/channel/handlers/PlayerInteractionHandler.java index 9daa2e91bd..a3d98705b6 100644 --- a/src/net/server/channel/handlers/PlayerInteractionHandler.java +++ b/src/net/server/channel/handlers/PlayerInteractionHandler.java @@ -29,6 +29,7 @@ import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; import client.inventory.manipulator.MapleInventoryManipulator; import client.inventory.manipulator.MapleKarmaManipulator; +import config.YamlConfig; import constants.ItemConstants; import constants.ServerConstants; @@ -369,7 +370,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { MaplePlayerShop shop = chr.getPlayerShop(); MapleHiredMerchant merchant = chr.getHiredMerchant(); if (shop != null && shop.isOwner(chr)) { - if(ServerConstants.USE_ERASE_PERMIT_ON_OPENSHOP) { + if(YamlConfig.config.server.USE_ERASE_PERMIT_ON_OPENSHOP) { try { MapleInventoryManipulator.removeById(c, MapleInventoryType.CASH, shop.getItemId(), 1, true, false); } catch(RuntimeException re) {} // fella does not have a player shop permit... @@ -642,7 +643,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { c.announce(MaplePacketCreator.updateHiredMerchant(merchant, chr)); - if (ServerConstants.USE_ENFORCE_MERCHANT_SAVE) { + if (YamlConfig.config.server.USE_ENFORCE_MERCHANT_SAVE) { chr.saveCharToDB(false); } diff --git a/src/net/server/channel/handlers/PlayerLoggedinHandler.java b/src/net/server/channel/handlers/PlayerLoggedinHandler.java index 05cf6b391e..a4ab1d0221 100644 --- a/src/net/server/channel/handlers/PlayerLoggedinHandler.java +++ b/src/net/server/channel/handlers/PlayerLoggedinHandler.java @@ -29,6 +29,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map.Entry; +import config.YamlConfig; import net.AbstractMaplePacketHandler; import net.server.PlayerBuffValueHolder; import net.server.Server; @@ -233,7 +234,7 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { c.announce(MaplePacketCreator.getCharInfo(player)); if (!player.isHidden()) { - if(player.isGM() && ServerConstants.USE_AUTOHIDE_GM) { + if(player.isGM() && YamlConfig.config.server.USE_AUTOHIDE_GM) { player.toggleHide(true); } } @@ -402,7 +403,7 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { if (player.getMap().getHPDec() > 0) player.resetHpDecreaseTask(); player.resetPlayerRates(); - if(ServerConstants.USE_ADD_RATES_BY_LEVEL == true) player.setPlayerRates(); + if(YamlConfig.config.server.USE_ADD_RATES_BY_LEVEL == true) player.setPlayerRates(); player.setWorldRates(); player.updateCouponRates(); @@ -425,7 +426,7 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { } } - if (ServerConstants.USE_NPCS_SCRIPTABLE) { + if (YamlConfig.config.server.USE_NPCS_SCRIPTABLE) { c.announce(MaplePacketCreator.setNPCScriptable(ScriptableNPCConstants.SCRIPTABLE_NPCS)); } diff --git a/src/net/server/channel/handlers/RangedAttackHandler.java b/src/net/server/channel/handlers/RangedAttackHandler.java index b432d75e1e..5b371a2f1e 100644 --- a/src/net/server/channel/handlers/RangedAttackHandler.java +++ b/src/net/server/channel/handlers/RangedAttackHandler.java @@ -22,6 +22,7 @@ along with this program. If not, see . package net.server.channel.handlers; import client.inventory.manipulator.MapleInventoryManipulator; +import config.YamlConfig; import server.MapleItemInformationProvider; import server.MapleStatEffect; import tools.MaplePacketCreator; @@ -70,7 +71,7 @@ public final class RangedAttackHandler extends AbstractDealDamageHandler { } if (chr.getMap().isDojoMap() && attack.numAttacked > 0) { - chr.setDojoEnergy(chr.getDojoEnergy() + ServerConstants.DOJO_ENERGY_ATK); + chr.setDojoEnergy(chr.getDojoEnergy() + YamlConfig.config.server.DOJO_ENERGY_ATK); c.announce(MaplePacketCreator.getEnergy("energy", chr.getDojoEnergy())); } diff --git a/src/net/server/channel/handlers/SpecialMoveHandler.java b/src/net/server/channel/handlers/SpecialMoveHandler.java index aa0aeb1fa0..16891585a2 100644 --- a/src/net/server/channel/handlers/SpecialMoveHandler.java +++ b/src/net/server/channel/handlers/SpecialMoveHandler.java @@ -23,6 +23,7 @@ package net.server.channel.handlers; import java.awt.Point; +import config.YamlConfig; import net.AbstractMaplePacketHandler; import server.MapleStatEffect; import server.life.MapleMonster; @@ -81,7 +82,7 @@ public final class SpecialMoveHandler extends AbstractMaplePacketHandler { return; } else if (skillid != Corsair.BATTLE_SHIP) { int cooldownTime = effect.getCooldown(); - if(MapleStatEffect.isHerosWill(skillid) && ServerConstants.USE_FAST_REUSE_HERO_WILL) { + if(MapleStatEffect.isHerosWill(skillid) && YamlConfig.config.server.USE_FAST_REUSE_HERO_WILL) { cooldownTime /= 60; } diff --git a/src/net/server/channel/handlers/SpouseChatHandler.java b/src/net/server/channel/handlers/SpouseChatHandler.java index 09ec66a389..9fe17fc769 100644 --- a/src/net/server/channel/handlers/SpouseChatHandler.java +++ b/src/net/server/channel/handlers/SpouseChatHandler.java @@ -23,6 +23,7 @@ package net.server.channel.handlers; import client.MapleCharacter; import client.MapleClient; +import config.YamlConfig; import constants.ServerConstants; import net.AbstractMaplePacketHandler; import tools.LogHelper; @@ -41,7 +42,7 @@ public final class SpouseChatHandler extends AbstractMaplePacketHandler { if (spouse != null) { spouse.announce(MaplePacketCreator.OnCoupleMessage(c.getPlayer().getName(), msg, true)); c.announce(MaplePacketCreator.OnCoupleMessage(c.getPlayer().getName(), msg, true)); - if (ServerConstants.USE_ENABLE_CHAT_LOG) { + if (YamlConfig.config.server.USE_ENABLE_CHAT_LOG) { LogHelper.logChat(c, "Spouse", msg); } } else { diff --git a/src/net/server/channel/handlers/TakeDamageHandler.java b/src/net/server/channel/handlers/TakeDamageHandler.java index 7d8ca471b7..dfe19296e9 100644 --- a/src/net/server/channel/handlers/TakeDamageHandler.java +++ b/src/net/server/channel/handlers/TakeDamageHandler.java @@ -31,6 +31,7 @@ import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; import client.status.MonsterStatus; import client.status.MonsterStatusEffect; +import config.YamlConfig; import constants.GameConstants; import constants.ItemConstants; import constants.ServerConstants; @@ -197,7 +198,7 @@ public final class TakeDamageHandler extends AbstractMaplePacketHandler { } //in dojo player cannot use pot, so deadly attacks should be turned off as well - if(is_deadly && chr.getMap().isDojoMap() && !ServerConstants.USE_DEADLY_DOJO) { + if(is_deadly && chr.getMap().isDojoMap() && !YamlConfig.config.server.USE_DEADLY_DOJO) { damage = 0; mpattack = 0; } @@ -282,7 +283,7 @@ public final class TakeDamageHandler extends AbstractMaplePacketHandler { map.broadcastGMMessage(chr, MaplePacketCreator.damagePlayer(damagefrom, monsteridfrom, chr.getId(), damage, fake, direction, is_pgmr, pgmr, is_pg, oid, pos_x, pos_y), false); } if (GameConstants.isDojo(map.getId())) { - chr.setDojoEnergy(chr.getDojoEnergy() + ServerConstants.DOJO_ENERGY_DMG); + chr.setDojoEnergy(chr.getDojoEnergy() + YamlConfig.config.server.DOJO_ENERGY_DMG); c.announce(MaplePacketCreator.getEnergy("energy", chr.getDojoEnergy())); } diff --git a/src/net/server/channel/handlers/TransferNameHandler.java b/src/net/server/channel/handlers/TransferNameHandler.java index 426a37a5ba..0feae06b18 100644 --- a/src/net/server/channel/handlers/TransferNameHandler.java +++ b/src/net/server/channel/handlers/TransferNameHandler.java @@ -29,6 +29,7 @@ import java.sql.Connection; import client.MapleCharacter; import client.MapleClient; +import config.YamlConfig; import constants.ServerConstants; import net.AbstractMaplePacketHandler; import tools.DatabaseConnection; @@ -51,7 +52,7 @@ public final class TransferNameHandler extends AbstractMaplePacketHandler { c.announce(MaplePacketCreator.enableActions()); return; } - if(!ServerConstants.ALLOW_CASHSHOP_NAME_CHANGE) { + if(!YamlConfig.config.server.ALLOW_CASHSHOP_NAME_CHANGE) { c.announce(MaplePacketCreator.sendNameTransferRules(4)); return; } @@ -73,7 +74,7 @@ public final class TransferNameHandler extends AbstractMaplePacketHandler { if(completedTimestamp == null) { //has pending name request c.announce(MaplePacketCreator.sendNameTransferRules(1)); return; - } else if(completedTimestamp.getTime() + ServerConstants.NAME_CHANGE_COOLDOWN > System.currentTimeMillis()) { + } else if(completedTimestamp.getTime() + YamlConfig.config.server.NAME_CHANGE_COOLDOWN > System.currentTimeMillis()) { c.announce(MaplePacketCreator.sendNameTransferRules(3)); return; }; diff --git a/src/net/server/channel/handlers/TransferWorldHandler.java b/src/net/server/channel/handlers/TransferWorldHandler.java index d822c247bb..d6f46343fb 100644 --- a/src/net/server/channel/handlers/TransferWorldHandler.java +++ b/src/net/server/channel/handlers/TransferWorldHandler.java @@ -28,6 +28,7 @@ import java.sql.Timestamp; import client.MapleCharacter; import client.MapleClient; +import config.YamlConfig; import constants.ServerConstants; import net.AbstractMaplePacketHandler; import net.server.Server; @@ -52,7 +53,7 @@ public final class TransferWorldHandler extends AbstractMaplePacketHandler { return; } MapleCharacter chr = c.getPlayer(); - if(!ServerConstants.ALLOW_CASHSHOP_WORLD_TRANSFER || Server.getInstance().getWorldsSize() <= 1) { + if(!YamlConfig.config.server.ALLOW_CASHSHOP_WORLD_TRANSFER || Server.getInstance().getWorldsSize() <= 1) { c.announce(MaplePacketCreator.sendWorldTransferRules(9, c)); return; } @@ -70,7 +71,7 @@ public final class TransferWorldHandler extends AbstractMaplePacketHandler { if(completedTimestamp == null) { //has pending world transfer c.announce(MaplePacketCreator.sendWorldTransferRules(6, c)); return; - } else if(completedTimestamp.getTime() + ServerConstants.WORLD_TRANSFER_COOLDOWN > System.currentTimeMillis()) { + } else if(completedTimestamp.getTime() + YamlConfig.config.server.WORLD_TRANSFER_COOLDOWN > System.currentTimeMillis()) { c.announce(MaplePacketCreator.sendWorldTransferRules(7, c)); return; }; diff --git a/src/net/server/channel/handlers/UseCashItemHandler.java b/src/net/server/channel/handlers/UseCashItemHandler.java index 4be8c93fc0..f88582c9a3 100644 --- a/src/net/server/channel/handlers/UseCashItemHandler.java +++ b/src/net/server/channel/handlers/UseCashItemHandler.java @@ -38,6 +38,7 @@ import client.inventory.manipulator.MapleKarmaManipulator; import client.processor.AssignAPProcessor; import client.processor.AssignSPProcessor; import client.processor.DueyProcessor; +import config.YamlConfig; import constants.GameConstants; import constants.ItemConstants; import constants.ServerConstants; @@ -373,7 +374,7 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler { } else if (itemType == 523) { int itemid = slea.readInt(); - if(!ServerConstants.USE_ENFORCE_ITEM_SUGGESTION) c.getWorldServer().addOwlItemSearch(itemid); + if(!YamlConfig.config.server.USE_ENFORCE_ITEM_SUGGESTION) c.getWorldServer().addOwlItemSearch(itemid); player.setOwlSearch(itemid); List> hmsAvailable = c.getWorldServer().getAvailableItemBundles(itemid); if(!hmsAvailable.isEmpty()) remove(c, position, itemId); diff --git a/src/net/server/channel/handlers/UseItemHandler.java b/src/net/server/channel/handlers/UseItemHandler.java index 54c03dd1ed..182aef2062 100644 --- a/src/net/server/channel/handlers/UseItemHandler.java +++ b/src/net/server/channel/handlers/UseItemHandler.java @@ -26,6 +26,7 @@ import client.MapleClient; import client.MapleDisease; import client.inventory.Item; import client.inventory.MapleInventoryType; +import config.YamlConfig; import constants.ItemConstants; import constants.ServerConstants; import net.AbstractMaplePacketHandler; @@ -77,7 +78,7 @@ public final class UseItemHandler extends AbstractMaplePacketHandler { long banTime = currentServerTime(); if (ii.getItemEffect(toUse.getItemId()).applyTo(chr)) { - if(ServerConstants.USE_BANISHABLE_TOWN_SCROLL) { + if(YamlConfig.config.server.USE_BANISHABLE_TOWN_SCROLL) { chr.setBanishPlayerData(banMap, banSp, banTime); } diff --git a/src/net/server/channel/handlers/WeddingHandler.java b/src/net/server/channel/handlers/WeddingHandler.java index 1dae1aa6e6..19ef488948 100644 --- a/src/net/server/channel/handlers/WeddingHandler.java +++ b/src/net/server/channel/handlers/WeddingHandler.java @@ -14,6 +14,7 @@ import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; import client.inventory.manipulator.MapleInventoryManipulator; import client.inventory.manipulator.MapleKarmaManipulator; +import config.YamlConfig; import constants.ItemConstants; import constants.ServerConstants; import net.AbstractMaplePacketHandler; @@ -50,7 +51,7 @@ public final class WeddingHandler extends AbstractMaplePacketHandler { String groomWishlistProp = "giftedItem" + (groomWishlist ? "G" : "B") + chr.getId(); int giftCount = marriage.getIntProperty(groomWishlistProp); - if (giftCount < ServerConstants.WEDDING_GIFT_LIMIT) { + if (giftCount < YamlConfig.config.server.WEDDING_GIFT_LIMIT) { int cid = marriage.getIntProperty(groomWishlist ? "groomId" : "brideId"); if (chr.getId() != cid) { // cannot gift yourself MapleCharacter spouse = marriage.getPlayerById(cid); @@ -69,7 +70,7 @@ public final class WeddingHandler extends AbstractMaplePacketHandler { marriage.addGiftItem(groomWishlist, newItem); MapleInventoryManipulator.removeFromSlot(c, type, slot, quantity, false, false); - if (ServerConstants.USE_ENFORCE_MERCHANT_SAVE) chr.saveCharToDB(false); + if (YamlConfig.config.server.USE_ENFORCE_MERCHANT_SAVE) chr.saveCharToDB(false); marriage.saveGiftItemsToDb(c, groomWishlist, cid); MapleKarmaManipulator.toggleKarmaFlagToUntradeable(newItem); diff --git a/src/net/server/channel/handlers/WhisperHandler.java b/src/net/server/channel/handlers/WhisperHandler.java index 6126ae5958..2c7dded0cf 100644 --- a/src/net/server/channel/handlers/WhisperHandler.java +++ b/src/net/server/channel/handlers/WhisperHandler.java @@ -25,6 +25,7 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import config.YamlConfig; import constants.ServerConstants; import net.AbstractMaplePacketHandler; import net.server.world.World; @@ -62,7 +63,7 @@ public final class WhisperHandler extends AbstractMaplePacketHandler { } if (player != null) { player.getClient().announce(MaplePacketCreator.getWhisper(c.getPlayer().getName(), c.getChannel(), text)); - if (ServerConstants.USE_ENABLE_CHAT_LOG) { + if (YamlConfig.config.server.USE_ENABLE_CHAT_LOG) { LogHelper.logChat(c, "Whisper To " + player.getName(), text); } if(player.isHidden() && player.gmLevel() >= c.getPlayer().gmLevel()) { @@ -74,7 +75,7 @@ public final class WhisperHandler extends AbstractMaplePacketHandler { World world = c.getWorldServer(); if (world.isConnected(recipient)) { world.whisper(c.getPlayer().getName(), recipient, c.getChannel(), text); - if (ServerConstants.USE_ENABLE_CHAT_LOG) { + if (YamlConfig.config.server.USE_ENABLE_CHAT_LOG) { LogHelper.logChat(c, "Whisper To " + recipient, text); } player = world.getPlayerStorage().getCharacterByName(recipient); diff --git a/src/net/server/channel/worker/BaseScheduler.java b/src/net/server/channel/worker/BaseScheduler.java index 5e47add6b5..248e66cac5 100644 --- a/src/net/server/channel/worker/BaseScheduler.java +++ b/src/net/server/channel/worker/BaseScheduler.java @@ -19,6 +19,7 @@ */ package net.server.channel.worker; +import config.YamlConfig; import constants.ServerConstants; import java.util.Collections; import java.util.HashMap; @@ -101,7 +102,7 @@ public abstract class BaseScheduler { if(registeredEntries.isEmpty()) { idleProcs++; - if(idleProcs >= ServerConstants.MOB_STATUS_MONITOR_LIFE) { + if(idleProcs >= YamlConfig.config.server.MOB_STATUS_MONITOR_LIFE) { if(schedulerTask != null) { schedulerTask.cancel(false); schedulerTask = null; @@ -147,7 +148,7 @@ public abstract class BaseScheduler { try { idleProcs = 0; if(schedulerTask == null) { - schedulerTask = TimerManager.getInstance().register(monitorTask, ServerConstants.MOB_STATUS_MONITOR_PROC, ServerConstants.MOB_STATUS_MONITOR_PROC); + schedulerTask = TimerManager.getInstance().register(monitorTask, YamlConfig.config.server.MOB_STATUS_MONITOR_PROC, YamlConfig.config.server.MOB_STATUS_MONITOR_PROC); } registeredEntries.put(key, new Pair<>(removalAction, Server.getInstance().getCurrentTime() + duration)); diff --git a/src/net/server/channel/worker/MobStatusScheduler.java b/src/net/server/channel/worker/MobStatusScheduler.java index 42dd021026..434a49a4c4 100644 --- a/src/net/server/channel/worker/MobStatusScheduler.java +++ b/src/net/server/channel/worker/MobStatusScheduler.java @@ -20,6 +20,7 @@ package net.server.channel.worker; import client.status.MonsterStatusEffect; +import config.YamlConfig; import constants.ServerConstants; import java.util.HashMap; import java.util.ArrayList; @@ -45,7 +46,7 @@ public class MobStatusScheduler extends BaseScheduler { protected MobStatusOvertimeEntry(int delay, Runnable run) { procCount = 0; - procLimit = (int)Math.ceil((float) delay / ServerConstants.MOB_STATUS_MONITOR_PROC); + procLimit = (int)Math.ceil((float) delay / YamlConfig.config.server.MOB_STATUS_MONITOR_PROC); r = run; } diff --git a/src/net/server/coordinator/LoginStorage.java b/src/net/server/coordinator/LoginStorage.java index 8c889a6a1b..377bd113ee 100644 --- a/src/net/server/coordinator/LoginStorage.java +++ b/src/net/server/coordinator/LoginStorage.java @@ -19,6 +19,7 @@ */ package net.server.coordinator; +import config.YamlConfig; import constants.ServerConstants; import java.util.Collections; import java.util.LinkedList; @@ -40,8 +41,8 @@ public class LoginStorage { List accHist = loginHistory.putIfAbsent(accountId, new LinkedList()); if (accHist != null) { synchronized (accHist) { - if (accHist.size() > ServerConstants.MAX_ACCOUNT_LOGIN_ATTEMPT) { - long blockExpiration = Server.getInstance().getCurrentTime() + ServerConstants.LOGIN_ATTEMPT_DURATION; + if (accHist.size() > YamlConfig.config.server.MAX_ACCOUNT_LOGIN_ATTEMPT) { + long blockExpiration = Server.getInstance().getCurrentTime() + YamlConfig.config.server.LOGIN_ATTEMPT_DURATION; Collections.fill(accHist, blockExpiration); return false; @@ -52,7 +53,7 @@ public class LoginStorage { } synchronized (accHist) { - accHist.add(Server.getInstance().getCurrentTime() + ServerConstants.LOGIN_ATTEMPT_DURATION); + accHist.add(Server.getInstance().getCurrentTime() + YamlConfig.config.server.LOGIN_ATTEMPT_DURATION); return true; } } diff --git a/src/net/server/coordinator/MapleEventRecallCoordinator.java b/src/net/server/coordinator/MapleEventRecallCoordinator.java index e790cce155..6acb64be38 100644 --- a/src/net/server/coordinator/MapleEventRecallCoordinator.java +++ b/src/net/server/coordinator/MapleEventRecallCoordinator.java @@ -19,6 +19,7 @@ */ package net.server.coordinator; +import config.YamlConfig; import constants.ServerConstants; import scripting.event.EventInstanceManager; import java.util.LinkedList; @@ -50,7 +51,7 @@ public class MapleEventRecallCoordinator { } public void storeEventInstance(int characterId, EventInstanceManager eim) { - if (ServerConstants.USE_ENABLE_RECALL_EVENT && isRecallableEvent(eim)) { + if (YamlConfig.config.server.USE_ENABLE_RECALL_EVENT && isRecallableEvent(eim)) { eventHistory.put(characterId, eim); } } diff --git a/src/net/server/coordinator/MapleLoginBypassCoordinator.java b/src/net/server/coordinator/MapleLoginBypassCoordinator.java index 7c21df8dec..cb90d84588 100644 --- a/src/net/server/coordinator/MapleLoginBypassCoordinator.java +++ b/src/net/server/coordinator/MapleLoginBypassCoordinator.java @@ -19,6 +19,7 @@ */ package net.server.coordinator; +import config.YamlConfig; import constants.ServerConstants; import java.util.HashSet; import java.util.LinkedList; @@ -59,7 +60,7 @@ public class MapleLoginBypassCoordinator { } public void registerLoginBypassEntry(String nibbleHwid, int accId, boolean pic) { - long expireTime = (pic ? ServerConstants.BYPASS_PIC_EXPIRATION : ServerConstants.BYPASS_PIN_EXPIRATION); + long expireTime = (pic ? YamlConfig.config.server.BYPASS_PIC_EXPIRATION : YamlConfig.config.server.BYPASS_PIN_EXPIRATION); if (expireTime > 0) { Pair entry = new Pair<>(nibbleHwid, accId); expireTime = Server.getInstance().getCurrentTime() + expireTime * 60 * 1000; diff --git a/src/net/server/coordinator/MapleMonsterAggroCoordinator.java b/src/net/server/coordinator/MapleMonsterAggroCoordinator.java index dd45a07339..06a163d0d9 100644 --- a/src/net/server/coordinator/MapleMonsterAggroCoordinator.java +++ b/src/net/server/coordinator/MapleMonsterAggroCoordinator.java @@ -30,6 +30,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Set; +import config.YamlConfig; import constants.ServerConstants; import client.MapleCharacter; import java.util.concurrent.ScheduledFuture; @@ -101,19 +102,19 @@ public class MapleMonsterAggroCoordinator { runAggroUpdate(1); runSortLeadingCharactersAggro(); } - }, ServerConstants.MOB_STATUS_AGGRO_INTERVAL, ServerConstants.MOB_STATUS_AGGRO_INTERVAL); + }, YamlConfig.config.server.MOB_STATUS_AGGRO_INTERVAL, YamlConfig.config.server.MOB_STATUS_AGGRO_INTERVAL); } finally { idleLock.unlock(); } - int timeDelta = (int) Math.ceil((Server.getInstance().getCurrentTime() - lastStopTime) / ServerConstants.MOB_STATUS_AGGRO_INTERVAL); + int timeDelta = (int) Math.ceil((Server.getInstance().getCurrentTime() - lastStopTime) / YamlConfig.config.server.MOB_STATUS_AGGRO_INTERVAL); if (timeDelta > 0) { runAggroUpdate(timeDelta); } } private static void updateEntryExpiration(PlayerAggroEntry pae) { - pae.toNextUpdate = (int) Math.ceil((120000L / ServerConstants.MOB_STATUS_AGGRO_INTERVAL) / Math.pow(2, pae.expireStreak + pae.currentDamageInstances)); + pae.toNextUpdate = (int) Math.ceil((120000L / YamlConfig.config.server.MOB_STATUS_AGGRO_INTERVAL) / Math.pow(2, pae.expireStreak + pae.currentDamageInstances)); } private static void insertEntryDamage(PlayerAggroEntry pae, int damage) { @@ -318,7 +319,7 @@ public class MapleMonsterAggroCoordinator { if (chr != null) { if (player.getId() == pae.cid) { return true; - } else if (pae.updateStreak < ServerConstants.MOB_STATUS_AGGRO_PERSISTENCE && chr.isAlive()) { // verifies currently leading players activity + } else if (pae.updateStreak < YamlConfig.config.server.MOB_STATUS_AGGRO_PERSISTENCE && chr.isAlive()) { // verifies currently leading players activity return false; } } diff --git a/src/net/server/coordinator/MaplePartySearchCoordinator.java b/src/net/server/coordinator/MaplePartySearchCoordinator.java index 3363ddf562..866f76ac65 100644 --- a/src/net/server/coordinator/MaplePartySearchCoordinator.java +++ b/src/net/server/coordinator/MaplePartySearchCoordinator.java @@ -21,6 +21,7 @@ package net.server.coordinator; import client.MapleCharacter; import client.MapleJob; +import config.YamlConfig; import constants.ServerConstants; import java.io.File; import net.server.world.MapleParty; @@ -370,7 +371,7 @@ public class MaplePartySearchCoordinator { } else { LeaderSearchMetadata settings = searchSettings.get(leader.getId()); if (settings != null) { - if (settings.reentryCount < ServerConstants.PARTY_SEARCH_REENTRY_LIMIT) { + if (settings.reentryCount < YamlConfig.config.server.PARTY_SEARCH_REENTRY_LIMIT) { settings.reentryCount += 1; recalledLeaders.add(leader); } else { @@ -413,7 +414,7 @@ public class MaplePartySearchCoordinator { if (leader.isLoggedinWorld()) { if (settings != null) { recycledLeaders.add(new Pair<>(leader, settings)); - if (ServerConstants.USE_DEBUG && leader.isGM()) leader.dropMessage(5, "Your Party Search token session is now on waiting queue for up to 7 minutes, to get it working right away please stop your Party Search and retry again later."); + if (YamlConfig.config.server.USE_DEBUG && leader.isGM()) leader.dropMessage(5, "Your Party Search token session is now on waiting queue for up to 7 minutes, to get it working right away please stop your Party Search and retry again later."); } else { leader.dropMessage(5, "Your Party Search token session expired, please stop your Party Search and retry again later."); } diff --git a/src/net/server/coordinator/MapleSessionCoordinator.java b/src/net/server/coordinator/MapleSessionCoordinator.java index 1b3ad471ae..f9e30e1f02 100644 --- a/src/net/server/coordinator/MapleSessionCoordinator.java +++ b/src/net/server/coordinator/MapleSessionCoordinator.java @@ -21,6 +21,7 @@ package net.server.coordinator; import client.MapleCharacter; import client.MapleClient; +import config.YamlConfig; import constants.ServerConstants; import net.server.Server; @@ -163,8 +164,8 @@ public class MapleSessionCoordinator { hwidCount++; } } - - if (hwidCount < ServerConstants.MAX_ALLOWED_ACCOUNT_HWID) { + + if (hwidCount < YamlConfig.config.server.MAX_ALLOWED_ACCOUNT_HWID) { registerAccessAccount(con, remoteHwid, accountId); return true; } @@ -174,15 +175,15 @@ public class MapleSessionCoordinator { } catch (SQLException ex) { ex.printStackTrace(); } - + return false; } - + private static boolean attemptAccessAccount(String nibbleHwid, int accountId, boolean routineCheck) { try { Connection con = DatabaseConnection.getConnection(); int hwidCount = 0; - + try (PreparedStatement ps = con.prepareStatement("SELECT SQL_CACHE * FROM hwidaccounts WHERE accountid = ?")) { ps.setInt(1, accountId); try (ResultSet rs = ps.executeQuery()) { @@ -191,19 +192,19 @@ public class MapleSessionCoordinator { if (rsHwid.endsWith(nibbleHwid)) { if (!routineCheck) { // better update HWID relevance as soon as the login is authenticated - + int loginRelevance = rs.getInt("relevance"); updateAccessAccount(con, rsHwid, accountId, loginRelevance); } - + return true; } - + hwidCount++; } } - - if (hwidCount < ServerConstants.MAX_ALLOWED_ACCOUNT_HWID) { + + if (hwidCount < YamlConfig.config.server.MAX_ALLOWED_ACCOUNT_HWID) { return true; } } finally { @@ -212,25 +213,25 @@ public class MapleSessionCoordinator { } catch (SQLException ex) { ex.printStackTrace(); } - + return false; } - + private Lock getCoodinatorLock(String remoteHost) { return poolLock.get(Math.abs(remoteHost.hashCode()) % 100); } - + public static String getSessionRemoteAddress(IoSession session) { return (String) session.getAttribute(MapleClient.CLIENT_REMOTE_ADDRESS); } - + private static MapleClient getSessionClient(IoSession session) { return (MapleClient) session.getAttribute(MapleClient.CLIENT_KEY); } - + public void updateOnlineSession(IoSession session) { MapleClient client = getSessionClient(session); - + if (client != null) { int accountId = client.getAccID(); MapleClient ingameClient = onlineClients.get(accountId); @@ -241,13 +242,13 @@ public class MapleSessionCoordinator { onlineClients.put(accountId, client); } } - + public boolean canStartLoginSession(IoSession session) { - if (!ServerConstants.DETERRED_MULTICLIENT) return true; - + if (!YamlConfig.config.server.DETERRED_MULTICLIENT) return true; + String remoteHost = getSessionRemoteAddress(session); Lock lock = getCoodinatorLock(remoteHost); - + try { int tries = 0; while (true) { @@ -256,19 +257,19 @@ public class MapleSessionCoordinator { if (pooledRemoteHosts.contains(remoteHost)) { return false; } - + pooledRemoteHosts.add(remoteHost); } finally { lock.unlock(); } - + break; } else { if(tries == 2) { return true; } tries++; - + Thread.sleep(1777); } } @@ -276,7 +277,7 @@ public class MapleSessionCoordinator { e.printStackTrace(); return true; } - + try { String knownHwid = cachedHostHwids.get(remoteHost); if (knownHwid != null) { @@ -284,15 +285,15 @@ public class MapleSessionCoordinator { return false; } } - + if (loginRemoteHosts.containsKey(remoteHost)) { return false; } - + Set lrh = new HashSet<>(2); lrh.add(session); loginRemoteHosts.put(remoteHost, lrh); - + return true; } finally { lock.lock(); @@ -303,7 +304,7 @@ public class MapleSessionCoordinator { } } } - + public void closeLoginSession(IoSession session) { String remoteHost = getSessionRemoteAddress(session); Set lrh = loginRemoteHosts.get(remoteHost); @@ -313,15 +314,15 @@ public class MapleSessionCoordinator { loginRemoteHosts.remove(remoteHost); } } - + String nibbleHwid = (String) session.removeAttribute(MapleClient.CLIENT_NIBBLEHWID); if (nibbleHwid != null) { onlineRemoteHwids.remove(nibbleHwid); - + MapleClient client = getSessionClient(session); if (client != null) { MapleClient loggedClient = onlineClients.get(client.getAccID()); - + // do not remove an online game session here, only login session if (loggedClient != null && loggedClient.getSessionId() == client.getSessionId()) { onlineClients.remove(client.getAccID()); @@ -329,16 +330,16 @@ public class MapleSessionCoordinator { } } } - + public AntiMulticlientResult attemptLoginSession(IoSession session, String nibbleHwid, int accountId, boolean routineCheck) { - if (!ServerConstants.DETERRED_MULTICLIENT) { + if (!YamlConfig.config.server.DETERRED_MULTICLIENT) { session.setAttribute(MapleClient.CLIENT_NIBBLEHWID, nibbleHwid); return AntiMulticlientResult.SUCCESS; } - + String remoteHost = getSessionRemoteAddress(session); Lock lock = getCoodinatorLock(remoteHost); - + try { int tries = 0; while (true) { @@ -347,19 +348,19 @@ public class MapleSessionCoordinator { if (pooledRemoteHosts.contains(remoteHost)) { return AntiMulticlientResult.REMOTE_PROCESSING; } - + pooledRemoteHosts.add(remoteHost); } finally { lock.unlock(); } - + break; } else { if(tries == 2) { return AntiMulticlientResult.COORDINATOR_ERROR; } tries++; - + Thread.sleep(1777); } } @@ -367,12 +368,12 @@ public class MapleSessionCoordinator { e.printStackTrace(); return AntiMulticlientResult.COORDINATOR_ERROR; } - + try { if (!loginStorage.registerLogin(accountId)) { return AntiMulticlientResult.MANY_ACCOUNT_ATTEMPTS; } - + if (!routineCheck) { if (onlineRemoteHwids.contains(nibbleHwid)) { return AntiMulticlientResult.REMOTE_LOGGEDIN; @@ -381,7 +382,7 @@ public class MapleSessionCoordinator { if (!attemptAccessAccount(nibbleHwid, accountId, routineCheck)) { return AntiMulticlientResult.REMOTE_REACHED_LIMIT; } - + session.setAttribute(MapleClient.CLIENT_NIBBLEHWID, nibbleHwid); onlineRemoteHwids.add(nibbleHwid); } else { @@ -389,7 +390,7 @@ public class MapleSessionCoordinator { return AntiMulticlientResult.REMOTE_REACHED_LIMIT; } } - + return AntiMulticlientResult.SUCCESS; } finally { lock.lock(); @@ -400,10 +401,10 @@ public class MapleSessionCoordinator { } } } - + public AntiMulticlientResult attemptGameSession(IoSession session, int accountId, String remoteHwid) { String remoteHost = getSessionRemoteAddress(session); - if (!ServerConstants.DETERRED_MULTICLIENT) { + if (!YamlConfig.config.server.DETERRED_MULTICLIENT) { associateRemoteHostHwid(remoteHost, remoteHwid); return AntiMulticlientResult.SUCCESS; } diff --git a/src/net/server/coordinator/matchchecker/listener/MatchCheckerGuildCreation.java b/src/net/server/coordinator/matchchecker/listener/MatchCheckerGuildCreation.java index ec15535e8d..e5a481f296 100644 --- a/src/net/server/coordinator/matchchecker/listener/MatchCheckerGuildCreation.java +++ b/src/net/server/coordinator/matchchecker/listener/MatchCheckerGuildCreation.java @@ -20,6 +20,7 @@ package net.server.coordinator.matchchecker.listener; import client.MapleCharacter; +import config.YamlConfig; import constants.GameConstants; import constants.ServerConstants; import net.server.coordinator.matchchecker.AbstractMatchCheckerListener; @@ -103,8 +104,8 @@ public class MatchCheckerGuildCreation implements MatchCheckerListenerRecipe { return; } } - if (leader.getMeso() < ServerConstants.CREATE_GUILD_COST) { - leader.dropMessage(1, "You do not have " + GameConstants.numberWithCommas(ServerConstants.CREATE_GUILD_COST) + " mesos to create a Guild."); + if (leader.getMeso() < YamlConfig.config.server.CREATE_GUILD_COST) { + leader.dropMessage(1, "You do not have " + GameConstants.numberWithCommas(YamlConfig.config.server.CREATE_GUILD_COST) + " mesos to create a Guild."); broadcastGuildCreationDismiss(matchPlayers); return; } @@ -115,7 +116,7 @@ public class MatchCheckerGuildCreation implements MatchCheckerListenerRecipe { broadcastGuildCreationDismiss(matchPlayers); return; } - leader.gainMeso(-ServerConstants.CREATE_GUILD_COST, true, false, true); + leader.gainMeso(-YamlConfig.config.server.CREATE_GUILD_COST, true, false, true); leader.getMGC().setGuildId(gid); MapleGuild guild = Server.getInstance().getGuild(leader.getGuildId(), leader.getWorld(), leader); // initialize guild structure diff --git a/src/net/server/guild/MapleGuild.java b/src/net/server/guild/MapleGuild.java index 7a9cffa009..c4776c2f1c 100644 --- a/src/net/server/guild/MapleGuild.java +++ b/src/net/server/guild/MapleGuild.java @@ -23,6 +23,7 @@ package net.server.guild; import client.MapleCharacter; import client.MapleClient; +import config.YamlConfig; import constants.ServerConstants; import java.sql.Connection; @@ -838,10 +839,10 @@ public class MapleGuild { } public static int getIncreaseGuildCost(int size) { - int cost = ServerConstants.EXPAND_GUILD_BASE_COST + Math.max(0, (size - 15) / 5) * ServerConstants.EXPAND_GUILD_TIER_COST; + int cost = YamlConfig.config.server.EXPAND_GUILD_BASE_COST + Math.max(0, (size - 15) / 5) * YamlConfig.config.server.EXPAND_GUILD_TIER_COST; if (size > 30) { - return Math.min(ServerConstants.EXPAND_GUILD_MAX_COST, Math.max(cost, 5000000)); + return Math.min(YamlConfig.config.server.EXPAND_GUILD_MAX_COST, Math.max(cost, 5000000)); } else { return cost; } diff --git a/src/net/server/handlers/login/LoginPasswordHandler.java b/src/net/server/handlers/login/LoginPasswordHandler.java index 49c35adeed..04756fe491 100644 --- a/src/net/server/handlers/login/LoginPasswordHandler.java +++ b/src/net/server/handlers/login/LoginPasswordHandler.java @@ -26,6 +26,7 @@ import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Calendar; +import config.YamlConfig; import constants.ServerConstants; import net.MaplePacketHandler; import net.server.Server; @@ -64,14 +65,14 @@ public final class LoginPasswordHandler implements MaplePacketHandler { public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { String remoteHost = getRemoteIp(c.getSession()); if (!remoteHost.contentEquals("null")) { - if (ServerConstants.USE_IP_VALIDATION) { // thanks Alex (CanIGetaPR) for suggesting IP validation as a server flag + if (YamlConfig.config.server.USE_IP_VALIDATION) { // thanks Alex (CanIGetaPR) for suggesting IP validation as a server flag if (remoteHost.startsWith("127.")) { - if (!ServerConstants.LOCALSERVER) { // thanks Mills for noting HOST can also have a field named "localhost" + if (!YamlConfig.config.server.LOCALSERVER) { // thanks Mills for noting HOST can also have a field named "localhost" c.announce(MaplePacketCreator.getLoginFailed(13)); // cannot login as localhost if it's not a local server return; } } else { - if (ServerConstants.LOCALSERVER) { + if (YamlConfig.config.server.LOCALSERVER) { c.announce(MaplePacketCreator.getLoginFailed(13)); // cannot login as non-localhost if it's a local server return; } @@ -93,12 +94,12 @@ public final class LoginPasswordHandler implements MaplePacketHandler { Connection con = null; PreparedStatement ps = null; - if (ServerConstants.AUTOMATIC_REGISTER && loginok == 5) { + if (YamlConfig.config.server.AUTOMATIC_REGISTER && loginok == 5) { try { con = DatabaseConnection.getConnection(); ps = con.prepareStatement("INSERT INTO accounts (name, password, birthday, tempban) VALUES (?, ?, ?, ?);", Statement.RETURN_GENERATED_KEYS); //Jayd: Added birthday, tempban ps.setString(1, login); - ps.setString(2, ServerConstants.BCRYPT_MIGRATION ? BCrypt.hashpw(pwd, BCrypt.gensalt(12)) : hashpwSHA512(pwd)); + ps.setString(2, YamlConfig.config.server.BCRYPT_MIGRATION ? BCrypt.hashpw(pwd, BCrypt.gensalt(12)) : hashpwSHA512(pwd)); ps.setString(3, "2018-06-20"); //Jayd's idea: was added to solve the MySQL 5.7 strict checking (birthday) ps.setString(4, "2018-06-20"); //Jayd's idea: was added to solve the MySQL 5.7 strict checking (tempban) ps.executeUpdate(); @@ -116,7 +117,7 @@ public final class LoginPasswordHandler implements MaplePacketHandler { } } - if (ServerConstants.BCRYPT_MIGRATION && (loginok <= -10)) { // -10 means migration to bcrypt, -23 means TOS wasn't accepted + if (YamlConfig.config.server.BCRYPT_MIGRATION && (loginok <= -10)) { // -10 means migration to bcrypt, -23 means TOS wasn't accepted try { con = DatabaseConnection.getConnection(); ps = con.prepareStatement("UPDATE accounts SET password = ? WHERE name = ?;"); diff --git a/src/net/server/handlers/login/ViewAllCharHandler.java b/src/net/server/handlers/login/ViewAllCharHandler.java index fa04f5ab72..fb695f4474 100644 --- a/src/net/server/handlers/login/ViewAllCharHandler.java +++ b/src/net/server/handlers/login/ViewAllCharHandler.java @@ -23,6 +23,7 @@ package net.server.handlers.login; import client.MapleCharacter; import client.MapleClient; +import config.YamlConfig; import constants.ServerConstants; import java.util.List; import net.AbstractMaplePacketHandler; @@ -64,7 +65,7 @@ public final class ViewAllCharHandler extends AbstractMaplePacketHandler { c.announce(MaplePacketCreator.showAllCharacter(charsSize, unk)); for (Pair> wchars : worldChars) { - c.announce(MaplePacketCreator.showAllCharacterInfo(wchars.getLeft(), wchars.getRight(), ServerConstants.ENABLE_PIC && !c.canBypassPic())); + c.announce(MaplePacketCreator.showAllCharacterInfo(wchars.getLeft(), wchars.getRight(), YamlConfig.config.server.ENABLE_PIC && !c.canBypassPic())); } } catch (Exception e) { e.printStackTrace(); diff --git a/src/net/server/worker/CharacterAutosaverWorker.java b/src/net/server/worker/CharacterAutosaverWorker.java index a10934d4e8..32e5617ef5 100644 --- a/src/net/server/worker/CharacterAutosaverWorker.java +++ b/src/net/server/worker/CharacterAutosaverWorker.java @@ -19,6 +19,7 @@ */ package net.server.worker; +import config.YamlConfig; import net.server.world.World; import client.MapleCharacter; import constants.ServerConstants; @@ -31,7 +32,7 @@ public class CharacterAutosaverWorker extends BaseWorker implements Runnable { @Override public void run() { - if(!ServerConstants.USE_AUTOSAVE) return; + if(!YamlConfig.config.server.USE_AUTOSAVE) return; PlayerStorage ps = wserv.getPlayerStorage(); for(MapleCharacter chr: ps.getAllCharacters()) { diff --git a/src/net/server/worker/RankingLoginWorker.java b/src/net/server/worker/RankingLoginWorker.java index 32cc51afd7..6288fef75f 100644 --- a/src/net/server/worker/RankingLoginWorker.java +++ b/src/net/server/worker/RankingLoginWorker.java @@ -26,6 +26,7 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import client.MapleJob; +import config.YamlConfig; import tools.DatabaseConnection; import constants.ServerConstants; import net.server.Server; @@ -85,7 +86,7 @@ public class RankingLoginWorker implements Runnable { con = DatabaseConnection.getConnection(); con.setAutoCommit(false); - if(ServerConstants.USE_REFRESH_RANK_MOVE == true) { + if(YamlConfig.config.server.USE_REFRESH_RANK_MOVE == true) { resetMoveRank(true); resetMoveRank(false); } diff --git a/src/net/server/worker/TimeoutWorker.java b/src/net/server/worker/TimeoutWorker.java index 6a23f441e8..f9c7b921b6 100644 --- a/src/net/server/worker/TimeoutWorker.java +++ b/src/net/server/worker/TimeoutWorker.java @@ -1,6 +1,7 @@ package net.server.worker; import client.MapleCharacter; +import config.YamlConfig; import constants.ServerConstants; import net.server.world.World; import tools.FilePrinter; @@ -17,7 +18,7 @@ public class TimeoutWorker extends BaseWorker implements Runnable { long time = System.currentTimeMillis(); Collection chars = wserv.getPlayerStorage().getAllCharacters(); for(MapleCharacter chr : chars) { - if(time - chr.getClient().getLastPacket() > ServerConstants.TIMEOUT_DURATION) { + if(time - chr.getClient().getLastPacket() > YamlConfig.config.server.TIMEOUT_DURATION) { FilePrinter.print(FilePrinter.DCS + chr.getClient().getAccountName(), chr.getName() + " auto-disconnected due to inactivity."); chr.getClient().disconnect(true, chr.getCashShop().isOpened()); } diff --git a/src/net/server/world/MapleParty.java b/src/net/server/world/MapleParty.java index d4d192e591..d6758c77e4 100644 --- a/src/net/server/world/MapleParty.java +++ b/src/net/server/world/MapleParty.java @@ -23,6 +23,7 @@ package net.server.world; import client.MapleCharacter; import client.MapleClient; +import config.YamlConfig; import constants.ServerConstants; import java.util.Collection; import java.util.Collections; @@ -344,7 +345,7 @@ public class MapleParty { public static boolean createParty(MapleCharacter player, boolean silentCheck) { MapleParty party = player.getParty(); if (party == null) { - if (player.getLevel() < 10 && !ServerConstants.USE_PARTY_FOR_STARTERS) { + if (player.getLevel() < 10 && !YamlConfig.config.server.USE_PARTY_FOR_STARTERS) { player.announce(MaplePacketCreator.partyStatusMessage(10)); return false; } else if (player.getAriantColiseum() != null) { diff --git a/src/net/server/world/World.java b/src/net/server/world/World.java index ddf1e8f7fd..cd9c159c7e 100644 --- a/src/net/server/world/World.java +++ b/src/net/server/world/World.java @@ -27,6 +27,7 @@ import client.BuddyList.BuddyOperation; import client.BuddylistEntry; import client.MapleCharacter; import client.MapleFamily; +import config.YamlConfig; import constants.GameConstants; import constants.ServerConstants; import java.sql.Connection; @@ -211,13 +212,13 @@ public class World { merchantSchedule = tman.register(new HiredMerchantWorker(this), 10 * 60 * 1000, 10 * 60 * 1000); timedMapObjectsSchedule = tman.register(new TimedMapObjectWorker(this), 60 * 1000, 60 * 1000); charactersSchedule = tman.register(new CharacterAutosaverWorker(this), 60 * 60 * 1000, 60 * 60 * 1000); - marriagesSchedule = tman.register(new WeddingReservationWorker(this), ServerConstants.WEDDING_RESERVATION_INTERVAL * 60 * 1000, ServerConstants.WEDDING_RESERVATION_INTERVAL * 60 * 1000); + marriagesSchedule = tman.register(new WeddingReservationWorker(this), YamlConfig.config.server.WEDDING_RESERVATION_INTERVAL * 60 * 1000, YamlConfig.config.server.WEDDING_RESERVATION_INTERVAL * 60 * 1000); mapOwnershipSchedule = tman.register(new MapOwnershipWorker(this), 20 * 1000, 20 * 1000); fishingSchedule = tman.register(new FishingWorker(this), 10 * 1000, 10 * 1000); partySearchSchedule = tman.register(new PartySearchWorker(this), 10 * 1000, 10 * 1000); timeoutSchedule = tman.register(new TimeoutWorker(this), 10 * 1000, 10 * 1000); - if(ServerConstants.USE_FAMILY_SYSTEM) { + if(YamlConfig.config.server.USE_FAMILY_SYSTEM) { long timeLeft = Server.getTimeLeftForNextDay(); FamilyDailyResetWorker.resetEntitlementUsage(this); tman.register(new FamilyDailyResetWorker(this), 24 * 60 * 60 * 1000, timeLeft); @@ -624,7 +625,7 @@ public class World { } public int getWorldCapacityStatus() { - int worldCap = getChannelsSize() * ServerConstants.CHANNEL_LOAD; + int worldCap = getChannelsSize() * YamlConfig.config.server.CHANNEL_LOAD; int num = players.getSize(); int status; @@ -1320,7 +1321,7 @@ public class World { } public List> getOwlSearchedItems() { - if(ServerConstants.USE_ENFORCE_ITEM_SUGGESTION) { + if(YamlConfig.config.server.USE_ENFORCE_ITEM_SUGGESTION) { return new ArrayList<>(0); } @@ -1355,7 +1356,7 @@ public class World { } private List>> getBoughtCashItems() { - if (ServerConstants.USE_ENFORCE_ITEM_SUGGESTION) { + if (YamlConfig.config.server.USE_ENFORCE_ITEM_SUGGESTION) { List>> boughtCounts = new ArrayList<>(9); // thanks GabrielSin for pointing out an issue here @@ -1445,7 +1446,7 @@ public class World { } public void registerPetHunger(MapleCharacter chr, byte petSlot) { - if(chr.isGM() && ServerConstants.GM_PETS_NEVER_HUNGRY || ServerConstants.PETS_NEVER_HUNGRY) { + if(chr.isGM() && YamlConfig.config.server.GM_PETS_NEVER_HUNGRY || YamlConfig.config.server.PETS_NEVER_HUNGRY) { return; } @@ -1454,8 +1455,8 @@ public class World { activePetsLock.lock(); try { int initProc; - if(Server.getInstance().getCurrentTime() - petUpdate > 55000) initProc = ServerConstants.PET_EXHAUST_COUNT - 2; - else initProc = ServerConstants.PET_EXHAUST_COUNT - 1; + if(Server.getInstance().getCurrentTime() - petUpdate > 55000) initProc = YamlConfig.config.server.PET_EXHAUST_COUNT - 2; + else initProc = YamlConfig.config.server.PET_EXHAUST_COUNT - 1; activePets.put(key, initProc); } finally { @@ -1490,7 +1491,7 @@ public class World { if(chr == null || !chr.isLoggedinWorld()) continue; Integer dpVal = dp.getValue() + 1; - if(dpVal == ServerConstants.PET_EXHAUST_COUNT) { + if(dpVal == YamlConfig.config.server.PET_EXHAUST_COUNT) { chr.runFullnessSchedule(dp.getKey() % 4); dpVal = 0; } @@ -1505,7 +1506,7 @@ public class World { } public void registerMountHunger(MapleCharacter chr) { - if(chr.isGM() && ServerConstants.GM_PETS_NEVER_HUNGRY || ServerConstants.PETS_NEVER_HUNGRY) { + if(chr.isGM() && YamlConfig.config.server.GM_PETS_NEVER_HUNGRY || YamlConfig.config.server.PETS_NEVER_HUNGRY) { return; } @@ -1513,8 +1514,8 @@ public class World { activeMountsLock.lock(); try { int initProc; - if(Server.getInstance().getCurrentTime() - mountUpdate > 45000) initProc = ServerConstants.MOUNT_EXHAUST_COUNT - 2; - else initProc = ServerConstants.MOUNT_EXHAUST_COUNT - 1; + if(Server.getInstance().getCurrentTime() - mountUpdate > 45000) initProc = YamlConfig.config.server.MOUNT_EXHAUST_COUNT - 2; + else initProc = YamlConfig.config.server.MOUNT_EXHAUST_COUNT - 1; activeMounts.put(key, initProc); } finally { @@ -1548,7 +1549,7 @@ public class World { if(chr == null || !chr.isLoggedinWorld()) continue; int dpVal = dp.getValue() + 1; - if(dpVal == ServerConstants.MOUNT_EXHAUST_COUNT) { + if(dpVal == YamlConfig.config.server.MOUNT_EXHAUST_COUNT) { if (!chr.runTirednessSchedule()) { continue; } diff --git a/src/scripting/AbstractPlayerInteraction.java b/src/scripting/AbstractPlayerInteraction.java index 6c51a4183d..3f59073190 100644 --- a/src/scripting/AbstractPlayerInteraction.java +++ b/src/scripting/AbstractPlayerInteraction.java @@ -30,6 +30,7 @@ import java.util.LinkedList; import java.util.List; import client.Skill; +import config.YamlConfig; import net.server.Server; import net.server.channel.Channel; import net.server.guild.MapleGuild; @@ -627,9 +628,9 @@ public class AbstractPlayerInteraction { it.setUpgradeSlots(3); } - if(ServerConstants.USE_ENHANCED_CRAFTING == true && c.getPlayer().getCS() == true) { + if(YamlConfig.config.server.USE_ENHANCED_CRAFTING == true && c.getPlayer().getCS() == true) { Equip eqp = (Equip)item; - if(!(c.getPlayer().isGM() && ServerConstants.USE_PERFECT_GM_SCROLL)) { + if(!(c.getPlayer().isGM() && YamlConfig.config.server.USE_PERFECT_GM_SCROLL)) { eqp.setUpgradeSlots((byte)(eqp.getUpgradeSlots() + 1)); } item = MapleItemInformationProvider.getInstance().scrollEquipWithId(item, 2049100, true, 2049100, c.getPlayer().isGM()); @@ -855,8 +856,8 @@ public class AbstractPlayerInteraction { int base = PartyQuest.getExp(PQ, player.getLevel()); int exp = base * bonus / 100; player.gainExp(exp, true, true); - if(ServerConstants.PQ_BONUS_EXP_RATE > 0 && System.currentTimeMillis() <= ServerConstants.EVENT_END_TIMESTAMP) { - player.gainExp((int) (exp * ServerConstants.PQ_BONUS_EXP_RATE), true, true); + if(YamlConfig.config.server.PQ_BONUS_EXP_RATE > 0 && System.currentTimeMillis() <= YamlConfig.config.server.EVENT_END_TIMESTAMP) { + player.gainExp((int) (exp * YamlConfig.config.server.PQ_BONUS_EXP_RATE), true, true); } } } @@ -1159,7 +1160,7 @@ public class AbstractPlayerInteraction { } public boolean canGetFirstJob(int jobType) { - if (ServerConstants.USE_AUTOASSIGN_STARTERS_AP) { + if (YamlConfig.config.server.USE_AUTOASSIGN_STARTERS_AP) { return true; } diff --git a/src/scripting/event/EventInstanceManager.java b/src/scripting/event/EventInstanceManager.java index 109c4f4b40..2f888ac7ba 100644 --- a/src/scripting/event/EventInstanceManager.java +++ b/src/scripting/event/EventInstanceManager.java @@ -31,6 +31,8 @@ import java.util.Set; import java.util.Iterator; import java.util.Properties; import javax.script.ScriptException; + +import config.YamlConfig; import net.server.audit.LockCollector; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.MonitoredReentrantLock; @@ -102,9 +104,9 @@ public class EventInstanceManager { private boolean eventStarted = false; // multi-leveled PQ rewards! - private Map> collectionSet = new HashMap<>(ServerConstants.MAX_EVENT_LEVELS); - private Map> collectionQty = new HashMap<>(ServerConstants.MAX_EVENT_LEVELS); - private Map collectionExp = new HashMap<>(ServerConstants.MAX_EVENT_LEVELS); + private Map> collectionSet = new HashMap<>(YamlConfig.config.server.MAX_EVENT_LEVELS); + private Map> collectionQty = new HashMap<>(YamlConfig.config.server.MAX_EVENT_LEVELS); + private Map collectionExp = new HashMap<>(YamlConfig.config.server.MAX_EVENT_LEVELS); // Exp/Meso rewards by CLEAR on a stage private List onMapClearExp = new ArrayList<>(); @@ -995,7 +997,7 @@ public class EventInstanceManager { public final void setEventRewards(int eventLevel, List rwds, List qtys, int expGiven) { // fixed EXP will be rewarded at the same time the random item is given - if(eventLevel <= 0 || eventLevel > ServerConstants.MAX_EVENT_LEVELS) return; + if(eventLevel <= 0 || eventLevel > YamlConfig.config.server.MAX_EVENT_LEVELS) return; eventLevel--; //event level starts from 1 List rewardIds = convertToIntegerArray(rwds); @@ -1105,7 +1107,7 @@ public class EventInstanceManager { eventCleared = true; for (MapleCharacter chr : getPlayers()) { - chr.awardQuestPoint(ServerConstants.QUEST_POINT_PER_EVENT_CLEAR); + chr.awardQuestPoint(YamlConfig.config.server.QUEST_POINT_PER_EVENT_CLEAR); } sL.lock(); diff --git a/src/scripting/event/EventManager.java b/src/scripting/event/EventManager.java index 4daeeade36..d7245805b5 100644 --- a/src/scripting/event/EventManager.java +++ b/src/scripting/event/EventManager.java @@ -21,6 +21,7 @@ */ package scripting.event; +import config.YamlConfig; import jdk.nashorn.api.scripting.ScriptObjectMirror; import jdk.nashorn.api.scripting.ScriptUtils; import tools.exceptions.EventInstanceInProgressException; @@ -184,7 +185,7 @@ public class EventManager { } public long getLobbyDelay() { - return ServerConstants.EVENT_LOBBY_DELAY; + return YamlConfig.config.server.EVENT_LOBBY_DELAY; } private List getLobbyRange() { @@ -312,7 +313,7 @@ public class EventManager { instances.remove(name); } } - }, ServerConstants.EVENT_LOBBY_DELAY * 1000); + }, YamlConfig.config.server.EVENT_LOBBY_DELAY * 1000); } public void setProperty(String key, String value) { @@ -839,7 +840,7 @@ public class EventManager { public boolean isQueueFull() { synchronized(queuedGuilds) { - return queuedGuilds.size() >= ServerConstants.EVENT_MAX_GUILD_QUEUE; + return queuedGuilds.size() >= YamlConfig.config.server.EVENT_MAX_GUILD_QUEUE; } } diff --git a/src/scripting/event/worker/EventScriptScheduler.java b/src/scripting/event/worker/EventScriptScheduler.java index a9b1f4b421..fc935e0572 100644 --- a/src/scripting/event/worker/EventScriptScheduler.java +++ b/src/scripting/event/worker/EventScriptScheduler.java @@ -19,6 +19,7 @@ */ package scripting.event.worker; +import config.YamlConfig; import constants.ServerConstants; import java.util.HashMap; import java.util.LinkedList; @@ -66,7 +67,7 @@ public class EventScriptScheduler { if (registeredEntries.isEmpty()) { idleProcs++; - if (idleProcs >= ServerConstants.MOB_STATUS_MONITOR_LIFE) { + if (idleProcs >= YamlConfig.config.server.MOB_STATUS_MONITOR_LIFE) { if (schedulerTask != null) { schedulerTask.cancel(false); schedulerTask = null; @@ -118,7 +119,7 @@ public class EventScriptScheduler { return; } - schedulerTask = TimerManager.getInstance().register(monitorTask, ServerConstants.MOB_STATUS_MONITOR_PROC, ServerConstants.MOB_STATUS_MONITOR_PROC); + schedulerTask = TimerManager.getInstance().register(monitorTask, YamlConfig.config.server.MOB_STATUS_MONITOR_PROC, YamlConfig.config.server.MOB_STATUS_MONITOR_PROC); } registeredEntries.put(scheduledAction, Server.getInstance().getCurrentTime() + duration); diff --git a/src/scripting/npc/NPCConversationManager.java b/src/scripting/npc/NPCConversationManager.java index 3a99a829b3..549c5e3c02 100644 --- a/src/scripting/npc/NPCConversationManager.java +++ b/src/scripting/npc/NPCConversationManager.java @@ -24,6 +24,7 @@ package scripting.npc; import java.io.File; import java.sql.SQLException; +import config.YamlConfig; import constants.ServerConstants; import net.server.Server; import net.server.guild.MapleAlliance; @@ -340,7 +341,7 @@ public class NPCConversationManager extends AbstractPlayerInteraction { public boolean canSpawnPlayerNpc(int mapid) { MapleCharacter chr = getPlayer(); - return !ServerConstants.PLAYERNPC_AUTODEPLOY && chr.getLevel() >= chr.getMaxClassLevel() && !chr.isGM() && MaplePlayerNPC.canSpawnPlayerNpc(chr.getName(), mapid); + return !YamlConfig.config.server.PLAYERNPC_AUTODEPLOY && chr.getLevel() >= chr.getMaxClassLevel() && !chr.isGM() && MaplePlayerNPC.canSpawnPlayerNpc(chr.getName(), mapid); } public MaplePlayerNPC getPlayerNPCByScriptid(int scriptId) { @@ -592,7 +593,7 @@ public class NPCConversationManager extends AbstractPlayerInteraction { } public boolean isUsingOldPqNpcStyle() { - return ServerConstants.USE_OLD_GMS_STYLED_PQ_NPCS && this.getPlayer().getParty() != null; + return YamlConfig.config.server.USE_OLD_GMS_STYLED_PQ_NPCS && this.getPlayer().getParty() != null; } public Object[] getAvailableMasteryBooks() { diff --git a/src/scripting/reactor/ReactorActionManager.java b/src/scripting/reactor/ReactorActionManager.java index 084ceac838..67c8d1f602 100644 --- a/src/scripting/reactor/ReactorActionManager.java +++ b/src/scripting/reactor/ReactorActionManager.java @@ -26,6 +26,7 @@ import client.MapleClient; import client.inventory.Equip; import client.inventory.Item; import client.inventory.MapleInventoryType; +import config.YamlConfig; import constants.ItemConstants; import constants.ServerConstants; import java.awt.Point; @@ -288,7 +289,7 @@ public class ReactorActionManager extends AbstractPlayerInteraction { } public void hitMonsterWithReactor(int id, int hitsToKill) { // until someone comes with a better solution, why not? - int customTime = ServerConstants.MOB_REACTOR_REFRESH_TIME; + int customTime = YamlConfig.config.server.MOB_REACTOR_REFRESH_TIME; if(customTime > 0) { reactor.setDelay(customTime); } diff --git a/src/server/CashShop.java b/src/server/CashShop.java index acdd2ddc5f..8a245e3167 100644 --- a/src/server/CashShop.java +++ b/src/server/CashShop.java @@ -33,6 +33,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.concurrent.locks.Lock; +import config.YamlConfig; import net.server.Server; import net.server.audit.locks.factory.MonitoredReentrantLockFactory; @@ -278,7 +279,7 @@ public class CashShop { this.accountId = accountId; this.characterId = characterId; - if (!ServerConstants.USE_JOINT_CASHSHOP_INVENTORY) { + if (!YamlConfig.config.server.USE_JOINT_CASHSHOP_INVENTORY) { if (jobType == 0) { factory = ItemFactory.CASH_EXPLORER; } else if (jobType == 1) { @@ -358,7 +359,7 @@ public class CashShop { public void gainCash(int type, CashItem buyItem, int world) { gainCash(type, -buyItem.getPrice()); - if(!ServerConstants.USE_ENFORCE_ITEM_SUGGESTION) Server.getInstance().getWorld(world).addCashItemBought(buyItem.getSN()); + if(!YamlConfig.config.server.USE_ENFORCE_ITEM_SUGGESTION) Server.getInstance().getWorld(world).addCashItemBought(buyItem.getSN()); } public boolean isOpened() { diff --git a/src/server/MakerItemFactory.java b/src/server/MakerItemFactory.java index bdfaf6a38a..c7201b1fe7 100644 --- a/src/server/MakerItemFactory.java +++ b/src/server/MakerItemFactory.java @@ -21,6 +21,7 @@ */ package server; +import config.YamlConfig; import constants.EquipType; import constants.ServerConstants; import java.util.ArrayList; @@ -74,7 +75,7 @@ public class MakerItemFactory { } private static double getMakerStimulantFee(int itemid) { - if(ServerConstants.USE_MAKER_FEE_HEURISTICS) { + if(YamlConfig.config.server.USE_MAKER_FEE_HEURISTICS) { EquipType et = EquipType.getEquipTypeById(itemid); int eqpLevel = ii.getEquipLevelReq(itemid); @@ -109,7 +110,7 @@ public class MakerItemFactory { } private static double getMakerReagentFee(int itemid, int reagentLevel) { - if(ServerConstants.USE_MAKER_FEE_HEURISTICS) { + if(YamlConfig.config.server.USE_MAKER_FEE_HEURISTICS) { EquipType et = EquipType.getEquipTypeById(itemid); int eqpLevel = ii.getEquipLevelReq(itemid); diff --git a/src/server/MapleItemInformationProvider.java b/src/server/MapleItemInformationProvider.java index 9f669eb0b3..c2206724c2 100644 --- a/src/server/MapleItemInformationProvider.java +++ b/src/server/MapleItemInformationProvider.java @@ -36,6 +36,7 @@ import java.util.Map.Entry; import java.util.Set; import java.util.HashSet; +import config.YamlConfig; import net.server.Server; import provider.MapleData; import provider.MapleDataDirectoryEntry; @@ -619,7 +620,7 @@ public class MapleItemInformationProvider { } public static boolean rollSuccessChance(double propPercent) { - return Math.random() >= testYourLuck(propPercent / 100.0, ServerConstants.SCROLL_CHANCE_RATE); + return Math.random() >= testYourLuck(propPercent / 100.0, YamlConfig.config.server.SCROLL_CHANCE_RATE); } private static short getMaximumShortMaxIfOverflow(int value1, int value2) { @@ -640,72 +641,72 @@ public class MapleItemInformationProvider { if(!option) { if (nEquip.getStr() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) nEquip.setStr(getMaximumShortMaxIfOverflow(nEquip.getStr(), (nEquip.getStr() + chscrollRandomizedStat(range)))); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) nEquip.setStr(getMaximumShortMaxIfOverflow(nEquip.getStr(), (nEquip.getStr() + chscrollRandomizedStat(range)))); else nEquip.setStr(getMaximumShortMaxIfOverflow(0, (nEquip.getStr() + chscrollRandomizedStat(range)))); } if (nEquip.getDex() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) nEquip.setDex(getMaximumShortMaxIfOverflow(nEquip.getDex(), (nEquip.getDex() + chscrollRandomizedStat(range)))); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) nEquip.setDex(getMaximumShortMaxIfOverflow(nEquip.getDex(), (nEquip.getDex() + chscrollRandomizedStat(range)))); else nEquip.setDex(getMaximumShortMaxIfOverflow(0, (nEquip.getDex() + chscrollRandomizedStat(range)))); } if (nEquip.getInt() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) nEquip.setInt(getMaximumShortMaxIfOverflow(nEquip.getInt(), (nEquip.getInt() + chscrollRandomizedStat(range)))); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) nEquip.setInt(getMaximumShortMaxIfOverflow(nEquip.getInt(), (nEquip.getInt() + chscrollRandomizedStat(range)))); else nEquip.setInt(getMaximumShortMaxIfOverflow(0, (nEquip.getInt() + chscrollRandomizedStat(range)))); } if (nEquip.getLuk() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) nEquip.setLuk(getMaximumShortMaxIfOverflow(nEquip.getLuk(), (nEquip.getLuk() + chscrollRandomizedStat(range)))); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) nEquip.setLuk(getMaximumShortMaxIfOverflow(nEquip.getLuk(), (nEquip.getLuk() + chscrollRandomizedStat(range)))); else nEquip.setLuk(getMaximumShortMaxIfOverflow(0, (nEquip.getLuk() + chscrollRandomizedStat(range)))); } if (nEquip.getAcc() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) nEquip.setAcc(getMaximumShortMaxIfOverflow(nEquip.getAcc(), (nEquip.getAcc() + chscrollRandomizedStat(range)))); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) nEquip.setAcc(getMaximumShortMaxIfOverflow(nEquip.getAcc(), (nEquip.getAcc() + chscrollRandomizedStat(range)))); else nEquip.setAcc(getMaximumShortMaxIfOverflow(0, (nEquip.getAcc() + chscrollRandomizedStat(range)))); } if (nEquip.getAvoid() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) nEquip.setAvoid(getMaximumShortMaxIfOverflow(nEquip.getAvoid(), (nEquip.getAvoid() + chscrollRandomizedStat(range)))); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) nEquip.setAvoid(getMaximumShortMaxIfOverflow(nEquip.getAvoid(), (nEquip.getAvoid() + chscrollRandomizedStat(range)))); else nEquip.setAvoid(getMaximumShortMaxIfOverflow(0, (nEquip.getAvoid() + chscrollRandomizedStat(range)))); } } else { if (nEquip.getWatk() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) nEquip.setWatk(getMaximumShortMaxIfOverflow(nEquip.getWatk(), (nEquip.getWatk() + chscrollRandomizedStat(range)))); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) nEquip.setWatk(getMaximumShortMaxIfOverflow(nEquip.getWatk(), (nEquip.getWatk() + chscrollRandomizedStat(range)))); else nEquip.setWatk(getMaximumShortMaxIfOverflow(0, (nEquip.getWatk() + chscrollRandomizedStat(range)))); } if (nEquip.getWdef() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) nEquip.setWdef(getMaximumShortMaxIfOverflow(nEquip.getWdef(), (nEquip.getWdef() + chscrollRandomizedStat(range)))); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) nEquip.setWdef(getMaximumShortMaxIfOverflow(nEquip.getWdef(), (nEquip.getWdef() + chscrollRandomizedStat(range)))); else nEquip.setWdef(getMaximumShortMaxIfOverflow(0, (nEquip.getWdef() + chscrollRandomizedStat(range)))); } if (nEquip.getMatk() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) nEquip.setMatk(getMaximumShortMaxIfOverflow(nEquip.getMatk(), (nEquip.getMatk() + chscrollRandomizedStat(range)))); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) nEquip.setMatk(getMaximumShortMaxIfOverflow(nEquip.getMatk(), (nEquip.getMatk() + chscrollRandomizedStat(range)))); else nEquip.setMatk(getMaximumShortMaxIfOverflow(0, (nEquip.getMatk() + chscrollRandomizedStat(range)))); } if (nEquip.getMdef() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) nEquip.setMdef(getMaximumShortMaxIfOverflow(nEquip.getMdef(), (nEquip.getMdef() + chscrollRandomizedStat(range)))); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) nEquip.setMdef(getMaximumShortMaxIfOverflow(nEquip.getMdef(), (nEquip.getMdef() + chscrollRandomizedStat(range)))); else nEquip.setMdef(getMaximumShortMaxIfOverflow(0, (nEquip.getMdef() + chscrollRandomizedStat(range)))); } if (nEquip.getSpeed() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) nEquip.setSpeed(getMaximumShortMaxIfOverflow(nEquip.getSpeed(), (nEquip.getSpeed() + chscrollRandomizedStat(range)))); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) nEquip.setSpeed(getMaximumShortMaxIfOverflow(nEquip.getSpeed(), (nEquip.getSpeed() + chscrollRandomizedStat(range)))); else nEquip.setSpeed(getMaximumShortMaxIfOverflow(0, (nEquip.getSpeed() + chscrollRandomizedStat(range)))); } if (nEquip.getJump() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) nEquip.setJump(getMaximumShortMaxIfOverflow(nEquip.getJump(), (nEquip.getJump() + chscrollRandomizedStat(range)))); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) nEquip.setJump(getMaximumShortMaxIfOverflow(nEquip.getJump(), (nEquip.getJump() + chscrollRandomizedStat(range)))); else nEquip.setJump(getMaximumShortMaxIfOverflow(0, (nEquip.getJump() + chscrollRandomizedStat(range)))); } if (nEquip.getHp() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) nEquip.setHp(getMaximumShortMaxIfOverflow(nEquip.getHp(), (nEquip.getHp() + chscrollRandomizedStat(range)))); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) nEquip.setHp(getMaximumShortMaxIfOverflow(nEquip.getHp(), (nEquip.getHp() + chscrollRandomizedStat(range)))); else nEquip.setHp(getMaximumShortMaxIfOverflow(0, (nEquip.getHp() + chscrollRandomizedStat(range)))); } if (nEquip.getMp() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) nEquip.setMp(getMaximumShortMaxIfOverflow(nEquip.getMp(), (nEquip.getMp() + chscrollRandomizedStat(range)))); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) nEquip.setMp(getMaximumShortMaxIfOverflow(nEquip.getMp(), (nEquip.getMp() + chscrollRandomizedStat(range)))); else nEquip.setMp(getMaximumShortMaxIfOverflow(0, (nEquip.getMp() + chscrollRandomizedStat(range)))); } } } private void scrollEquipWithChaos(Equip nEquip, int range) { - if(ServerConstants.CHSCROLL_STAT_RATE > 0) { + if(YamlConfig.config.server.CHSCROLL_STAT_RATE > 0) { int temp; short curStr, curDex, curInt, curLuk, curWatk, curWdef, curMatk, curMdef, curAcc, curAvoid, curSpeed, curJump, curHp, curMp; - if(ServerConstants.USE_ENHANCED_CHSCROLL) { + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) { curStr = nEquip.getStr(); curDex = nEquip.getDex(); curInt = nEquip.getInt(); @@ -737,100 +738,100 @@ public class MapleItemInformationProvider { curMp = Short.MIN_VALUE; } - for(int i = 0; i < ServerConstants.CHSCROLL_STAT_RATE; i++) { + for(int i = 0; i < YamlConfig.config.server.CHSCROLL_STAT_RATE; i++) { if (nEquip.getStr() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) temp = curStr + chscrollRandomizedStat(range); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) temp = curStr + chscrollRandomizedStat(range); else temp = nEquip.getStr() + chscrollRandomizedStat(range); curStr = getMaximumShortMaxIfOverflow(temp, curStr); } if (nEquip.getDex() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) temp = curDex + chscrollRandomizedStat(range); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) temp = curDex + chscrollRandomizedStat(range); else temp = nEquip.getDex() + chscrollRandomizedStat(range); curDex = getMaximumShortMaxIfOverflow(temp, curDex); } if (nEquip.getInt() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) temp = curInt + chscrollRandomizedStat(range); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) temp = curInt + chscrollRandomizedStat(range); else temp = nEquip.getInt() + chscrollRandomizedStat(range); curInt = getMaximumShortMaxIfOverflow(temp, curInt); } if (nEquip.getLuk() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) temp = curLuk + chscrollRandomizedStat(range); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) temp = curLuk + chscrollRandomizedStat(range); else temp = nEquip.getLuk() + chscrollRandomizedStat(range); curLuk = getMaximumShortMaxIfOverflow(temp, curLuk); } if (nEquip.getWatk() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) temp = curWatk + chscrollRandomizedStat(range); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) temp = curWatk + chscrollRandomizedStat(range); else temp = nEquip.getWatk() + chscrollRandomizedStat(range); curWatk = getMaximumShortMaxIfOverflow(temp, curWatk); } if (nEquip.getWdef() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) temp = curWdef + chscrollRandomizedStat(range); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) temp = curWdef + chscrollRandomizedStat(range); else temp = nEquip.getWdef() + chscrollRandomizedStat(range); curWdef = getMaximumShortMaxIfOverflow(temp, curWdef); } if (nEquip.getMatk() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) temp = curMatk + chscrollRandomizedStat(range); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) temp = curMatk + chscrollRandomizedStat(range); else temp = nEquip.getMatk() + chscrollRandomizedStat(range); curMatk = getMaximumShortMaxIfOverflow(temp, curMatk); } if (nEquip.getMdef() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) temp = curMdef + chscrollRandomizedStat(range); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) temp = curMdef + chscrollRandomizedStat(range); else temp = nEquip.getMdef() + chscrollRandomizedStat(range); curMdef = getMaximumShortMaxIfOverflow(temp, curMdef); } if (nEquip.getAcc() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) temp = curAcc + chscrollRandomizedStat(range); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) temp = curAcc + chscrollRandomizedStat(range); else temp = nEquip.getAcc() + chscrollRandomizedStat(range); curAcc = getMaximumShortMaxIfOverflow(temp, curAcc); } if (nEquip.getAvoid() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) temp = curAvoid + chscrollRandomizedStat(range); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) temp = curAvoid + chscrollRandomizedStat(range); else temp = nEquip.getAvoid() + chscrollRandomizedStat(range); curAvoid = getMaximumShortMaxIfOverflow(temp, curAvoid); } if (nEquip.getSpeed() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) temp = curSpeed + chscrollRandomizedStat(range); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) temp = curSpeed + chscrollRandomizedStat(range); else temp = nEquip.getSpeed() + chscrollRandomizedStat(range); curSpeed = getMaximumShortMaxIfOverflow(temp, curSpeed); } if (nEquip.getJump() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) temp = curJump + chscrollRandomizedStat(range); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) temp = curJump + chscrollRandomizedStat(range); else temp = nEquip.getJump() + chscrollRandomizedStat(range); curJump = getMaximumShortMaxIfOverflow(temp, curJump); } if (nEquip.getHp() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) temp = curHp + chscrollRandomizedStat(range); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) temp = curHp + chscrollRandomizedStat(range); else temp = nEquip.getHp() + chscrollRandomizedStat(range); curHp = getMaximumShortMaxIfOverflow(temp, curHp); } if (nEquip.getMp() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) temp = curMp + chscrollRandomizedStat(range); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) temp = curMp + chscrollRandomizedStat(range); else temp = nEquip.getMp() + chscrollRandomizedStat(range); curMp = getMaximumShortMaxIfOverflow(temp, curMp); @@ -855,59 +856,59 @@ public class MapleItemInformationProvider { else { if (nEquip.getStr() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) nEquip.setStr(getMaximumShortMaxIfOverflow(nEquip.getStr(), (nEquip.getStr() + chscrollRandomizedStat(range)))); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) nEquip.setStr(getMaximumShortMaxIfOverflow(nEquip.getStr(), (nEquip.getStr() + chscrollRandomizedStat(range)))); else nEquip.setStr(getMaximumShortMaxIfOverflow(0, (nEquip.getStr() + chscrollRandomizedStat(range)))); } if (nEquip.getDex() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) nEquip.setDex(getMaximumShortMaxIfOverflow(nEquip.getDex(), (nEquip.getDex() + chscrollRandomizedStat(range)))); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) nEquip.setDex(getMaximumShortMaxIfOverflow(nEquip.getDex(), (nEquip.getDex() + chscrollRandomizedStat(range)))); else nEquip.setDex(getMaximumShortMaxIfOverflow(0, (nEquip.getDex() + chscrollRandomizedStat(range)))); } if (nEquip.getInt() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) nEquip.setInt(getMaximumShortMaxIfOverflow(nEquip.getInt(), (nEquip.getInt() + chscrollRandomizedStat(range)))); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) nEquip.setInt(getMaximumShortMaxIfOverflow(nEquip.getInt(), (nEquip.getInt() + chscrollRandomizedStat(range)))); else nEquip.setInt(getMaximumShortMaxIfOverflow(0, (nEquip.getInt() + chscrollRandomizedStat(range)))); } if (nEquip.getLuk() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) nEquip.setLuk(getMaximumShortMaxIfOverflow(nEquip.getLuk(), (nEquip.getLuk() + chscrollRandomizedStat(range)))); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) nEquip.setLuk(getMaximumShortMaxIfOverflow(nEquip.getLuk(), (nEquip.getLuk() + chscrollRandomizedStat(range)))); else nEquip.setLuk(getMaximumShortMaxIfOverflow(0, (nEquip.getLuk() + chscrollRandomizedStat(range)))); } if (nEquip.getWatk() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) nEquip.setWatk(getMaximumShortMaxIfOverflow(nEquip.getWatk(), (nEquip.getWatk() + chscrollRandomizedStat(range)))); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) nEquip.setWatk(getMaximumShortMaxIfOverflow(nEquip.getWatk(), (nEquip.getWatk() + chscrollRandomizedStat(range)))); else nEquip.setWatk(getMaximumShortMaxIfOverflow(0, (nEquip.getWatk() + chscrollRandomizedStat(range)))); } if (nEquip.getWdef() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) nEquip.setWdef(getMaximumShortMaxIfOverflow(nEquip.getWdef(), (nEquip.getWdef() + chscrollRandomizedStat(range)))); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) nEquip.setWdef(getMaximumShortMaxIfOverflow(nEquip.getWdef(), (nEquip.getWdef() + chscrollRandomizedStat(range)))); else nEquip.setWdef(getMaximumShortMaxIfOverflow(0, (nEquip.getWdef() + chscrollRandomizedStat(range)))); } if (nEquip.getMatk() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) nEquip.setMatk(getMaximumShortMaxIfOverflow(nEquip.getMatk(), (nEquip.getMatk() + chscrollRandomizedStat(range)))); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) nEquip.setMatk(getMaximumShortMaxIfOverflow(nEquip.getMatk(), (nEquip.getMatk() + chscrollRandomizedStat(range)))); else nEquip.setMatk(getMaximumShortMaxIfOverflow(0, (nEquip.getMatk() + chscrollRandomizedStat(range)))); } if (nEquip.getMdef() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) nEquip.setMdef(getMaximumShortMaxIfOverflow(nEquip.getMdef(), (nEquip.getMdef() + chscrollRandomizedStat(range)))); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) nEquip.setMdef(getMaximumShortMaxIfOverflow(nEquip.getMdef(), (nEquip.getMdef() + chscrollRandomizedStat(range)))); else nEquip.setMdef(getMaximumShortMaxIfOverflow(0, (nEquip.getMdef() + chscrollRandomizedStat(range)))); } if (nEquip.getAcc() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) nEquip.setAcc(getMaximumShortMaxIfOverflow(nEquip.getAcc(), (nEquip.getAcc() + chscrollRandomizedStat(range)))); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) nEquip.setAcc(getMaximumShortMaxIfOverflow(nEquip.getAcc(), (nEquip.getAcc() + chscrollRandomizedStat(range)))); else nEquip.setAcc(getMaximumShortMaxIfOverflow(0, (nEquip.getAcc() + chscrollRandomizedStat(range)))); } if (nEquip.getAvoid() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) nEquip.setAvoid(getMaximumShortMaxIfOverflow(nEquip.getAvoid(), (nEquip.getAvoid() + chscrollRandomizedStat(range)))); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) nEquip.setAvoid(getMaximumShortMaxIfOverflow(nEquip.getAvoid(), (nEquip.getAvoid() + chscrollRandomizedStat(range)))); else nEquip.setAvoid(getMaximumShortMaxIfOverflow(0, (nEquip.getAvoid() + chscrollRandomizedStat(range)))); } if (nEquip.getSpeed() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) nEquip.setSpeed(getMaximumShortMaxIfOverflow(nEquip.getSpeed(), (nEquip.getSpeed() + chscrollRandomizedStat(range)))); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) nEquip.setSpeed(getMaximumShortMaxIfOverflow(nEquip.getSpeed(), (nEquip.getSpeed() + chscrollRandomizedStat(range)))); else nEquip.setSpeed(getMaximumShortMaxIfOverflow(0, (nEquip.getSpeed() + chscrollRandomizedStat(range)))); } if (nEquip.getJump() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) nEquip.setJump(getMaximumShortMaxIfOverflow(nEquip.getJump(), (nEquip.getJump() + chscrollRandomizedStat(range)))); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) nEquip.setJump(getMaximumShortMaxIfOverflow(nEquip.getJump(), (nEquip.getJump() + chscrollRandomizedStat(range)))); else nEquip.setJump(getMaximumShortMaxIfOverflow(0, (nEquip.getJump() + chscrollRandomizedStat(range)))); } if (nEquip.getHp() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) nEquip.setHp(getMaximumShortMaxIfOverflow(nEquip.getHp(), (nEquip.getHp() + chscrollRandomizedStat(range)))); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) nEquip.setHp(getMaximumShortMaxIfOverflow(nEquip.getHp(), (nEquip.getHp() + chscrollRandomizedStat(range)))); else nEquip.setHp(getMaximumShortMaxIfOverflow(0, (nEquip.getHp() + chscrollRandomizedStat(range)))); } if (nEquip.getMp() > 0) { - if(ServerConstants.USE_ENHANCED_CHSCROLL) nEquip.setMp(getMaximumShortMaxIfOverflow(nEquip.getMp(), (nEquip.getMp() + chscrollRandomizedStat(range)))); + if(YamlConfig.config.server.USE_ENHANCED_CHSCROLL) nEquip.setMp(getMaximumShortMaxIfOverflow(nEquip.getMp(), (nEquip.getMp() + chscrollRandomizedStat(range)))); else nEquip.setMp(getMaximumShortMaxIfOverflow(0, (nEquip.getMp() + chscrollRandomizedStat(range)))); } } @@ -915,11 +916,11 @@ public class MapleItemInformationProvider { public boolean canUseCleanSlate(Equip nEquip) { Map eqstats = this.getEquipStats(nEquip.getItemId()); - return ServerConstants.USE_ENHANCED_CLNSLATE || nEquip.getUpgradeSlots() < (byte) (eqstats.get("tuc") + nEquip.getVicious()); // issue with clean slate found thanks to Masterrulax, vicious added in the check thanks to Crypter (CrypterDEV) + return YamlConfig.config.server.USE_ENHANCED_CLNSLATE || nEquip.getUpgradeSlots() < (byte) (eqstats.get("tuc") + nEquip.getVicious()); // issue with clean slate found thanks to Masterrulax, vicious added in the check thanks to Crypter (CrypterDEV) } public Item scrollEquipWithId(Item equip, int scrollId, boolean usingWhiteScroll, int vegaItemId, boolean isGM) { - boolean assertGM = (isGM && ServerConstants.USE_PERFECT_GM_SCROLL); + boolean assertGM = (isGM && YamlConfig.config.server.USE_PERFECT_GM_SCROLL); if (equip instanceof Equip) { Equip nEquip = (Equip) equip; @@ -966,7 +967,7 @@ public class MapleItemInformationProvider { case 2049100: case 2049101: case 2049102: - scrollEquipWithChaos(nEquip, ServerConstants.CHSCROLL_STAT_RANGE); + scrollEquipWithChaos(nEquip, YamlConfig.config.server.CHSCROLL_STAT_RANGE); break; default: @@ -980,7 +981,7 @@ public class MapleItemInformationProvider { nEquip.setLevel((byte) (nEquip.getLevel() + 1)); } } else { - if (!ServerConstants.USE_PERFECT_SCROLLING && !usingWhiteScroll && !ItemConstants.isCleanSlate(scrollId) && !assertGM && !ItemConstants.isModifierScroll(scrollId)) { + if (!YamlConfig.config.server.USE_PERFECT_SCROLLING && !usingWhiteScroll && !ItemConstants.isCleanSlate(scrollId) && !assertGM && !ItemConstants.isModifierScroll(scrollId)) { nEquip.setUpgradeSlots((byte) (nEquip.getUpgradeSlots() - 1)); } if (Randomizer.nextInt(100) < stats.get("cursed")) { @@ -1606,11 +1607,11 @@ public class MapleItemInformationProvider { } public boolean isUnmerchable(int itemId) { - if(ServerConstants.USE_ENFORCE_UNMERCHABLE_CASH && isCash(itemId)) { + if(YamlConfig.config.server.USE_ENFORCE_UNMERCHABLE_CASH && isCash(itemId)) { return true; } - if (ServerConstants.USE_ENFORCE_UNMERCHABLE_PET && ItemConstants.isPet(itemId)) { + if (YamlConfig.config.server.USE_ENFORCE_UNMERCHABLE_PET && ItemConstants.isPet(itemId)) { return true; } diff --git a/src/server/MapleStatEffect.java b/src/server/MapleStatEffect.java index d15904122e..b3044446c8 100644 --- a/src/server/MapleStatEffect.java +++ b/src/server/MapleStatEffect.java @@ -29,6 +29,7 @@ import java.util.Collections; import java.util.List; import java.util.Map; +import config.YamlConfig; import net.server.Server; import provider.MapleData; import provider.MapleDataTool; @@ -444,7 +445,7 @@ public class MapleStatEffect { } else { if (isMapChair(sourceid)) { addBuffStatPairToListIfNotZero(statups, MapleBuffStat.MAP_CHAIR, 1); - } else if ((sourceid == Beginner.NIMBLE_FEET || sourceid == Noblesse.NIMBLE_FEET || sourceid == Evan.NIMBLE_FEET || sourceid == Legend.AGILE_BODY) && ServerConstants.USE_ULTRA_NIMBLE_FEET == true) { + } else if ((sourceid == Beginner.NIMBLE_FEET || sourceid == Noblesse.NIMBLE_FEET || sourceid == Evan.NIMBLE_FEET || sourceid == Legend.AGILE_BODY) && YamlConfig.config.server.USE_ULTRA_NIMBLE_FEET == true) { ret.jump = (short) (ret.speed * 4); ret.speed *= 15; } @@ -465,7 +466,7 @@ public class MapleStatEffect { ret.lt = (Point) ltd.getData(); ret.rb = (Point) source.getChildByPath("rb").getData(); - if (ServerConstants.USE_MAXRANGE_ECHO_OF_HERO && (sourceid == Beginner.ECHO_OF_HERO || sourceid == Noblesse.ECHO_OF_HERO || sourceid == Legend.ECHO_OF_HERO || sourceid == Evan.ECHO_OF_HERO)) { + if (YamlConfig.config.server.USE_MAXRANGE_ECHO_OF_HERO && (sourceid == Beginner.ECHO_OF_HERO || sourceid == Noblesse.ECHO_OF_HERO || sourceid == Legend.ECHO_OF_HERO || sourceid == Evan.ECHO_OF_HERO)) { ret.lt = new Point(Integer.MIN_VALUE, Integer.MIN_VALUE); ret.rb = new Point(Integer.MAX_VALUE, Integer.MAX_VALUE); } @@ -473,7 +474,7 @@ public class MapleStatEffect { int x = MapleDataTool.getInt("x", source, 0); - if ((sourceid == Beginner.RECOVERY || sourceid == Noblesse.RECOVERY || sourceid == Evan.RECOVERY || sourceid == Legend.RECOVERY) && ServerConstants.USE_ULTRA_RECOVERY == true) { + if ((sourceid == Beginner.RECOVERY || sourceid == Noblesse.RECOVERY || sourceid == Evan.RECOVERY || sourceid == Legend.RECOVERY) && YamlConfig.config.server.USE_ULTRA_RECOVERY == true) { x *= 10; } ret.x = x; @@ -1233,7 +1234,7 @@ public class MapleStatEffect { } public int getBuffLocalDuration() { - return !ServerConstants.USE_BUFF_EVERLASTING ? duration : Integer.MAX_VALUE; + return !YamlConfig.config.server.USE_BUFF_EVERLASTING ? duration : Integer.MAX_VALUE; } public void silentApplyBuff(MapleCharacter chr, long localStartTime) { diff --git a/src/server/MapleStorageInventory.java b/src/server/MapleStorageInventory.java index b9702b8667..d224e89b5d 100644 --- a/src/server/MapleStorageInventory.java +++ b/src/server/MapleStorageInventory.java @@ -25,6 +25,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import config.YamlConfig; import constants.ItemConstants; import constants.ServerConstants; @@ -359,7 +360,7 @@ public class MapleStorageInventory { } int invTypeCriteria = 1; - int sortCriteria = (ServerConstants.USE_ITEM_SORT_BY_NAME == true) ? 2 : 0; + int sortCriteria = (YamlConfig.config.server.USE_ITEM_SORT_BY_NAME == true) ? 2 : 0; PairedQuicksort pq = new PairedQuicksort(itemarray, sortCriteria, invTypeCriteria); inventory.clear(); diff --git a/src/server/MapleTrade.java b/src/server/MapleTrade.java index b14faade94..dea46307ad 100644 --- a/src/server/MapleTrade.java +++ b/src/server/MapleTrade.java @@ -26,6 +26,7 @@ import java.util.LinkedList; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; +import config.YamlConfig; import tools.LogHelper; import tools.MaplePacketCreator; import client.MapleCharacter; @@ -114,7 +115,7 @@ public class MapleTrade { private void completeTrade() { byte result; - boolean show = ServerConstants.USE_DEBUG; + boolean show = YamlConfig.config.server.USE_DEBUG; items.clear(); meso = 0; @@ -147,7 +148,7 @@ public class MapleTrade { } private void cancel(byte result) { - boolean show = ServerConstants.USE_DEBUG; + boolean show = YamlConfig.config.server.USE_DEBUG; for (Item item : items) { MapleInventoryManipulator.addFromDrop(chr.getClient(), item, show); diff --git a/src/server/expeditions/MapleExpeditionBossLog.java b/src/server/expeditions/MapleExpeditionBossLog.java index fac70f4ae3..8dadc6001b 100644 --- a/src/server/expeditions/MapleExpeditionBossLog.java +++ b/src/server/expeditions/MapleExpeditionBossLog.java @@ -27,6 +27,8 @@ import java.sql.Timestamp; import java.util.Calendar; import java.util.LinkedList; import java.util.List; + +import config.YamlConfig; import constants.ServerConstants; import tools.DatabaseConnection; import tools.Pair; @@ -182,7 +184,7 @@ public class MapleExpeditionBossLog { } public static boolean attemptBoss(int cid, int channel, MapleExpedition exped, boolean log) { - if (!ServerConstants.USE_ENABLE_DAILY_EXPEDITIONS) { + if (!YamlConfig.config.server.USE_ENABLE_DAILY_EXPEDITIONS) { return true; } diff --git a/src/server/expeditions/MapleExpeditionType.java b/src/server/expeditions/MapleExpeditionType.java index c94007f176..3b1c2f96f6 100644 --- a/src/server/expeditions/MapleExpeditionType.java +++ b/src/server/expeditions/MapleExpeditionType.java @@ -22,6 +22,7 @@ package server.expeditions; +import config.YamlConfig; import constants.ServerConstants; /** @@ -60,7 +61,7 @@ public enum MapleExpeditionType { } public int getMinSize() { - return !ServerConstants.USE_ENABLE_SOLO_EXPEDITIONS ? minSize : 1; + return !YamlConfig.config.server.USE_ENABLE_SOLO_EXPEDITIONS ? minSize : 1; } public int getMaxSize() { diff --git a/src/server/life/MapleMonster.java b/src/server/life/MapleMonster.java index 0a2e6e7206..b6e4f44380 100644 --- a/src/server/life/MapleMonster.java +++ b/src/server/life/MapleMonster.java @@ -30,6 +30,7 @@ import client.Skill; import client.SkillFactory; import client.status.MonsterStatus; import client.status.MonsterStatusEffect; +import config.YamlConfig; import constants.ServerConstants; import constants.skills.Crusader; import constants.skills.FPMage; @@ -451,7 +452,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { return; } - if (ServerConstants.USE_DEBUG) { + if (YamlConfig.config.server.USE_DEBUG) { from.dropMessage(5, "Hitted MOB " + this.getId() + ", OID " + this.getObjectId()); } @@ -525,8 +526,8 @@ public class MapleMonster extends AbstractLoadedMapleLife { } private void distributePlayerExperience(MapleCharacter chr, float exp, float partyBonusMod, int totalPartyLevel, boolean highestPartyDamager, boolean whiteExpGain, boolean hasPartySharers) { - float playerExp = (ServerConstants.EXP_SPLIT_COMMON_MOD * chr.getLevel()) / totalPartyLevel; - if (highestPartyDamager) playerExp += ServerConstants.EXP_SPLIT_MVP_MOD; + float playerExp = (YamlConfig.config.server.EXP_SPLIT_COMMON_MOD * chr.getLevel()) / totalPartyLevel; + if (highestPartyDamager) playerExp += YamlConfig.config.server.EXP_SPLIT_MVP_MOD; playerExp *= exp; float bonusExp = partyBonusMod * playerExp; @@ -537,7 +538,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { private void distributePartyExperience(Map partyParticipation, float expPerDmg, Set underleveled, Map personalRatio, double sdevRatio) { IntervalBuilder leechInterval = new IntervalBuilder(); - leechInterval.addInterval(this.getLevel() - ServerConstants.EXP_SPLIT_LEVEL_INTERVAL, this.getLevel() + ServerConstants.EXP_SPLIT_LEVEL_INTERVAL); + leechInterval.addInterval(this.getLevel() - YamlConfig.config.server.EXP_SPLIT_LEVEL_INTERVAL, this.getLevel() + YamlConfig.config.server.EXP_SPLIT_LEVEL_INTERVAL); long maxDamage = 0, partyDamage = 0; MapleCharacter participationMvp = null; @@ -552,14 +553,14 @@ public class MapleMonster extends AbstractLoadedMapleLife { // thanks Thora for pointing out leech level limitation int chrLevel = e.getKey().getLevel(); - leechInterval.addInterval(chrLevel - ServerConstants.EXP_SPLIT_LEECH_INTERVAL, chrLevel + ServerConstants.EXP_SPLIT_LEECH_INTERVAL); + leechInterval.addInterval(chrLevel - YamlConfig.config.server.EXP_SPLIT_LEECH_INTERVAL, chrLevel + YamlConfig.config.server.EXP_SPLIT_LEECH_INTERVAL); } List expMembers = new LinkedList<>(); int totalPartyLevel = 0; // thanks G h o s t, Alfred, Vcoc, BHB for poiting out a bug in detecting party members after membership transactions in a party took place - if (ServerConstants.USE_ENFORCE_MOB_LEVEL_RANGE) { + if (YamlConfig.config.server.USE_ENFORCE_MOB_LEVEL_RANGE) { for (MapleCharacter member : partyParticipation.keySet().iterator().next().getPartyMembersOnSameMap()) { if (!leechInterval.inInterval(member.getLevel())) { underleveled.add(member); @@ -685,7 +686,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { // thanks Prophecy & Aika for finding out Holy Symbol not being applied on party bonuses Integer holySymbol = attacker.getBuffedValue(MapleBuffStat.HOLY_SYMBOL); if (holySymbol != null) { - if (ServerConstants.USE_FULL_HOLY_SYMBOL) { // thanks Mordred, xinyifly, AyumiLove, andy33 for noticing HS hands out 20% of its potential on less than 3 players + if (YamlConfig.config.server.USE_FULL_HOLY_SYMBOL) { // thanks Mordred, xinyifly, AyumiLove, andy33 for noticing HS hands out 20% of its potential on less than 3 players multiplier *= (1.0 + (holySymbol.doubleValue() / 100.0)); } else { multiplier *= (1.0 + (holySymbol.doubleValue() / (hasPartySharers ? 100.0 : 500.0))); @@ -734,7 +735,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { if (partyExp != null) { partyExp *= getStatusExpMultiplier(attacker, hasPartySharers); partyExp *= attacker.getExpRate(); - partyExp *= ServerConstants.PARTY_BONUS_EXP_RATE; + partyExp *= YamlConfig.config.server.PARTY_BONUS_EXP_RATE; } else { partyExp = 0.0f; } @@ -964,7 +965,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { private void giveFamilyRep(MapleFamilyEntry entry) { if(entry != null) { - int repGain = isBoss() ? ServerConstants.FAMILY_REP_PER_BOSS_KILL : ServerConstants.FAMILY_REP_PER_KILL; + int repGain = isBoss() ? YamlConfig.config.server.FAMILY_REP_PER_BOSS_KILL : YamlConfig.config.server.FAMILY_REP_PER_KILL; if(getMaxHp() <= 1) repGain = 0; //don't count trash mobs entry.giveReputationToSenior(repGain, true); } @@ -1401,7 +1402,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { int i = (skillid == Crusader.ARMOR_CRASH ? 1 : (skillid == WhiteKnight.MAGIC_CRASH ? 2 : 0)); debuffMobStat(statups[i]); - if(ServerConstants.USE_ANTI_IMMUNITY_CRASH) { + if(YamlConfig.config.server.USE_ANTI_IMMUNITY_CRASH) { if (skillid == Crusader.ARMOR_CRASH) { if(!isBuffed(MonsterStatus.WEAPON_REFLECT)) { debuffMobStat(MonsterStatus.WEAPON_IMMUNITY); @@ -2213,7 +2214,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { }; // had to schedule this since mob wouldn't stick to puppet aggro who knows why - this.getMap().getChannelServer().registerOverallAction(this.getMap().getId(), r, ServerConstants.UPDATE_INTERVAL); + this.getMap().getChannelServer().registerOverallAction(this.getMap().getId(), r, YamlConfig.config.server.UPDATE_INTERVAL); } /** diff --git a/src/server/life/MapleMonsterInformationProvider.java b/src/server/life/MapleMonsterInformationProvider.java index f5c4394331..45d6f7fa6e 100644 --- a/src/server/life/MapleMonsterInformationProvider.java +++ b/src/server/life/MapleMonsterInformationProvider.java @@ -20,6 +20,7 @@ */ package server.life; +import config.YamlConfig; import constants.ItemConstants; import constants.ServerConstants; import java.io.File; @@ -138,7 +139,7 @@ public class MapleMonsterInformationProvider { // this reads the drop entries searching for multi-equip, properly processing them List list = retrieveDrop(monsterId); - if (hasNoMultiEquipDrops.contains(monsterId) || !ServerConstants.USE_MULTIPLE_SAME_EQUIP_DROP) { + if (hasNoMultiEquipDrops.contains(monsterId) || !YamlConfig.config.server.USE_MULTIPLE_SAME_EQUIP_DROP) { return list; } diff --git a/src/server/life/MaplePlayerNPC.java b/src/server/life/MaplePlayerNPC.java index f956a04864..9b31d70235 100644 --- a/src/server/life/MaplePlayerNPC.java +++ b/src/server/life/MaplePlayerNPC.java @@ -21,6 +21,7 @@ */ package server.life; +import config.YamlConfig; import server.life.positioner.MaplePlayerNPCPositioner; import server.life.positioner.MaplePlayerNPCPodium; import java.awt.Point; @@ -426,7 +427,7 @@ public class MaplePlayerNPC extends AbstractMapleMapObject { } } - if(ServerConstants.USE_DEBUG) System.out.println("GOT SID " + scriptId + " POS " + pos); + if(YamlConfig.config.server.USE_DEBUG) System.out.println("GOT SID " + scriptId + " POS " + pos); int worldId = chr.getWorld(); int jobId = (chr.getJob().getId() / 100) * 100; diff --git a/src/server/life/positioner/MaplePlayerNPCPodium.java b/src/server/life/positioner/MaplePlayerNPCPodium.java index c97e8f7807..ffe33daaf9 100644 --- a/src/server/life/positioner/MaplePlayerNPCPodium.java +++ b/src/server/life/positioner/MaplePlayerNPCPodium.java @@ -19,6 +19,7 @@ */ package server.life.positioner; +import config.YamlConfig; import constants.ServerConstants; import java.awt.Point; import java.util.ArrayList; @@ -85,7 +86,7 @@ public class MaplePlayerNPCPodium { private static Point reorganizePlayerNpcs(MapleMap map, int newStep, List mmoList) { if(!mmoList.isEmpty()) { - if(ServerConstants.USE_DEBUG) System.out.println("Reorganizing pnpc map, step " + newStep); + if(YamlConfig.config.server.USE_DEBUG) System.out.println("Reorganizing pnpc map, step " + newStep); List playerNpcs = new ArrayList<>(mmoList.size()); for(MapleMapObject mmo : mmoList) { @@ -135,7 +136,7 @@ public class MaplePlayerNPCPodium { int podiumStep = podiumData % (1 << 5), podiumCount = (podiumData / (1 << 5)); if(podiumCount >= 3 * podiumStep) { - if(podiumStep >= ServerConstants.PLAYERNPC_AREA_STEPS) return null; + if(podiumStep >= YamlConfig.config.server.PLAYERNPC_AREA_STEPS) return null; List mmoList = map.getMapObjectsInRange(new Point(0, 0), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.PLAYER_NPC)); map.getWorldServer().setPlayerNpcMapPodiumData(map.getId(), encodePodiumData(podiumStep + 1, podiumCount + 1)); diff --git a/src/server/life/positioner/MaplePlayerNPCPositioner.java b/src/server/life/positioner/MaplePlayerNPCPositioner.java index 58e6054ab7..7fcd145489 100644 --- a/src/server/life/positioner/MaplePlayerNPCPositioner.java +++ b/src/server/life/positioner/MaplePlayerNPCPositioner.java @@ -19,6 +19,7 @@ */ package server.life.positioner; +import config.YamlConfig; import constants.ServerConstants; import java.awt.Point; import java.awt.Rectangle; @@ -59,18 +60,18 @@ public class MaplePlayerNPCPositioner { } private static int calcDx(int newStep) { - return ServerConstants.PLAYERNPC_AREA_X / (newStep + 1); + return YamlConfig.config.server.PLAYERNPC_AREA_X / (newStep + 1); } private static int calcDy(int newStep) { - return (ServerConstants.PLAYERNPC_AREA_Y / 2) + (ServerConstants.PLAYERNPC_AREA_Y / (1 << (newStep + 1))); + return (YamlConfig.config.server.PLAYERNPC_AREA_Y / 2) + (YamlConfig.config.server.PLAYERNPC_AREA_Y / (1 << (newStep + 1))); } private static List rearrangePlayerNpcPositions(MapleMap map, int newStep, int pnpcsSize) { Rectangle mapArea = map.getMapArea(); - int leftPx = mapArea.x + ServerConstants.PLAYERNPC_INITIAL_X, px, py = mapArea.y + ServerConstants.PLAYERNPC_INITIAL_Y; - int outx = mapArea.x + mapArea.width - ServerConstants.PLAYERNPC_INITIAL_X, outy = mapArea.y + mapArea.height; + int leftPx = mapArea.x + YamlConfig.config.server.PLAYERNPC_INITIAL_X, px, py = mapArea.y + YamlConfig.config.server.PLAYERNPC_INITIAL_Y; + int outx = mapArea.x + mapArea.width - YamlConfig.config.server.PLAYERNPC_INITIAL_X, outy = mapArea.y + mapArea.height; int cx = calcDx(newStep), cy = calcDy(newStep); List otherPlayerNpcs = new LinkedList<>(); @@ -101,8 +102,8 @@ public class MaplePlayerNPCPositioner { private static Point rearrangePlayerNpcs(MapleMap map, int newStep, List pnpcs) { Rectangle mapArea = map.getMapArea(); - int leftPx = mapArea.x + ServerConstants.PLAYERNPC_INITIAL_X, px, py = mapArea.y + ServerConstants.PLAYERNPC_INITIAL_Y; - int outx = mapArea.x + mapArea.width - ServerConstants.PLAYERNPC_INITIAL_X, outy = mapArea.y + mapArea.height; + int leftPx = mapArea.x + YamlConfig.config.server.PLAYERNPC_INITIAL_X, px, py = mapArea.y + YamlConfig.config.server.PLAYERNPC_INITIAL_Y; + int outx = mapArea.x + mapArea.width - YamlConfig.config.server.PLAYERNPC_INITIAL_X, outy = mapArea.y + mapArea.height; int cx = calcDx(newStep), cy = calcDy(newStep); List otherPlayerNpcs = new LinkedList<>(); @@ -138,7 +139,7 @@ public class MaplePlayerNPCPositioner { private static Point reorganizePlayerNpcs(MapleMap map, int newStep, List mmoList) { if(!mmoList.isEmpty()) { - if(ServerConstants.USE_DEBUG) System.out.println("Reorganizing pnpc map, step " + newStep); + if(YamlConfig.config.server.USE_DEBUG) System.out.println("Reorganizing pnpc map, step " + newStep); List playerNpcs = new ArrayList<>(mmoList.size()); for(MapleMapObject mmo : mmoList) { @@ -189,12 +190,12 @@ public class MaplePlayerNPCPositioner { int cx = calcDx(initStep), cy = calcDy(initStep); Rectangle mapArea = map.getMapArea(); - int outx = mapArea.x + mapArea.width - ServerConstants.PLAYERNPC_INITIAL_X, outy = mapArea.y + mapArea.height; + int outx = mapArea.x + mapArea.width - YamlConfig.config.server.PLAYERNPC_INITIAL_X, outy = mapArea.y + mapArea.height; boolean reorganize = false; int i = initStep; - while(i < ServerConstants.PLAYERNPC_AREA_STEPS) { - int leftPx = mapArea.x + ServerConstants.PLAYERNPC_INITIAL_X, px, py = mapArea.y + ServerConstants.PLAYERNPC_INITIAL_Y; + while(i < YamlConfig.config.server.PLAYERNPC_AREA_STEPS) { + int leftPx = mapArea.x + YamlConfig.config.server.PLAYERNPC_INITIAL_X, px, py = mapArea.y + YamlConfig.config.server.PLAYERNPC_INITIAL_Y; while(py < outy) { px = leftPx; @@ -207,7 +208,7 @@ public class MaplePlayerNPCPositioner { map.getWorldServer().setPlayerNpcMapStep(map.getId(), i); } - if(reorganize && ServerConstants.PLAYERNPC_ORGANIZE_AREA) { + if(reorganize && YamlConfig.config.server.PLAYERNPC_ORGANIZE_AREA) { return reorganizePlayerNpcs(map, i, mmoList); } @@ -226,13 +227,13 @@ public class MaplePlayerNPCPositioner { cx = calcDx(i); cy = calcDy(i); - if(ServerConstants.PLAYERNPC_ORGANIZE_AREA) { + if(YamlConfig.config.server.PLAYERNPC_ORGANIZE_AREA) { otherPlayerNpcs = rearrangePlayerNpcPositions(map, i, mmoList.size()); } } if(i > initStep) { - map.getWorldServer().setPlayerNpcMapStep(map.getId(), ServerConstants.PLAYERNPC_AREA_STEPS - 1); + map.getWorldServer().setPlayerNpcMapStep(map.getId(), YamlConfig.config.server.PLAYERNPC_AREA_STEPS - 1); } return null; } diff --git a/src/server/maps/MapleDoor.java b/src/server/maps/MapleDoor.java index 6f270cca9d..de2749548c 100644 --- a/src/server/maps/MapleDoor.java +++ b/src/server/maps/MapleDoor.java @@ -23,6 +23,8 @@ package server.maps; import java.awt.Point; import java.util.Collection; + +import config.YamlConfig; import tools.Pair; import client.MapleCharacter; @@ -50,7 +52,7 @@ public class MapleDoor { this.target = owner.getMap(); if(target.canDeployDoor(targetPosition)) { - if(ServerConstants.USE_ENFORCE_MDOOR_POSITION) { + if(YamlConfig.config.server.USE_ENFORCE_MDOOR_POSITION) { posStatus = target.getDoorPositionStatus(targetPosition); } diff --git a/src/server/maps/MapleHiredMerchant.java b/src/server/maps/MapleHiredMerchant.java index f4f40a6b2d..f3681be2d9 100644 --- a/src/server/maps/MapleHiredMerchant.java +++ b/src/server/maps/MapleHiredMerchant.java @@ -31,6 +31,7 @@ import client.inventory.manipulator.MapleInventoryManipulator; import client.inventory.manipulator.MapleKarmaManipulator; import client.processor.FredrickProcessor; import com.mysql.jdbc.Statement; +import config.YamlConfig; import constants.ServerConstants; import java.sql.Connection; import java.sql.PreparedStatement; @@ -232,7 +233,7 @@ public class MapleHiredMerchant extends AbstractMapleMapObject { chr.announce(MaplePacketCreator.updateHiredMerchant(this, chr)); } - if (ServerConstants.USE_ENFORCE_MERCHANT_SAVE) { + if (YamlConfig.config.server.USE_ENFORCE_MERCHANT_SAVE) { chr.saveCharToDB(false); } } @@ -287,7 +288,7 @@ public class MapleHiredMerchant extends AbstractMapleMapObject { pItem.setDoesExist(false); } - if(ServerConstants.USE_ANNOUNCE_SHOPITEMSOLD) { // idea thanks to Vcoc + if(YamlConfig.config.server.USE_ANNOUNCE_SHOPITEMSOLD) { // idea thanks to Vcoc announceItemSold(newItem, price, getQuantityLeft(pItem.getItem().getItemId())); } @@ -448,7 +449,7 @@ public class MapleHiredMerchant extends AbstractMapleMapObject { e.printStackTrace(); } - if (ServerConstants.USE_ENFORCE_MERCHANT_SAVE) { + if (YamlConfig.config.server.USE_ENFORCE_MERCHANT_SAVE) { c.getPlayer().saveCharToDB(false); } diff --git a/src/server/maps/MapleMap.java b/src/server/maps/MapleMap.java index f60d03c499..bcdcb3f25e 100644 --- a/src/server/maps/MapleMap.java +++ b/src/server/maps/MapleMap.java @@ -31,6 +31,7 @@ import client.inventory.MapleInventoryType; import client.inventory.MaplePet; import client.status.MonsterStatus; import client.status.MonsterStatusEffect; +import config.YamlConfig; import constants.GameConstants; import constants.ItemConstants; import constants.ServerConstants; @@ -251,7 +252,7 @@ public class MapleMap { private static double getRangedDistance() { - return(ServerConstants.USE_MAXRANGE ? Double.POSITIVE_INFINITY : 722500); + return(YamlConfig.config.server.USE_MAXRANGE ? Double.POSITIVE_INFINITY : 722500); } public List getMapObjectsInRect(Rectangle box, List types) { @@ -752,7 +753,7 @@ public class MapleMap { final List dropEntry = new ArrayList<>(); final List visibleQuestEntry = new ArrayList<>(); final List otherQuestEntry = new ArrayList<>(); - sortDropEntries(ServerConstants.USE_SPAWN_RELEVANT_LOOT ? mob.retrieveRelevantDrops() : mi.retrieveEffectiveDrop(mob.getId()), dropEntry, visibleQuestEntry, otherQuestEntry, chr); + sortDropEntries(YamlConfig.config.server.USE_SPAWN_RELEVANT_LOOT ? mob.retrieveRelevantDrops() : mi.retrieveEffectiveDrop(mob.getId()), dropEntry, visibleQuestEntry, otherQuestEntry, chr); registerMobItemDrops(droptype, mobpos, chRate, pos, dropEntry, visibleQuestEntry, otherQuestEntry, globalEntry, chr, mob); } @@ -786,7 +787,7 @@ public class MapleMap { expireItemsTask.cancel(false); expireItemsTask = null; - if(ServerConstants.USE_SPAWN_LOOT_ON_ANIMATION) { + if(YamlConfig.config.server.USE_SPAWN_LOOT_ON_ANIMATION) { mobSpawnLootTask.cancel(false); mobSpawnLootTask = null; } @@ -846,16 +847,16 @@ public class MapleMap { cleanItemMonitor(); } } - }, ServerConstants.ITEM_MONITOR_TIME, ServerConstants.ITEM_MONITOR_TIME); + }, YamlConfig.config.server.ITEM_MONITOR_TIME, YamlConfig.config.server.ITEM_MONITOR_TIME); expireItemsTask = TimerManager.getInstance().register(new Runnable() { @Override public void run() { makeDisappearExpiredItemDrops(); } - }, ServerConstants.ITEM_EXPIRE_CHECK, ServerConstants.ITEM_EXPIRE_CHECK); + }, YamlConfig.config.server.ITEM_EXPIRE_CHECK, YamlConfig.config.server.ITEM_EXPIRE_CHECK); - if(ServerConstants.USE_SPAWN_LOOT_ON_ANIMATION) { + if(YamlConfig.config.server.USE_SPAWN_LOOT_ON_ANIMATION) { lootLock.lock(); try { mobLootEntries.clear(); @@ -898,7 +899,7 @@ public class MapleMap { } private void instantiateItemDrop(MapleMapItem mdrop) { - if(droppedItemCount.get() >= ServerConstants.ITEM_LIMIT_ON_MAP) { + if(droppedItemCount.get() >= YamlConfig.config.server.ITEM_LIMIT_ON_MAP) { MapleMapObject mapobj; do { @@ -930,7 +931,7 @@ public class MapleMap { } private void registerItemDrop(MapleMapItem mdrop) { - droppedItems.put(mdrop, !everlast ? Server.getInstance().getCurrentTime() + ServerConstants.ITEM_EXPIRE_TIME : Long.MAX_VALUE); + droppedItems.put(mdrop, !everlast ? Server.getInstance().getCurrentTime() + YamlConfig.config.server.ITEM_EXPIRE_TIME : Long.MAX_VALUE); } private void unregisterItemDrop(MapleMapItem mdrop) { @@ -975,7 +976,7 @@ public class MapleMap { private void registerMobItemDrops(byte droptype, int mobpos, int chRate, Point pos, List dropEntry, List visibleQuestEntry, List otherQuestEntry, List globalEntry, MapleCharacter chr, MapleMonster mob) { MobLootEntry mle = new MobLootEntry(droptype, mobpos, chRate, pos, dropEntry, visibleQuestEntry, otherQuestEntry, globalEntry, chr, mob); - if(ServerConstants.USE_SPAWN_LOOT_ON_ANIMATION) { + if(YamlConfig.config.server.USE_SPAWN_LOOT_ON_ANIMATION) { int animationTime = mob.getAnimationTime("die1"); lootLock.lock(); @@ -2218,7 +2219,7 @@ public class MapleMap { } }; - getWorldServer().registerTimedMapObject(expireKite, ServerConstants.KITE_EXPIRE_TIME); + getWorldServer().registerTimedMapObject(expireKite, YamlConfig.config.server.KITE_EXPIRE_TIME); } public final void spawnItemDrop(final MapleMapObject dropper, final MapleCharacter owner, final Item item, Point pos, final boolean ffaDrop, final boolean playerDrop) { @@ -3680,7 +3681,7 @@ public class MapleMap { System.out.println("----------------------------------"); */ - if(ServerConstants.USE_ENABLE_FULL_RESPAWN) { + if(YamlConfig.config.server.USE_ENABLE_FULL_RESPAWN) { return (monsterSpawn.size() - spawnedMonstersOnMap.get()); } diff --git a/src/server/maps/MapleReactor.java b/src/server/maps/MapleReactor.java index 68ef3c9e05..81cc1327f4 100644 --- a/src/server/maps/MapleReactor.java +++ b/src/server/maps/MapleReactor.java @@ -23,6 +23,7 @@ package server.maps; import client.MapleClient; import client.status.MonsterStatus; +import config.YamlConfig; import constants.ServerConstants; import java.awt.Rectangle; @@ -256,7 +257,7 @@ public class MapleReactor extends AbstractMapleMapObject { cancelReactorTimeout(); attackHit = wHit; - if (ServerConstants.USE_DEBUG == true) { + if (YamlConfig.config.server.USE_DEBUG == true) { c.getPlayer().dropMessage(5, "Hitted REACTOR " + this.getId() + " with POS " + charPos + " , STANCE " + stance + " , SkillID " + skillid + " , STATE " + stats.getType(state) + " STATESIZE " + stats.getStateSize(state)); } ReactorScriptManager.getInstance().onHit(c, this); diff --git a/src/server/partyquest/MonsterCarnival.java b/src/server/partyquest/MonsterCarnival.java index a96d0fc6e9..69443fda2f 100644 --- a/src/server/partyquest/MonsterCarnival.java +++ b/src/server/partyquest/MonsterCarnival.java @@ -2,6 +2,7 @@ package server.partyquest; import java.util.concurrent.ScheduledFuture; import client.MapleCharacter; +import config.YamlConfig; import constants.LanguageConstants; import constants.ServerConstants; import net.server.Server; @@ -112,7 +113,7 @@ public class MonsterCarnival { public void run() { respawn(); } - }, ServerConstants.RESPAWN_INTERVAL); + }, YamlConfig.config.server.RESPAWN_INTERVAL); cs.initMonsterCarnival(cpq1, room); } catch (Exception e) { diff --git a/src/server/quest/MapleQuest.java b/src/server/quest/MapleQuest.java index 88d081dab1..8f560169f5 100644 --- a/src/server/quest/MapleQuest.java +++ b/src/server/quest/MapleQuest.java @@ -31,6 +31,7 @@ import client.MapleCharacter; import client.MapleCharacter.DelayedQuestUpdate; import client.MapleQuestStatus; import client.MapleQuestStatus.Status; +import config.YamlConfig; import constants.ServerConstants; import java.util.EnumMap; import java.util.Set; @@ -228,7 +229,7 @@ public class MapleQuest { if(!repeatable) return false; IntervalRequirement ir = (IntervalRequirement) startReqs.get(MapleQuestRequirementType.INTERVAL); - return ir.getInterval() < ServerConstants.QUEST_POINT_REPEATABLE_INTERVAL * 60 * 60 * 1000; + return ir.getInterval() < YamlConfig.config.server.QUEST_POINT_REPEATABLE_INTERVAL * 60 * 60 * 1000; } public boolean canStartWithoutRequirements(MapleCharacter c) { @@ -331,8 +332,8 @@ public class MapleQuest { c.updateQuest(newStatus); - if(id / 100 == 35 && ServerConstants.TOT_MOB_QUEST_REQUIREMENT > 0) { - int setProg = 999 - Math.min(999, ServerConstants.TOT_MOB_QUEST_REQUIREMENT); + if(id / 100 == 35 && YamlConfig.config.server.TOT_MOB_QUEST_REQUIREMENT > 0) { + int setProg = 999 - Math.min(999, YamlConfig.config.server.TOT_MOB_QUEST_REQUIREMENT); for(Integer pid : newStatus.getProgress().keySet()) { if(pid >= 8200000 && pid <= 8200012) { diff --git a/src/server/quest/actions/ExpAction.java b/src/server/quest/actions/ExpAction.java index 2ad65b3928..4022e7982b 100644 --- a/src/server/quest/actions/ExpAction.java +++ b/src/server/quest/actions/ExpAction.java @@ -22,6 +22,7 @@ package server.quest.actions; import client.MapleCharacter; +import config.YamlConfig; import constants.ServerConstants; import provider.MapleData; import provider.MapleDataTool; @@ -52,7 +53,7 @@ public class ExpAction extends MapleQuestAction { } public static void runAction(MapleCharacter chr, int gain) { - if (!ServerConstants.USE_QUEST_RATE) { + if (!YamlConfig.config.server.USE_QUEST_RATE) { chr.gainExp(gain * chr.getExpRate(), true, true); } else { chr.gainExp(gain * chr.getQuestExpRate(), true, true); diff --git a/src/server/quest/actions/MesoAction.java b/src/server/quest/actions/MesoAction.java index 8f84d6d299..139888d38f 100644 --- a/src/server/quest/actions/MesoAction.java +++ b/src/server/quest/actions/MesoAction.java @@ -22,6 +22,7 @@ package server.quest.actions; import client.MapleCharacter; +import config.YamlConfig; import constants.ServerConstants; import provider.MapleData; import provider.MapleDataTool; @@ -56,7 +57,7 @@ public class MesoAction extends MapleQuestAction { if (gain < 0) { chr.gainMeso(gain, true, false, true); } else { - if (!ServerConstants.USE_QUEST_RATE) { + if (!YamlConfig.config.server.USE_QUEST_RATE) { chr.gainMeso(gain * chr.getMesoRate(), true, false, true); } else { chr.gainMeso(gain * chr.getQuestMesoRate(), true, false, true); diff --git a/src/tools/DatabaseConnection.java b/src/tools/DatabaseConnection.java index 802c2ef47f..70da1f6673 100644 --- a/src/tools/DatabaseConnection.java +++ b/src/tools/DatabaseConnection.java @@ -8,7 +8,7 @@ import java.sql.SQLException; import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; -import constants.ServerConstants; +import config.YamlConfig; /** * @author Frz - Big Daddy @@ -30,7 +30,7 @@ public class DatabaseConnection { int denies = 0; while(true) { // There is no way it can pass with a null out of here? try { - return DriverManager.getConnection(ServerConstants.DB_URL, ServerConstants.DB_USER, ServerConstants.DB_PASS); + return DriverManager.getConnection(YamlConfig.config.server.DB_URL, YamlConfig.config.server.DB_USER, YamlConfig.config.server.DB_PASS); } catch (SQLException sqle) { denies++; @@ -45,7 +45,7 @@ public class DatabaseConnection { private static int getNumberOfAccounts() { try { - Connection con = DriverManager.getConnection(ServerConstants.DB_URL, ServerConstants.DB_USER, ServerConstants.DB_PASS); + Connection con = DriverManager.getConnection(YamlConfig.config.server.DB_URL, YamlConfig.config.server.DB_USER, YamlConfig.config.server.DB_PASS); try (PreparedStatement ps = con.prepareStatement("SELECT count(*) FROM accounts")) { try (ResultSet rs = ps.executeQuery()) { rs.next(); @@ -69,14 +69,14 @@ public class DatabaseConnection { ds = null; - if(ServerConstants.DB_CONNECTION_POOL) { + if(YamlConfig.config.server.DB_CONNECTION_POOL) { // Connection Pool on database ftw! HikariConfig config = new HikariConfig(); - config.setJdbcUrl(ServerConstants.DB_URL); + config.setJdbcUrl(YamlConfig.config.server.DB_URL); - config.setUsername(ServerConstants.DB_USER); - config.setPassword(ServerConstants.DB_PASS); + config.setUsername(YamlConfig.config.server.DB_USER); + config.setPassword(YamlConfig.config.server.DB_PASS); // Make sure pool size is comfortable for the worst case scenario. // Under 100 accounts? Make it 10. Over 10000 accounts? Make it 30. diff --git a/src/tools/MaplePacketCreator.java b/src/tools/MaplePacketCreator.java index 7258b2720c..8f9ff19d30 100644 --- a/src/tools/MaplePacketCreator.java +++ b/src/tools/MaplePacketCreator.java @@ -62,6 +62,7 @@ import client.inventory.ModifyInventory; import client.newyear.NewYearCardRecord; import client.status.MonsterStatus; import client.status.MonsterStatusEffect; +import config.YamlConfig; import constants.ExpTable; import constants.GameConstants; import constants.ItemConstants; @@ -712,8 +713,8 @@ public class MaplePacketCreator { mplew.write(c.getGender()); boolean canFly = Server.getInstance().canFly(c.getAccID()); - mplew.writeBool((ServerConstants.USE_ENFORCE_ADMIN_ACCOUNT || canFly) ? c.getGMLevel() > 1 : false); // thanks Steve(kaito1410) for pointing the GM account boolean here - mplew.write(((ServerConstants.USE_ENFORCE_ADMIN_ACCOUNT || canFly) && c.getGMLevel() > 1) ? 0x80 : 0); // Admin Byte. 0x80,0x40,0x20.. Rubbish. + mplew.writeBool((YamlConfig.config.server.USE_ENFORCE_ADMIN_ACCOUNT || canFly) ? c.getGMLevel() > 1 : false); // thanks Steve(kaito1410) for pointing the GM account boolean here + mplew.write(((YamlConfig.config.server.USE_ENFORCE_ADMIN_ACCOUNT || canFly) && c.getGMLevel() > 1) ? 0x80 : 0); // Admin Byte. 0x80,0x40,0x20.. Rubbish. mplew.write(0); // Country Code. mplew.writeMapleAsciiString(c.getAccountName()); @@ -725,8 +726,8 @@ public class MaplePacketCreator { mplew.writeInt(1); // 1: Remove the "Select the world you want to play in" - mplew.write(ServerConstants.ENABLE_PIN && !c.canBypassPin() ? 0 : 1); // 0 = Pin-System Enabled, 1 = Disabled - mplew.write(ServerConstants.ENABLE_PIC && !c.canBypassPic() ? (c.getPic() == null || c.getPic().equals("") ? 0 : 1) : 2); // 0 = Register PIC, 1 = Ask for PIC, 2 = Disabled + mplew.write(YamlConfig.config.server.ENABLE_PIN && !c.canBypassPin() ? 0 : 1); // 0 = Pin-System Enabled, 1 = Disabled + mplew.write(YamlConfig.config.server.ENABLE_PIC && !c.canBypassPic() ? (c.getPic() == null || c.getPic().equals("") ? 0 : 1) : 2); // 0 = Register PIC, 1 = Ask for PIC, 2 = Disabled return mplew.getPacket(); } @@ -912,8 +913,8 @@ public class MaplePacketCreator { addCharEntry(mplew, chr, false); } - mplew.write(ServerConstants.ENABLE_PIC && !c.canBypassPic() ? (c.getPic() == null || c.getPic().equals("") ? 0 : 1) : 2); - mplew.writeInt(ServerConstants.COLLECTIVE_CHARSLOT ? chars.size() + c.getAvailableCharacterSlots() : c.getCharacterSlots()); + mplew.write(YamlConfig.config.server.ENABLE_PIC && !c.canBypassPic() ? (c.getPic() == null || c.getPic().equals("") ? 0 : 1) : 2); + mplew.writeInt(YamlConfig.config.server.COLLECTIVE_CHARSLOT ? chars.size() + c.getAvailableCharacterSlots() : c.getCharacterSlots()); return mplew.getPacket(); } diff --git a/src/tools/packets/Fishing.java b/src/tools/packets/Fishing.java index e4569ad261..c658548b60 100644 --- a/src/tools/packets/Fishing.java +++ b/src/tools/packets/Fishing.java @@ -20,6 +20,7 @@ package tools.packets; import client.MapleCharacter; +import config.YamlConfig; import constants.GameConstants; import constants.ItemConstants; import constants.ServerConstants; @@ -56,7 +57,7 @@ public class Fishing { private static boolean hitFishingTime(MapleCharacter chr, int baitLevel, double yearLikelihood, double timeLikelihood) { double baitLikelihood = 0.0002 * chr.getWorldServer().getFishingRate() * baitLevel; // can improve 10.0 at "max level 50000" on rate 1x - if (ServerConstants.USE_DEBUG) { + if (YamlConfig.config.server.USE_DEBUG) { chr.dropMessage(5, "----- FISHING RESULT -----"); chr.dropMessage(5, "Likelihoods - Year: " + yearLikelihood + " Time: " + timeLikelihood + " Meso: " + baitLikelihood); chr.dropMessage(5, "Score rolls - Year: " + (0.23 * yearLikelihood) + " Time: " + (0.77 * timeLikelihood) + " Meso: " + baitLikelihood); diff --git a/world.ini b/world.ini deleted file mode 100644 index 0dda7a5575..0000000000 --- a/world.ini +++ /dev/null @@ -1,153 +0,0 @@ -#Author: Ronan, Vcoc -#World Name: (0 "Scania", 1 "Bera", 2 "Broa", 3 "Windia", 4 "Khaini", 5 "Bellocan", 6 "Mardia", 7 "Kradia", 8 "Yellonde", 9 "Demethos", 10 "Galicia", 11 "El Nido", 12 "Zenith", 13 "Arcenia", 14 "Kastia", 15 "Judis", 16 "Plana", 17 "Kalluna", 18 "Stius", 19 "Croa", 20 "Medere") -#Flag types: (0 = nothing, 1 = event, 2 = new, 3 = hot) -#Recommended to use only up to 15 worlds -gmserver=false -worlds=1 - -#Properties for Scania 0 -flag0=0 -servermessage0=Welcome to Scania! -eventmessage0=Scania! -whyamirecommended0=Welcome to Scania! -channels0=3 - -#Properties for Bera 1 -flag1=0 -servermessage1=Welcome to Bera! -eventmessage1=Bera! -whyamirecommended1=Welcome to Bera! -channels1=3 - -#Properties for Broa 2 -flag2=0 -servermessage2=Welcome to Broa! -eventmessage2=Broa! -whyamirecommended2=Welcome to Broa! -channels2=3 - -#Properties for Windia 3 -flag3=0 -servermessage3=Welcome to Windia! -eventmessage3=Windia! -whyamirecommended3=Welcome to Windia! -channels3=3 - -#Properties for Khaini 4 -flag4=0 -servermessage4=Welcome to Khaini! -eventmessage4=Khaini! -whyamirecommended4=Welcome to Khaini! -channels4=3 - -#Properties for Bellocan 5 -flag5=0 -servermessage5=Welcome to Bellocan! -eventmessage5=Bellocan! -whyamirecommended5=Welcome to Bellocan! -channels5=3 - -#Properties for Mardia 6 -flag6=0 -servermessage6=Welcome to Mardia! -eventmessage6=Mardia! -whyamirecommended6=Welcome to Mardia! -channels6=3 - -#Properties for Kradia 7 -flag7=0 -servermessage7=Welcome to Kradia! -eventmessage7=Kradia! -whyamirecommended7=Welcome to Kradia! -channels7=3 - -#Properties for Yellonde 8 -flag8=0 -servermessage8=Welcome to Yellonde! -eventmessage8=Yellonde! -whyamirecommended8=Welcome to Yellonde! -channels8=3 - -#Properties for Demethos 9 -flag9=0 -servermessage9=Welcome to Demethos! -eventmessage9=Demethos! -whyamirecommended9=Welcome to Demethos! -channels9=3 - -#Properties for Galicia 10 -flag10=0 -servermessage10=Welcome to Galicia! -eventmessage10=Galicia! -whyamirecommended10=Welcome to Galicia! -channels10=3 - -#Properties for El Nido 11 -flag11=0 -servermessage11=Welcome to El Nido! -eventmessage11=El Nido! -whyamirecommended11=Welcome to El Nido! -channels11=3 - -#Properties for Zenith 12 -flag12=0 -servermessage12=Welcome to Zenith! -eventmessage12=Zenith! -whyamirecommended12=Welcome to Zenith! -channels12=3 - -#Properties for Arcenia 13 -flag13=0 -servermessage13=Welcome to Arcenia! -eventmessage13=Arcenia! -whyamirecommended13=Welcome to Arcenia! -channels13=3 - -#Properties for Kastia 14 -flag14=0 -servermessage14=Welcome to Kastia! -eventmessage14=Kastia! -whyamirecommended14=Welcome to Kastia! -channels14=3 - -#Properties for Judis 15 -flag15=0 -servermessage15=Welcome to Judis! -eventmessage15=Judis! -whyamirecommended15=Welcome to Judis! -channels15=3 - -#Properties for Plana 16 -flag16=0 -servermessage16=Welcome to Plana! -eventmessage16=Plana! -whyamirecommended16=Welcome to Plana! -channels16=3 - -#Properties for Kalluna 17 -flag17=0 -servermessage17=Welcome to Kalluna! -eventmessage17=Kalluna! -whyamirecommended17=Welcome to Kalluna! -channels17=3 - -#Properties for Stius 18 -flag18=0 -servermessage18=Welcome to Stius! -eventmessage18=Stius! -whyamirecommended18=Welcome to Stius! -channels18=3 - -#Properties for Croa 19 -flag19=0 -servermessage19=Welcome to Croa! -eventmessage19=Croa! -whyamirecommended19=Welcome to Croa! -channels19=3 - -#Properties for Medere 20 -flag20=0 -servermessage20=Welcome to Medere! -eventmessage20=Medere! -whyamirecommended20=Welcome to Medere! -channels20=3 From eae6dccbc038c9b0f1556691e1f28dbc370da589 Mon Sep 17 00:00:00 2001 From: ronancpl Date: Fri, 20 Sep 2019 22:41:19 -0300 Subject: [PATCH 29/37] Broad packages refactor Added macro update when using SP reset. Refactored several packages containing general classes. Fixed "worker" nomenclature in class methods misleadingly denoting "task". --- config.yaml | 5 +- docs/mychanges_ptbr.txt | 10 +- nbproject/project.properties | 12 +- scripts/quest/3301.js | 7 +- scripts/quest/3303.js | 5 + src/client/AbstractMapleCharacterObject.java | 4 +- src/client/MapleCharacter.java | 51 ++- src/client/MapleClient.java | 10 +- src/client/MapleDisease.java | 2 +- src/client/MapleFamily.java | 4 +- src/client/SkillMacro.java | 12 + src/client/autoban/AutobanFactory.java | 1 - src/client/autoban/AutobanManager.java | 1 - .../command/commands/gm0/BuyBackCommand.java | 2 +- .../commands/gm0/DropLimitCommand.java | 1 - .../commands/gm0/EnableAuthCommand.java | 2 +- .../commands/gm0/MapOwnerClaimCommand.java | 1 - .../command/commands/gm0/RatesCommand.java | 1 - .../commands/gm0/ShowRatesCommand.java | 1 - .../command/commands/gm0/StatDexCommand.java | 1 - .../command/commands/gm0/StatIntCommand.java | 1 - .../command/commands/gm0/StatLukCommand.java | 1 - .../command/commands/gm0/StatStrCommand.java | 1 - .../command/commands/gm0/TimeCommand.java | 2 +- .../command/commands/gm1/GotoCommand.java | 2 +- .../command/commands/gm2/ApCommand.java | 1 - .../command/commands/gm2/ItemCommand.java | 3 +- .../command/commands/gm2/ItemDropCommand.java | 3 +- .../command/commands/gm2/LevelCommand.java | 1 - .../command/commands/gm2/MaxStatCommand.java | 1 - .../command/commands/gm2/RechargeCommand.java | 2 +- .../command/commands/gm2/SpCommand.java | 1 - .../command/commands/gm3/FaceCommand.java | 2 +- .../command/commands/gm3/HairCommand.java | 2 +- .../command/commands/gm3/MusicCommand.java | 2 +- .../command/commands/gm4/ProItemCommand.java | 2 +- .../commands/gm4/SetEqStatCommand.java | 2 +- .../command/commands/gm5/IpListCommand.java | 2 +- .../command/commands/gm5/SetCommand.java | 1 - .../commands/gm5/ShowMoveLifeCommand.java | 1 - .../commands/gm5/ShowPacketsCommand.java | 1 - .../commands/gm5/ShowSessionsCommand.java | 2 +- .../commands/gm6/SupplyRateCouponCommand.java | 1 - src/client/creator/CharacterFactory.java | 1 - .../creator/CharacterFactoryRecipe.java | 1 - src/client/inventory/Equip.java | 5 +- src/client/inventory/Item.java | 2 +- src/client/inventory/MapleInventory.java | 2 +- src/client/inventory/MaplePet.java | 2 +- .../MapleInventoryManipulator.java | 3 +- .../manipulator/MapleKarmaManipulator.java | 2 +- .../{ => action}/BuybackProcessor.java | 2 +- .../{ => action}/MakerProcessor.java | 9 +- .../{ => action}/PetAutopotProcessor.java | 3 +- .../{ => action}/SpawnPetProcessor.java | 2 +- .../processor/{ => npc}/DueyProcessor.java | 5 +- .../{ => npc}/FredrickProcessor.java | 2 +- .../processor/{ => npc}/StorageProcessor.java | 5 +- .../{ => stat}/AssignAPProcessor.java | 3 +- .../{ => stat}/AssignSPProcessor.java | 4 +- src/config/ServerConfig.java | 1 + src/constants/ServerConstants.java | 34 -- src/constants/{ => game}/ExpTable.java | 2 +- src/constants/{ => game}/GameConstants.java | 2 +- .../{ => game}/ScriptableNPCConstants.java | 2 +- src/constants/{ => inventory}/EquipSlot.java | 2 +- src/constants/{ => inventory}/EquipType.java | 2 +- .../{ => inventory}/ItemConstants.java | 3 +- src/constants/{ => net}/OpcodeConstants.java | 2 +- src/constants/net/ServerConstants.java | 332 ++++++++++++++++++ .../{ => string}/CharsetConstants.java | 2 +- .../{ => string}/LanguageConstants.java | 2 +- src/net/MapleServerHandler.java | 4 +- src/net/mina/MaplePacketDecoder.java | 5 +- src/net/mina/MaplePacketEncoder.java | 5 +- src/net/server/Server.java | 60 ++-- .../audit/locks/active/TrackerReadLock.java | 1 - .../locks/active/TrackerReentrantLock.java | 1 - .../audit/locks/active/TrackerWriteLock.java | 1 - .../audit/locks/empty/EmptyReadLock.java | 2 +- .../audit/locks/empty/EmptyReentrantLock.java | 2 +- .../audit/locks/empty/EmptyWriteLock.java | 2 +- src/net/server/channel/Channel.java | 10 +- .../handlers/AbstractDealDamageHandler.java | 4 +- .../channel/handlers/AcceptFamilyHandler.java | 9 +- .../channel/handlers/AdminChatHandler.java | 1 - .../channel/handlers/AranComboHandler.java | 2 +- .../channel/handlers/AutoAssignHandler.java | 2 +- .../handlers/CashOperationHandler.java | 4 +- .../handlers/CloseRangeDamageHandler.java | 4 +- .../handlers/DenyPartyRequestHandler.java | 6 +- .../channel/handlers/DistributeAPHandler.java | 2 +- .../channel/handlers/DistributeSPHandler.java | 2 +- .../server/channel/handlers/DueyHandler.java | 3 +- .../channel/handlers/EnterMTSHandler.java | 3 +- .../handlers/FaceExpressionHandler.java | 2 +- .../channel/handlers/FamilyAddHandler.java | 5 +- .../handlers/FamilySeparateHandler.java | 1 - .../handlers/FamilySummonResponseHandler.java | 9 +- .../channel/handlers/FamilyUseHandler.java | 5 +- .../handlers/FieldDamageMobHandler.java | 2 +- .../channel/handlers/FredrickHandler.java | 2 +- .../channel/handlers/GeneralChatHandler.java | 1 - .../handlers/GuildOperationHandler.java | 4 +- .../handlers/HiredMerchantRequest.java | 2 +- .../handlers/InventoryMergeHandler.java | 1 - .../handlers/InventorySortHandler.java | 2 +- .../channel/handlers/ItemRewardHandler.java | 2 +- .../channel/handlers/KeymapChangeHandler.java | 2 +- .../server/channel/handlers/MTSHandler.java | 2 +- .../channel/handlers/MagicDamageHandler.java | 2 +- .../channel/handlers/MakerSkillHandler.java | 2 +- .../channel/handlers/MessengerHandler.java | 8 +- .../channel/handlers/MoveLifeHandler.java | 1 - .../channel/handlers/MultiChatHandler.java | 1 - .../channel/handlers/NPCShopHandler.java | 2 +- .../channel/handlers/NPCTalkHandler.java | 3 +- .../channel/handlers/NewYearCardHandler.java | 2 +- .../channel/handlers/OpenFamilyHandler.java | 1 - .../handlers/OpenFamilyPedigreeHandler.java | 1 - .../channel/handlers/OwlWarpHandler.java | 2 +- .../handlers/PartyOperationHandler.java | 10 +- .../channel/handlers/PetAutoPotHandler.java | 17 +- .../channel/handlers/PetChatHandler.java | 1 - .../channel/handlers/PetLootHandler.java | 2 +- .../handlers/PlayerInteractionHandler.java | 5 +- .../handlers/PlayerLoggedinHandler.java | 10 +- .../channel/handlers/RangedAttackHandler.java | 4 +- .../handlers/RemoteGachaponHandler.java | 2 +- .../channel/handlers/RingActionHandler.java | 2 +- .../channel/handlers/ScriptedItemHandler.java | 2 +- .../channel/handlers/ScrollHandler.java | 2 +- .../channel/handlers/SkillMacroHandler.java | 2 + .../channel/handlers/SpawnPetHandler.java | 2 +- .../channel/handlers/SpecialMoveHandler.java | 2 +- .../channel/handlers/SpouseChatHandler.java | 1 - .../channel/handlers/StorageHandler.java | 2 +- .../channel/handlers/TakeDamageHandler.java | 5 +- .../channel/handlers/TransferNameHandler.java | 1 - .../handlers/TransferWorldHandler.java | 1 - .../channel/handlers/UseCashItemHandler.java | 39 +- .../channel/handlers/UseCatchItemHandler.java | 2 +- .../channel/handlers/UseChairHandler.java | 2 +- .../channel/handlers/UseItemHandler.java | 3 +- .../channel/handlers/UseMountFoodHandler.java | 2 +- .../handlers/UseOwlOfMinervaHandler.java | 2 +- .../channel/handlers/WeddingHandler.java | 3 +- .../channel/handlers/WhisperHandler.java | 1 - .../{worker => task}/BaseScheduler.java | 3 +- .../{worker => task}/EventScheduler.java | 2 +- .../FaceExpressionScheduler.java | 2 +- .../MobAnimationScheduler.java | 2 +- .../MobClearSkillScheduler.java | 2 +- .../{worker => task}/MobMistScheduler.java | 2 +- .../{worker => task}/MobStatusScheduler.java | 3 +- .../{worker => task}/OverallScheduler.java | 2 +- .../{worker => task}/SchedulerListener.java | 2 +- .../coordinator/{ => login}/LoginStorage.java | 3 +- .../MapleLoginBypassCoordinator.java | 3 +- .../MapleMatchCheckerCoordinator.java | 2 +- .../listener/MatchCheckerCPQChallenge.java | 2 +- .../listener/MatchCheckerGuildCreation.java | 3 +- .../MaplePartySearchCoordinator.java | 6 +- .../partysearch/PartySearchCharacter.java | 1 - .../MapleSessionCoordinator.java | 4 +- .../MapleEventRecallCoordinator.java | 3 +- .../{ => world}/MapleInviteCoordinator.java | 2 +- .../MapleMonsterAggroCoordinator.java | 3 +- src/net/server/guild/MapleAlliance.java | 6 +- src/net/server/guild/MapleGuild.java | 9 +- .../handlers/login/AfterLoginHandler.java | 2 +- .../handlers/login/CharSelectedHandler.java | 4 +- .../login/CharSelectedWithPicHandler.java | 4 +- .../handlers/login/LoginPasswordHandler.java | 3 +- .../handlers/login/RegisterPicHandler.java | 4 +- .../handlers/login/RegisterPinHandler.java | 2 +- .../login/ServerlistRequestHandler.java | 2 +- .../handlers/login/SetGenderHandler.java | 2 +- .../handlers/login/ViewAllCharHandler.java | 1 - .../login/ViewAllCharRegisterPicHandler.java | 4 +- .../login/ViewAllCharSelectedHandler.java | 4 +- .../ViewAllCharSelectedWithPicHandler.java | 4 +- .../BaseWorker.java => task/BaseTask.java} | 6 +- .../BossLogTask.java} | 4 +- .../CharacterAutosaverTask.java} | 7 +- .../CharacterDiseaseTask.java} | 4 +- .../CouponTask.java} | 4 +- .../DueyFredrickTask.java} | 8 +- .../EventRecallCoordinatorTask.java} | 6 +- .../FamilyDailyResetTask.java} | 6 +- .../FishingTask.java} | 6 +- .../HiredMerchantTask.java} | 6 +- .../InvitationTask.java} | 6 +- .../LoginCoordinatorTask.java} | 6 +- .../LoginStorageTask.java} | 8 +- .../MapOwnershipTask.java} | 6 +- .../MountTirednessTask.java} | 6 +- .../PartySearchTask.java} | 6 +- .../PetFullnessTask.java} | 6 +- .../RankingCommandTask.java} | 4 +- .../RankingLoginTask.java} | 6 +- .../ReleaseLockTask.java} | 4 +- .../RespawnTask.java} | 4 +- .../ServerMessageTask.java} | 6 +- .../TimedMapObjectTask.java} | 6 +- .../TimeoutTask.java} | 7 +- .../WeddingReservationTask.java} | 6 +- src/net/server/world/MapleParty.java | 3 +- src/net/server/world/World.java | 66 ++-- src/provider/wz/XMLDomMapleData.java | 2 +- src/scripting/AbstractPlayerInteraction.java | 6 +- src/scripting/AbstractScriptManager.java | 2 +- src/scripting/event/EventInstanceManager.java | 8 +- src/scripting/event/EventManager.java | 10 +- src/scripting/event/EventScheduledFuture.java | 2 +- .../EventScriptScheduler.java | 3 +- src/scripting/npc/NPCConversationManager.java | 7 +- src/scripting/quest/QuestScriptManager.java | 2 +- .../reactor/ReactorActionManager.java | 3 +- src/server/CashShop.java | 4 +- src/server/MakerItemFactory.java | 3 +- src/server/MapleItemInformationProvider.java | 6 +- src/server/MapleShop.java | 2 +- src/server/MapleStatEffect.java | 4 +- src/server/MapleStorageInventory.java | 3 +- src/server/MapleTrade.java | 12 +- .../expeditions/MapleExpeditionBossLog.java | 1 - .../expeditions/MapleExpeditionType.java | 1 - src/server/life/ChangeableStats.java | 2 +- src/server/life/MapleMonster.java | 3 +- .../life/MapleMonsterInformationProvider.java | 3 +- src/server/life/MaplePlayerNPC.java | 4 +- src/server/life/MobSkill.java | 2 +- .../life/positioner/MaplePlayerNPCPodium.java | 1 - .../positioner/MaplePlayerNPCPositioner.java | 1 - src/server/maps/MapleDoor.java | 2 +- src/server/maps/MapleGenericPortal.java | 2 +- src/server/maps/MapleHiredMerchant.java | 3 +- src/server/maps/MapleMap.java | 7 +- src/server/maps/MapleReactor.java | 2 - src/server/partyquest/AriantColiseum.java | 2 +- src/server/partyquest/MonsterCarnival.java | 3 +- src/server/quest/MapleQuest.java | 1 - src/server/quest/actions/ExpAction.java | 1 - src/server/quest/actions/ItemAction.java | 2 +- src/server/quest/actions/MesoAction.java | 1 - src/server/quest/actions/PetSkillAction.java | 2 +- .../quest/requirements/ItemRequirement.java | 2 +- src/tools/HexTool.java | 2 +- src/tools/MaplePacketCreator.java | 7 +- .../output/GenericLittleEndianWriter.java | 2 +- src/tools/packets/Fishing.java | 6 +- wz/Quest.wz/Check.img.xml | 7 +- 253 files changed, 867 insertions(+), 538 deletions(-) rename src/client/processor/{ => action}/BuybackProcessor.java (95%) rename src/client/processor/{ => action}/MakerProcessor.java (99%) rename src/client/processor/{ => action}/PetAutopotProcessor.java (99%) rename src/client/processor/{ => action}/SpawnPetProcessor.java (99%) rename src/client/processor/{ => npc}/DueyProcessor.java (99%) rename src/client/processor/{ => npc}/FredrickProcessor.java (99%) rename src/client/processor/{ => npc}/StorageProcessor.java (99%) rename src/client/processor/{ => stat}/AssignAPProcessor.java (99%) rename src/client/processor/{ => stat}/AssignSPProcessor.java (98%) delete mode 100644 src/constants/ServerConstants.java rename src/constants/{ => game}/ExpTable.java (99%) rename src/constants/{ => game}/GameConstants.java (99%) rename src/constants/{ => game}/ScriptableNPCConstants.java (95%) rename src/constants/{ => inventory}/EquipSlot.java (98%) rename src/constants/{ => inventory}/EquipType.java (98%) rename src/constants/{ => inventory}/ItemConstants.java (99%) rename src/constants/{ => net}/OpcodeConstants.java (98%) create mode 100644 src/constants/net/ServerConstants.java rename src/constants/{ => string}/CharsetConstants.java (97%) rename src/constants/{ => string}/LanguageConstants.java (99%) rename src/net/server/channel/{worker => task}/BaseScheduler.java (99%) rename src/net/server/channel/{worker => task}/EventScheduler.java (97%) rename src/net/server/channel/{worker => task}/FaceExpressionScheduler.java (97%) rename src/net/server/channel/{worker => task}/MobAnimationScheduler.java (98%) rename src/net/server/channel/{worker => task}/MobClearSkillScheduler.java (97%) rename src/net/server/channel/{worker => task}/MobMistScheduler.java (97%) rename src/net/server/channel/{worker => task}/MobStatusScheduler.java (98%) rename src/net/server/channel/{worker => task}/OverallScheduler.java (97%) rename src/net/server/channel/{worker => task}/SchedulerListener.java (96%) rename src/net/server/coordinator/{ => login}/LoginStorage.java (98%) rename src/net/server/coordinator/{ => login}/MapleLoginBypassCoordinator.java (98%) rename src/net/server/coordinator/{ => matchchecker}/MapleMatchCheckerCoordinator.java (99%) rename src/net/server/coordinator/{ => partysearch}/MaplePartySearchCoordinator.java (98%) rename src/net/server/coordinator/{ => session}/MapleSessionCoordinator.java (99%) rename src/net/server/coordinator/{ => world}/MapleEventRecallCoordinator.java (97%) rename src/net/server/coordinator/{ => world}/MapleInviteCoordinator.java (99%) rename src/net/server/coordinator/{ => world}/MapleMonsterAggroCoordinator.java (99%) rename src/net/server/{worker/BaseWorker.java => task/BaseTask.java} (89%) rename src/net/server/{worker/BossLogWorker.java => task/BossLogTask.java} (93%) rename src/net/server/{worker/CharacterAutosaverWorker.java => task/CharacterAutosaverTask.java} (85%) rename src/net/server/{worker/CharacterDiseaseWorker.java => task/CharacterDiseaseTask.java} (93%) rename src/net/server/{worker/CouponWorker.java => task/CouponTask.java} (94%) rename src/net/server/{worker/DueyFredrickWorker.java => task/DueyFredrickTask.java} (86%) rename src/net/server/{worker/EventRecallCoordinatorWorker.java => task/EventRecallCoordinatorTask.java} (87%) rename src/net/server/{worker/FamilyDailyResetWorker.java => task/FamilyDailyResetTask.java} (94%) rename src/net/server/{worker/FishingWorker.java => task/FishingTask.java} (88%) rename src/net/server/{worker/HiredMerchantWorker.java => task/HiredMerchantTask.java} (87%) rename src/net/server/{worker/InvitationWorker.java => task/InvitationTask.java} (88%) rename src/net/server/{worker/LoginCoordinatorWorker.java => task/LoginCoordinatorTask.java} (87%) rename src/net/server/{worker/LoginStorageWorker.java => task/LoginStorageTask.java} (84%) rename src/net/server/{worker/MapOwnershipWorker.java => task/MapOwnershipTask.java} (88%) rename src/net/server/{worker/MountTirednessWorker.java => task/MountTirednessTask.java} (87%) rename src/net/server/{worker/PartySearchWorker.java => task/PartySearchTask.java} (88%) rename src/net/server/{worker/PetFullnessWorker.java => task/PetFullnessTask.java} (88%) rename src/net/server/{worker/RankingCommandWorker.java => task/RankingCommandTask.java} (92%) rename src/net/server/{worker/RankingLoginWorker.java => task/RankingLoginTask.java} (97%) rename src/net/server/{worker/ReleaseLockWorker.java => task/ReleaseLockTask.java} (93%) rename src/net/server/{worker/RespawnWorker.java => task/RespawnTask.java} (89%) rename src/net/server/{worker/ServerMessageWorker.java => task/ServerMessageTask.java} (89%) rename src/net/server/{worker/TimedMapObjectWorker.java => task/TimedMapObjectTask.java} (87%) rename src/net/server/{worker/TimeoutWorker.java => task/TimeoutTask.java} (82%) rename src/net/server/{worker/WeddingReservationWorker.java => task/WeddingReservationTask.java} (92%) rename src/scripting/event/{worker => scheduler}/EventScriptScheduler.java (98%) diff --git a/config.yaml b/config.yaml index 5156641d7f..c288ae3795 100644 --- a/config.yaml +++ b/config.yaml @@ -162,12 +162,13 @@ server: USE_THREAD_TRACKER: true #[SEVERE] This deadlock auditing thing will bloat the memory as fast as the time frame one takes to lose track of a raindrop on a tempesting day. Only for debugging purposes. #Database Configuration - DB_URL: "" - DB_USER: "" + DB_URL: "jdbc:mysql://localhost:3306/heavenms" + DB_USER: "root" DB_PASS: "" DB_CONNECTION_POOL: true #Installs a connection pool to hub DB connections. Set false to default. #Login Configuration + WORLDS: 1 #Initial number of worlds on the server. WLDLIST_SIZE: 21 #Max possible worlds on the server. CHANNEL_SIZE: 20 #Max possible channels per world (which is 20, based on the channel list on login phase). CHANNEL_LOAD: 100 #Max players per channel (limit actually used to calculate the World server capacity). diff --git a/docs/mychanges_ptbr.txt b/docs/mychanges_ptbr.txt index a0a39b884b..09e8877a9d 100644 --- a/docs/mychanges_ptbr.txt +++ b/docs/mychanges_ptbr.txt @@ -2135,4 +2135,12 @@ Adicionado checagem por evidência de disponibilidade de scripts em quests. Corrigido inscrição de itens no MTS levando a certos atributos de itens sendo perdidos no processo. Adicionado ganho de MaxHP extra da skill para Thunderbreakers, em ambos casos de aumento de nível e de MaxHP usando AP. Refatorado ação de autopots, permitindo o mesmo a agir imediatamente após detecção de perda suficiente de HP/MP ao usar itens ou skills. -Adicionado efeito sonoro de portal ao atravessar Mystic Door. \ No newline at end of file +Adicionado efeito sonoro de portal ao atravessar Mystic Door. + +16 Setembro 2019, +Adicionado checagem no uso de autopots ao usar HP/MP, limites são calculados baseado em estimativa detectada de uso dos autopots pelo lado cliente. + +20 Setembro 2019, +Adicionado update de macros ao usar SP reset. +Refatorado vários pacotes Java contendo classes diversificadas. +Corrigido nomenclatura errônea de "worker" introduzida, querendo significar "task". \ No newline at end of file diff --git a/nbproject/project.properties b/nbproject/project.properties index db7c8c2d82..0f9bb87365 100644 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -29,11 +29,16 @@ dist.javadoc.dir=${dist.dir}/javadoc endorsed.classpath= excludes= file.reference.HikariCP-java7-2.4.13.jar=cores/HikariCP-java7-2.4.13.jar +file.reference.jackson-annotations-2.9.9.jar=cores/jackson-annotations-2.9.9.jar +file.reference.jackson-core-2.9.9.jar=cores/jackson-core-2.9.9.jar +file.reference.jackson-databind-2.9.9.3.jar=cores/jackson-databind-2.9.9.3.jar +file.reference.jackson-dataformat-yaml-2.9.9.jar=cores/jackson-dataformat-yaml-2.9.9.jar file.reference.MapleSolaxia-src=src file.reference.mina-core-2.0.19.jar=cores/mina-core-2.0.19.jar file.reference.mysql-connector-java-bin.jar=cores/mysql-connector-java-bin.jar file.reference.slf4j-api-1.7.21.jar=cores/slf4j-api-1.7.21.jar file.reference.slf4j-jdk14-1.7.5.jar=cores/slf4j-jdk14-1.7.5.jar +file.reference.snakeyaml-1.25.jar=cores/snakeyaml-1.25.jar includes=** jar.archive.disabled=${jnlp.enabled} jar.compress=true @@ -43,7 +48,12 @@ javac.classpath=\ ${file.reference.slf4j-api-1.7.21.jar}:\ ${file.reference.HikariCP-java7-2.4.13.jar}:\ ${file.reference.mysql-connector-java-bin.jar}:\ - ${file.reference.slf4j-jdk14-1.7.5.jar} + ${file.reference.slf4j-jdk14-1.7.5.jar}:\ + ${file.reference.jackson-annotations-2.9.9.jar}:\ + ${file.reference.jackson-core-2.9.9.jar}:\ + ${file.reference.jackson-databind-2.9.9.3.jar}:\ + ${file.reference.jackson-dataformat-yaml-2.9.9.jar}:\ + ${file.reference.snakeyaml-1.25.jar} # Space-separated list of extra javac options javac.compilerargs= javac.deprecation=false diff --git a/scripts/quest/3301.js b/scripts/quest/3301.js index bcf0edca88..9bd68a33b7 100644 --- a/scripts/quest/3301.js +++ b/scripts/quest/3301.js @@ -45,8 +45,13 @@ function end(mode, type, selection) { qm.dispose(); } } else if (status == 0) { + if (!qm.haveItem(oreArray[selection], 2)) { + qm.sendNext("What's this, you haven't got the ores. No ores no deal!"); + return; + } + qm.gainItem(oreArray[selection], -2); // Take 2 ores - qm.sendNext("Then wait for awhile. I'll go and get the stuff to help you pass the test of Chief Zanumist."); + qm.sendNext("Then wait for awhile. I'll go and get the stuff to help you pass the test of Chief Zenumist."); qm.forceCompleteQuest(); } else if (status == 1) { qm.dispose(); diff --git a/scripts/quest/3303.js b/scripts/quest/3303.js index a9d44c42fe..402f42317f 100644 --- a/scripts/quest/3303.js +++ b/scripts/quest/3303.js @@ -45,6 +45,11 @@ function end(mode, type, selection) { qm.dispose(); } } else if (status == 0) { + if (!qm.haveItem(oreArray[selection], 2)) { // thanks resinate for noticing a function missing here + qm.sendNext("What's this, you haven't got the ores. No ores no deal!"); + return; + } + qm.gainItem(oreArray[selection], -2); // Take 2 ores qm.sendNext("Then wait for awhile. I'll go and get the stuff to help you pass the test of Chief Alcadno."); qm.forceCompleteQuest(); diff --git a/src/client/AbstractMapleCharacterObject.java b/src/client/AbstractMapleCharacterObject.java index 5d95db4bb9..9605477475 100644 --- a/src/client/AbstractMapleCharacterObject.java +++ b/src/client/AbstractMapleCharacterObject.java @@ -20,8 +20,8 @@ package client; import config.YamlConfig; -import constants.GameConstants; -import constants.ServerConstants; +import constants.game.GameConstants; +import constants.net.ServerConstants; import java.util.Arrays; import java.util.HashMap; import java.util.Map; diff --git a/src/client/MapleCharacter.java b/src/client/MapleCharacter.java index bfb185898f..3727d274df 100644 --- a/src/client/MapleCharacter.java +++ b/src/client/MapleCharacter.java @@ -58,7 +58,7 @@ import net.server.PlayerCoolDownValueHolder; import net.server.Server; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.factory.MonitoredReentrantLockFactory; -import net.server.coordinator.MapleInviteCoordinator; +import net.server.coordinator.world.MapleInviteCoordinator; import net.server.guild.MapleAlliance; import net.server.guild.MapleGuild; import net.server.guild.MapleGuildCharacter; @@ -137,12 +137,12 @@ import client.inventory.PetDataFactory; import client.inventory.manipulator.MapleCashidGenerator; import client.inventory.manipulator.MapleInventoryManipulator; import client.newyear.NewYearCardRecord; -import client.processor.FredrickProcessor; -import client.processor.PetAutopotProcessor; -import constants.ExpTable; -import constants.GameConstants; -import constants.ItemConstants; -import constants.ServerConstants; +import client.processor.npc.FredrickProcessor; +import client.processor.action.PetAutopotProcessor; +import constants.game.ExpTable; +import constants.game.GameConstants; +import constants.inventory.ItemConstants; +import constants.net.ServerConstants; import constants.skills.Aran; import constants.skills.Beginner; import constants.skills.Bishop; @@ -212,6 +212,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { private int localchairrate; private boolean hidden, equipchanged = true, berserk, hasMerchant, hasSandboxItem = false, whiteChat = false, canRecvPartySearchInvite = true; private boolean equippedMesoMagnet = false, equippedItemPouch = false, equippedPetItemIgnore = false; + private float autopotHpAlert, autopotMpAlert; private int linkedLevel = 0; private String linkedName = null; private boolean finishedDojoTutorial; @@ -8815,6 +8816,10 @@ public class MapleCharacter extends AbstractMapleCharacterObject { // Always send the macro packet to fix a client side bug when switching characters. client.announce(MaplePacketCreator.getMacros(skillMacros)); } + + public SkillMacro[] getMacros() { + return skillMacros; + } public void sendNote(String to, String msg, byte fame) throws SQLException { sendNote(to, this.getName(), msg, fame); @@ -9144,9 +9149,11 @@ public class MapleCharacter extends AbstractMapleCharacterObject { MapleKeyBinding autohpPot = this.getKeymap().get(91); if (autohpPot != null) { int autohpItemid = autohpPot.getAction(); - Item autohpItem = this.getInventory(MapleInventoryType.USE).findById(autohpItemid); - if (autohpItem != null) { - PetAutopotProcessor.runAutopotAction(client, autohpItem.getPosition(), autohpItemid); + if (((float) this.getHp()) / this.getMaxHp() <= this.getAutopotHpAlert()) { // try within user settings... thanks Lame, Optimist, Stealth2800 + Item autohpItem = this.getInventory(MapleInventoryType.USE).findById(autohpItemid); + if (autohpItem != null) { + PetAutopotProcessor.runAutopotAction(client, autohpItem.getPosition(), autohpItemid); + } } } } @@ -9155,9 +9162,11 @@ public class MapleCharacter extends AbstractMapleCharacterObject { MapleKeyBinding autompPot = this.getKeymap().get(92); if (autompPot != null) { int autompItemid = autompPot.getAction(); - Item autompItem = this.getInventory(MapleInventoryType.USE).findById(autompItemid); - if (autompItem != null) { - PetAutopotProcessor.runAutopotAction(client, autompItem.getPosition(), autompItemid); + if (((float) this.getMp()) / this.getMaxMp() <= this.getAutopotMpAlert()) { + Item autompItem = this.getInventory(MapleInventoryType.USE).findById(autompItemid); + if (autompItem != null) { + PetAutopotProcessor.runAutopotAction(client, autompItem.getPosition(), autompItemid); + } } } } @@ -10629,6 +10638,22 @@ public class MapleCharacter extends AbstractMapleCharacterObject { this.dragon = dragon; } + public void setAutopotHpAlert(float hpPortion) { + autopotHpAlert = hpPortion; + } + + public float getAutopotHpAlert() { + return autopotHpAlert; + } + + public void setAutopotMpAlert(float mpPortion) { + autopotMpAlert = mpPortion; + } + + public float getAutopotMpAlert() { + return autopotMpAlert; + } + public long getJailExpirationTimeLeft() { return jailExpiration - System.currentTimeMillis(); } diff --git a/src/client/MapleClient.java b/src/client/MapleClient.java index b68f27460e..a3ea8f6986 100644 --- a/src/client/MapleClient.java +++ b/src/client/MapleClient.java @@ -49,8 +49,8 @@ import jdk.nashorn.api.scripting.NashornScriptEngine; import tools.*; import net.server.Server; -import net.server.coordinator.MapleSessionCoordinator; -import net.server.coordinator.MapleSessionCoordinator.AntiMulticlientResult; +import net.server.coordinator.session.MapleSessionCoordinator; +import net.server.coordinator.session.MapleSessionCoordinator.AntiMulticlientResult; import net.server.channel.Channel; import net.server.guild.MapleGuild; import net.server.guild.MapleGuildCharacter; @@ -63,8 +63,8 @@ import net.server.world.World; import org.apache.mina.core.session.IoSession; import client.inventory.MapleInventoryType; -import constants.GameConstants; -import constants.ServerConstants; +import constants.game.GameConstants; +import constants.net.ServerConstants; import scripting.AbstractPlayerInteraction; import scripting.event.EventInstanceManager; import scripting.event.EventManager; @@ -79,7 +79,7 @@ import server.quest.MapleQuest; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.factory.MonitoredReentrantLockFactory; -import net.server.coordinator.MapleLoginBypassCoordinator; +import net.server.coordinator.login.MapleLoginBypassCoordinator; public class MapleClient { diff --git a/src/client/MapleDisease.java b/src/client/MapleDisease.java index 14984e7293..4dd866f050 100644 --- a/src/client/MapleDisease.java +++ b/src/client/MapleDisease.java @@ -21,7 +21,7 @@ */ package client; -import constants.GameConstants; +import constants.game.GameConstants; public enum MapleDisease { NULL(0x0), diff --git a/src/client/MapleFamily.java b/src/client/MapleFamily.java index efd017ffc6..bae907b941 100644 --- a/src/client/MapleFamily.java +++ b/src/client/MapleFamily.java @@ -216,7 +216,7 @@ public class MapleFamily { int totalRep = rsEntries.getInt("totalreputation"); int repsToSenior = rsEntries.getInt("reptosenior"); String precepts = rsEntries.getString("precepts"); - //Timestamp lastResetTime = rsEntries.getTimestamp("lastresettime"); //taken care of by FamilyDailyResetWorker + //Timestamp lastResetTime = rsEntries.getTimestamp("lastresettime"); //taken care of by FamilyDailyResetTask World wserv = Server.getInstance().getWorld(world); if (wserv == null) { continue; @@ -278,7 +278,7 @@ public class MapleFamily { } } - public void saveAllMembersRep() { //was used for autosave worker, but character autosave should be enough + public void saveAllMembersRep() { //was used for autosave task, but character autosave should be enough try(Connection con = DatabaseConnection.getConnection()) { con.setAutoCommit(false); boolean success = true; diff --git a/src/client/SkillMacro.java b/src/client/SkillMacro.java index 7f4e38c319..b129c5feee 100644 --- a/src/client/SkillMacro.java +++ b/src/client/SkillMacro.java @@ -49,6 +49,18 @@ public class SkillMacro { public int getSkill3() { return skill3; } + + public void setSkill1(int skill) { + skill1 = skill; + } + + public void setSkill2(int skill) { + skill2 = skill; + } + + public void setSkill3(int skill) { + skill3 = skill; + } public String getName() { return name; diff --git a/src/client/autoban/AutobanFactory.java b/src/client/autoban/AutobanFactory.java index f5cac45c7e..dbca257ea4 100644 --- a/src/client/autoban/AutobanFactory.java +++ b/src/client/autoban/AutobanFactory.java @@ -24,7 +24,6 @@ package client.autoban; import client.MapleCharacter; import config.YamlConfig; -import constants.ServerConstants; import net.server.Server; import tools.FilePrinter; import tools.MapleLogger; diff --git a/src/client/autoban/AutobanManager.java b/src/client/autoban/AutobanManager.java index 227790107e..1e46a0d6d7 100644 --- a/src/client/autoban/AutobanManager.java +++ b/src/client/autoban/AutobanManager.java @@ -7,7 +7,6 @@ package client.autoban; import client.MapleCharacter; import config.YamlConfig; -import constants.ServerConstants; import java.util.HashMap; import java.util.Map; import net.server.Server; diff --git a/src/client/command/commands/gm0/BuyBackCommand.java b/src/client/command/commands/gm0/BuyBackCommand.java index a08b578690..07b3139211 100644 --- a/src/client/command/commands/gm0/BuyBackCommand.java +++ b/src/client/command/commands/gm0/BuyBackCommand.java @@ -25,7 +25,7 @@ package client.command.commands.gm0; import client.MapleClient; import client.command.Command; -import client.processor.BuybackProcessor; +import client.processor.action.BuybackProcessor; public class BuyBackCommand extends Command { { diff --git a/src/client/command/commands/gm0/DropLimitCommand.java b/src/client/command/commands/gm0/DropLimitCommand.java index c27d8ac26d..eae417cd36 100644 --- a/src/client/command/commands/gm0/DropLimitCommand.java +++ b/src/client/command/commands/gm0/DropLimitCommand.java @@ -26,7 +26,6 @@ package client.command.commands.gm0; import client.MapleClient; import client.command.Command; import config.YamlConfig; -import constants.ServerConstants; public class DropLimitCommand extends Command { { diff --git a/src/client/command/commands/gm0/EnableAuthCommand.java b/src/client/command/commands/gm0/EnableAuthCommand.java index 55f8c460ba..3a4a21fba7 100644 --- a/src/client/command/commands/gm0/EnableAuthCommand.java +++ b/src/client/command/commands/gm0/EnableAuthCommand.java @@ -25,7 +25,7 @@ package client.command.commands.gm0; import client.command.Command; import client.MapleClient; -import net.server.coordinator.MapleLoginBypassCoordinator; +import net.server.coordinator.login.MapleLoginBypassCoordinator; public class EnableAuthCommand extends Command { { diff --git a/src/client/command/commands/gm0/MapOwnerClaimCommand.java b/src/client/command/commands/gm0/MapOwnerClaimCommand.java index 352e7029a1..0af26ca355 100644 --- a/src/client/command/commands/gm0/MapOwnerClaimCommand.java +++ b/src/client/command/commands/gm0/MapOwnerClaimCommand.java @@ -27,7 +27,6 @@ import client.command.Command; import client.MapleCharacter; import client.MapleClient; import config.YamlConfig; -import constants.ServerConstants; import server.maps.MapleMap; public class MapOwnerClaimCommand extends Command { diff --git a/src/client/command/commands/gm0/RatesCommand.java b/src/client/command/commands/gm0/RatesCommand.java index 103ad11365..bd2d428965 100644 --- a/src/client/command/commands/gm0/RatesCommand.java +++ b/src/client/command/commands/gm0/RatesCommand.java @@ -27,7 +27,6 @@ import client.MapleCharacter; import client.command.Command; import client.MapleClient; import config.YamlConfig; -import constants.ServerConstants; public class RatesCommand extends Command { { diff --git a/src/client/command/commands/gm0/ShowRatesCommand.java b/src/client/command/commands/gm0/ShowRatesCommand.java index dc10109280..c08092472d 100644 --- a/src/client/command/commands/gm0/ShowRatesCommand.java +++ b/src/client/command/commands/gm0/ShowRatesCommand.java @@ -27,7 +27,6 @@ import client.MapleCharacter; import client.command.Command; import client.MapleClient; import config.YamlConfig; -import constants.ServerConstants; public class ShowRatesCommand extends Command { { diff --git a/src/client/command/commands/gm0/StatDexCommand.java b/src/client/command/commands/gm0/StatDexCommand.java index 8dafe4c6b2..69fdbf842d 100644 --- a/src/client/command/commands/gm0/StatDexCommand.java +++ b/src/client/command/commands/gm0/StatDexCommand.java @@ -27,7 +27,6 @@ import client.MapleCharacter; import client.MapleClient; import client.command.Command; import config.YamlConfig; -import constants.ServerConstants; public class StatDexCommand extends Command { { diff --git a/src/client/command/commands/gm0/StatIntCommand.java b/src/client/command/commands/gm0/StatIntCommand.java index 1c9e0bfeae..c539e56180 100644 --- a/src/client/command/commands/gm0/StatIntCommand.java +++ b/src/client/command/commands/gm0/StatIntCommand.java @@ -27,7 +27,6 @@ import client.command.Command; import client.MapleClient; import client.MapleCharacter; import config.YamlConfig; -import constants.ServerConstants; public class StatIntCommand extends Command { { diff --git a/src/client/command/commands/gm0/StatLukCommand.java b/src/client/command/commands/gm0/StatLukCommand.java index 8d1719e9ad..cc5c47f481 100644 --- a/src/client/command/commands/gm0/StatLukCommand.java +++ b/src/client/command/commands/gm0/StatLukCommand.java @@ -27,7 +27,6 @@ import client.MapleCharacter; import client.MapleClient; import client.command.Command; import config.YamlConfig; -import constants.ServerConstants; public class StatLukCommand extends Command { { diff --git a/src/client/command/commands/gm0/StatStrCommand.java b/src/client/command/commands/gm0/StatStrCommand.java index 3ab139946b..c706e94b4f 100644 --- a/src/client/command/commands/gm0/StatStrCommand.java +++ b/src/client/command/commands/gm0/StatStrCommand.java @@ -27,7 +27,6 @@ import client.command.Command; import client.MapleClient; import client.MapleCharacter; import config.YamlConfig; -import constants.ServerConstants; public class StatStrCommand extends Command { { diff --git a/src/client/command/commands/gm0/TimeCommand.java b/src/client/command/commands/gm0/TimeCommand.java index 9e4941dcf6..27115ed60c 100644 --- a/src/client/command/commands/gm0/TimeCommand.java +++ b/src/client/command/commands/gm0/TimeCommand.java @@ -25,7 +25,7 @@ package client.command.commands.gm0; import client.MapleClient; import client.command.Command; -import constants.ServerConstants; +import constants.net.ServerConstants; import java.text.DateFormat; import java.text.SimpleDateFormat; diff --git a/src/client/command/commands/gm1/GotoCommand.java b/src/client/command/commands/gm1/GotoCommand.java index a5f1163b10..3dbf0fc991 100644 --- a/src/client/command/commands/gm1/GotoCommand.java +++ b/src/client/command/commands/gm1/GotoCommand.java @@ -26,7 +26,7 @@ package client.command.commands.gm1; import client.MapleCharacter; import client.command.Command; import client.MapleClient; -import constants.GameConstants; +import constants.game.GameConstants; import java.util.ArrayList; import java.util.Collections; import net.server.Server; diff --git a/src/client/command/commands/gm2/ApCommand.java b/src/client/command/commands/gm2/ApCommand.java index e78512317f..fc2c58140d 100644 --- a/src/client/command/commands/gm2/ApCommand.java +++ b/src/client/command/commands/gm2/ApCommand.java @@ -27,7 +27,6 @@ import client.command.Command; import client.MapleClient; import client.MapleCharacter; import config.YamlConfig; -import constants.ServerConstants; public class ApCommand extends Command { { diff --git a/src/client/command/commands/gm2/ItemCommand.java b/src/client/command/commands/gm2/ItemCommand.java index 47463cb3c5..6276217eed 100644 --- a/src/client/command/commands/gm2/ItemCommand.java +++ b/src/client/command/commands/gm2/ItemCommand.java @@ -29,8 +29,7 @@ import client.MapleCharacter; import client.inventory.MaplePet; import client.inventory.manipulator.MapleInventoryManipulator; import config.YamlConfig; -import constants.ItemConstants; -import constants.ServerConstants; +import constants.inventory.ItemConstants; import server.MapleItemInformationProvider; public class ItemCommand extends Command { diff --git a/src/client/command/commands/gm2/ItemDropCommand.java b/src/client/command/commands/gm2/ItemDropCommand.java index f94d79f27b..cf1d253f97 100644 --- a/src/client/command/commands/gm2/ItemDropCommand.java +++ b/src/client/command/commands/gm2/ItemDropCommand.java @@ -30,8 +30,7 @@ import client.inventory.Item; import client.inventory.MapleInventoryType; import client.inventory.MaplePet; import config.YamlConfig; -import constants.ItemConstants; -import constants.ServerConstants; +import constants.inventory.ItemConstants; import server.MapleItemInformationProvider; public class ItemDropCommand extends Command { diff --git a/src/client/command/commands/gm2/LevelCommand.java b/src/client/command/commands/gm2/LevelCommand.java index 4b51b80404..e1b9a8eeef 100644 --- a/src/client/command/commands/gm2/LevelCommand.java +++ b/src/client/command/commands/gm2/LevelCommand.java @@ -27,7 +27,6 @@ import client.command.Command; import client.MapleClient; import client.MapleCharacter; import config.YamlConfig; -import constants.ServerConstants; public class LevelCommand extends Command { { diff --git a/src/client/command/commands/gm2/MaxStatCommand.java b/src/client/command/commands/gm2/MaxStatCommand.java index 0136d4687a..6344f867d1 100644 --- a/src/client/command/commands/gm2/MaxStatCommand.java +++ b/src/client/command/commands/gm2/MaxStatCommand.java @@ -28,7 +28,6 @@ import client.command.Command; import client.MapleClient; import client.MapleCharacter; import config.YamlConfig; -import constants.ServerConstants; public class MaxStatCommand extends Command { { diff --git a/src/client/command/commands/gm2/RechargeCommand.java b/src/client/command/commands/gm2/RechargeCommand.java index 17e2245a94..ff496173fa 100644 --- a/src/client/command/commands/gm2/RechargeCommand.java +++ b/src/client/command/commands/gm2/RechargeCommand.java @@ -28,7 +28,7 @@ import client.command.Command; import client.MapleClient; import client.inventory.Item; import client.inventory.MapleInventoryType; -import constants.ItemConstants; +import constants.inventory.ItemConstants; import server.MapleItemInformationProvider; public class RechargeCommand extends Command { diff --git a/src/client/command/commands/gm2/SpCommand.java b/src/client/command/commands/gm2/SpCommand.java index eb890b8a29..1abe7fcaad 100644 --- a/src/client/command/commands/gm2/SpCommand.java +++ b/src/client/command/commands/gm2/SpCommand.java @@ -27,7 +27,6 @@ import client.command.Command; import client.MapleClient; import client.MapleCharacter; import config.YamlConfig; -import constants.ServerConstants; public class SpCommand extends Command { { diff --git a/src/client/command/commands/gm3/FaceCommand.java b/src/client/command/commands/gm3/FaceCommand.java index 64c52c03be..38a06ec0a8 100644 --- a/src/client/command/commands/gm3/FaceCommand.java +++ b/src/client/command/commands/gm3/FaceCommand.java @@ -27,7 +27,7 @@ import client.MapleStat; import client.command.Command; import client.MapleClient; import client.MapleCharacter; -import constants.ItemConstants; +import constants.inventory.ItemConstants; import server.MapleItemInformationProvider; public class FaceCommand extends Command { diff --git a/src/client/command/commands/gm3/HairCommand.java b/src/client/command/commands/gm3/HairCommand.java index 3bc17f3566..147073d905 100644 --- a/src/client/command/commands/gm3/HairCommand.java +++ b/src/client/command/commands/gm3/HairCommand.java @@ -27,7 +27,7 @@ import client.MapleStat; import client.command.Command; import client.MapleClient; import client.MapleCharacter; -import constants.ItemConstants; +import constants.inventory.ItemConstants; import server.MapleItemInformationProvider; public class HairCommand extends Command { diff --git a/src/client/command/commands/gm3/MusicCommand.java b/src/client/command/commands/gm3/MusicCommand.java index 988a3574e9..bff9061117 100644 --- a/src/client/command/commands/gm3/MusicCommand.java +++ b/src/client/command/commands/gm3/MusicCommand.java @@ -26,7 +26,7 @@ package client.command.commands.gm3; import client.command.Command; import client.MapleClient; import client.MapleCharacter; -import constants.GameConstants; +import constants.game.GameConstants; import tools.MaplePacketCreator; public class MusicCommand extends Command { diff --git a/src/client/command/commands/gm4/ProItemCommand.java b/src/client/command/commands/gm4/ProItemCommand.java index 551a98b10c..48f7051fb7 100644 --- a/src/client/command/commands/gm4/ProItemCommand.java +++ b/src/client/command/commands/gm4/ProItemCommand.java @@ -30,7 +30,7 @@ import client.inventory.Equip; import client.inventory.Item; import client.inventory.MapleInventoryType; import client.inventory.manipulator.MapleInventoryManipulator; -import constants.ItemConstants; +import constants.inventory.ItemConstants; import server.MapleItemInformationProvider; public class ProItemCommand extends Command { diff --git a/src/client/command/commands/gm4/SetEqStatCommand.java b/src/client/command/commands/gm4/SetEqStatCommand.java index e1f623bd14..93dc7ab930 100644 --- a/src/client/command/commands/gm4/SetEqStatCommand.java +++ b/src/client/command/commands/gm4/SetEqStatCommand.java @@ -29,7 +29,7 @@ import client.MapleCharacter; import client.inventory.Equip; import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; -import constants.ItemConstants; +import constants.inventory.ItemConstants; public class SetEqStatCommand extends Command { { diff --git a/src/client/command/commands/gm5/IpListCommand.java b/src/client/command/commands/gm5/IpListCommand.java index 8442aac894..80675afe6c 100644 --- a/src/client/command/commands/gm5/IpListCommand.java +++ b/src/client/command/commands/gm5/IpListCommand.java @@ -23,7 +23,7 @@ import java.util.Collection; import client.MapleClient; import client.MapleCharacter; import client.command.Command; -import constants.GameConstants; +import constants.game.GameConstants; import net.server.Server; import net.server.world.World; diff --git a/src/client/command/commands/gm5/SetCommand.java b/src/client/command/commands/gm5/SetCommand.java index 0de439bcee..53ee949184 100644 --- a/src/client/command/commands/gm5/SetCommand.java +++ b/src/client/command/commands/gm5/SetCommand.java @@ -26,7 +26,6 @@ package client.command.commands.gm5; import client.command.Command; import client.MapleClient; import config.YamlConfig; -import constants.ServerConstants; public class SetCommand extends Command { { diff --git a/src/client/command/commands/gm5/ShowMoveLifeCommand.java b/src/client/command/commands/gm5/ShowMoveLifeCommand.java index df014eb882..6eca8abf06 100644 --- a/src/client/command/commands/gm5/ShowMoveLifeCommand.java +++ b/src/client/command/commands/gm5/ShowMoveLifeCommand.java @@ -26,7 +26,6 @@ package client.command.commands.gm5; import client.command.Command; import client.MapleClient; import config.YamlConfig; -import constants.ServerConstants; public class ShowMoveLifeCommand extends Command { { diff --git a/src/client/command/commands/gm5/ShowPacketsCommand.java b/src/client/command/commands/gm5/ShowPacketsCommand.java index 2d6ebce1dc..55d2d87fdd 100644 --- a/src/client/command/commands/gm5/ShowPacketsCommand.java +++ b/src/client/command/commands/gm5/ShowPacketsCommand.java @@ -26,7 +26,6 @@ package client.command.commands.gm5; import client.command.Command; import client.MapleClient; import config.YamlConfig; -import constants.ServerConstants; public class ShowPacketsCommand extends Command { { diff --git a/src/client/command/commands/gm5/ShowSessionsCommand.java b/src/client/command/commands/gm5/ShowSessionsCommand.java index f48d0cfd84..116dcc1a2a 100644 --- a/src/client/command/commands/gm5/ShowSessionsCommand.java +++ b/src/client/command/commands/gm5/ShowSessionsCommand.java @@ -21,7 +21,7 @@ package client.command.commands.gm5; import client.MapleClient; import client.command.Command; -import net.server.coordinator.MapleSessionCoordinator; +import net.server.coordinator.session.MapleSessionCoordinator; /** * diff --git a/src/client/command/commands/gm6/SupplyRateCouponCommand.java b/src/client/command/commands/gm6/SupplyRateCouponCommand.java index 10ac8be42b..394ea5b467 100644 --- a/src/client/command/commands/gm6/SupplyRateCouponCommand.java +++ b/src/client/command/commands/gm6/SupplyRateCouponCommand.java @@ -23,7 +23,6 @@ import client.MapleCharacter; import client.MapleClient; import client.command.Command; import config.YamlConfig; -import constants.ServerConstants; public class SupplyRateCouponCommand extends Command { { diff --git a/src/client/creator/CharacterFactory.java b/src/client/creator/CharacterFactory.java index 54721932fb..51ba8e912b 100644 --- a/src/client/creator/CharacterFactory.java +++ b/src/client/creator/CharacterFactory.java @@ -26,7 +26,6 @@ import client.inventory.Item; import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; import config.YamlConfig; -import constants.ServerConstants; import net.server.Server; import server.MapleItemInformationProvider; import tools.FilePrinter; diff --git a/src/client/creator/CharacterFactoryRecipe.java b/src/client/creator/CharacterFactoryRecipe.java index 8d121558f8..aaf3c6cfa8 100644 --- a/src/client/creator/CharacterFactoryRecipe.java +++ b/src/client/creator/CharacterFactoryRecipe.java @@ -24,7 +24,6 @@ import client.Skill; import client.inventory.Item; import client.inventory.MapleInventoryType; import config.YamlConfig; -import constants.ServerConstants; import java.util.concurrent.atomic.AtomicInteger; import java.util.LinkedHashMap; import java.util.LinkedList; diff --git a/src/client/inventory/Equip.java b/src/client/inventory/Equip.java index f78755ff59..39a5e91e4a 100644 --- a/src/client/inventory/Equip.java +++ b/src/client/inventory/Equip.java @@ -23,9 +23,8 @@ package client.inventory; import client.MapleClient; import config.YamlConfig; -import constants.ServerConstants; -import constants.ExpTable; -import constants.ItemConstants; +import constants.game.ExpTable; +import constants.inventory.ItemConstants; import java.util.HashMap; import java.util.LinkedList; import java.util.List; diff --git a/src/client/inventory/Item.java b/src/client/inventory/Item.java index 49417464c9..0f33769d76 100644 --- a/src/client/inventory/Item.java +++ b/src/client/inventory/Item.java @@ -21,7 +21,7 @@ along with this program. If not, see . */ package client.inventory; -import constants.ItemConstants; +import constants.inventory.ItemConstants; import java.util.Collections; import java.util.LinkedList; import java.util.List; diff --git a/src/client/inventory/MapleInventory.java b/src/client/inventory/MapleInventory.java index eb2db975bd..a5d6529aed 100644 --- a/src/client/inventory/MapleInventory.java +++ b/src/client/inventory/MapleInventory.java @@ -37,7 +37,7 @@ import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import tools.Pair; import client.MapleCharacter; import client.MapleClient; -import constants.ItemConstants; +import constants.inventory.ItemConstants; import server.MapleItemInformationProvider; import client.inventory.manipulator.MapleInventoryManipulator; import tools.FilePrinter; diff --git a/src/client/inventory/MaplePet.java b/src/client/inventory/MaplePet.java index acaa12c9bd..a3cd38cb42 100644 --- a/src/client/inventory/MaplePet.java +++ b/src/client/inventory/MaplePet.java @@ -21,7 +21,7 @@ */ package client.inventory; -import constants.ExpTable; +import constants.game.ExpTable; import java.awt.Point; import java.sql.PreparedStatement; import java.sql.ResultSet; diff --git a/src/client/inventory/manipulator/MapleInventoryManipulator.java b/src/client/inventory/manipulator/MapleInventoryManipulator.java index 036bb74f8b..ed3338d7da 100644 --- a/src/client/inventory/manipulator/MapleInventoryManipulator.java +++ b/src/client/inventory/manipulator/MapleInventoryManipulator.java @@ -32,8 +32,7 @@ import client.inventory.MaplePet; import client.inventory.ModifyInventory; import client.newyear.NewYearCardRecord; import config.YamlConfig; -import constants.ItemConstants; -import constants.ServerConstants; +import constants.inventory.ItemConstants; import java.awt.Point; import java.util.ArrayList; diff --git a/src/client/inventory/manipulator/MapleKarmaManipulator.java b/src/client/inventory/manipulator/MapleKarmaManipulator.java index faf3d5fc89..66221a8df5 100644 --- a/src/client/inventory/manipulator/MapleKarmaManipulator.java +++ b/src/client/inventory/manipulator/MapleKarmaManipulator.java @@ -19,7 +19,7 @@ */ package client.inventory.manipulator; -import constants.ItemConstants; +import constants.inventory.ItemConstants; import client.inventory.Item; /** diff --git a/src/client/processor/BuybackProcessor.java b/src/client/processor/action/BuybackProcessor.java similarity index 95% rename from src/client/processor/BuybackProcessor.java rename to src/client/processor/action/BuybackProcessor.java index d6e7a3ac15..1920602e35 100644 --- a/src/client/processor/BuybackProcessor.java +++ b/src/client/processor/action/BuybackProcessor.java @@ -17,7 +17,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package client.processor; +package client.processor.action; // thanks Alex for pointing out some package structures containing broad modules import client.MapleClient; import client.MapleCharacter; diff --git a/src/client/processor/MakerProcessor.java b/src/client/processor/action/MakerProcessor.java similarity index 99% rename from src/client/processor/MakerProcessor.java rename to src/client/processor/action/MakerProcessor.java index fc48e30615..16f87cdfde 100644 --- a/src/client/processor/MakerProcessor.java +++ b/src/client/processor/action/MakerProcessor.java @@ -17,18 +17,17 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package client.processor; +package client.processor.action; import client.MapleClient; import client.MapleCharacter; import client.inventory.Equip; import client.inventory.Item; import client.inventory.MapleInventoryType; -import config.YamlConfig; -import constants.ItemConstants; -import constants.ServerConstants; import client.inventory.manipulator.MapleInventoryManipulator; -import constants.GameConstants; +import config.YamlConfig; +import constants.inventory.ItemConstants; +import constants.game.GameConstants; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; diff --git a/src/client/processor/PetAutopotProcessor.java b/src/client/processor/action/PetAutopotProcessor.java similarity index 99% rename from src/client/processor/PetAutopotProcessor.java rename to src/client/processor/action/PetAutopotProcessor.java index bca2d0e3a3..367b16e57d 100644 --- a/src/client/processor/PetAutopotProcessor.java +++ b/src/client/processor/action/PetAutopotProcessor.java @@ -19,7 +19,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package client.processor; +package client.processor.action; import client.MapleCharacter; import client.MapleClient; @@ -28,7 +28,6 @@ import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; import client.inventory.manipulator.MapleInventoryManipulator; import config.YamlConfig; -import constants.ServerConstants; import java.util.List; import server.MapleItemInformationProvider; import server.MapleStatEffect; diff --git a/src/client/processor/SpawnPetProcessor.java b/src/client/processor/action/SpawnPetProcessor.java similarity index 99% rename from src/client/processor/SpawnPetProcessor.java rename to src/client/processor/action/SpawnPetProcessor.java index f1c96f9d69..0c95d973ff 100644 --- a/src/client/processor/SpawnPetProcessor.java +++ b/src/client/processor/action/SpawnPetProcessor.java @@ -17,7 +17,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package client.processor; +package client.processor.action; import client.MapleCharacter; import java.awt.Point; diff --git a/src/client/processor/DueyProcessor.java b/src/client/processor/npc/DueyProcessor.java similarity index 99% rename from src/client/processor/DueyProcessor.java rename to src/client/processor/npc/DueyProcessor.java index 9630ddba57..a785335c19 100644 --- a/src/client/processor/DueyProcessor.java +++ b/src/client/processor/npc/DueyProcessor.java @@ -21,7 +21,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package client.processor; +package client.processor.npc; import client.MapleCharacter; import client.MapleClient; @@ -33,8 +33,7 @@ import client.inventory.MapleInventoryType; import client.inventory.manipulator.MapleInventoryManipulator; import client.inventory.manipulator.MapleKarmaManipulator; import config.YamlConfig; -import constants.ItemConstants; -import constants.ServerConstants; +import constants.inventory.ItemConstants; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; diff --git a/src/client/processor/FredrickProcessor.java b/src/client/processor/npc/FredrickProcessor.java similarity index 99% rename from src/client/processor/FredrickProcessor.java rename to src/client/processor/npc/FredrickProcessor.java index 9b2a14ce05..d92f2def05 100644 --- a/src/client/processor/FredrickProcessor.java +++ b/src/client/processor/npc/FredrickProcessor.java @@ -21,7 +21,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package client.processor; +package client.processor.npc; import client.MapleCharacter; import client.MapleClient; diff --git a/src/client/processor/StorageProcessor.java b/src/client/processor/npc/StorageProcessor.java similarity index 99% rename from src/client/processor/StorageProcessor.java rename to src/client/processor/npc/StorageProcessor.java index f900b676a5..8251c9791c 100644 --- a/src/client/processor/StorageProcessor.java +++ b/src/client/processor/npc/StorageProcessor.java @@ -19,7 +19,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package client.processor; +package client.processor.npc; import client.MapleClient; import client.MapleCharacter; @@ -29,8 +29,7 @@ import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; import client.inventory.manipulator.MapleKarmaManipulator; import config.YamlConfig; -import constants.ItemConstants; -import constants.ServerConstants; +import constants.inventory.ItemConstants; import client.inventory.manipulator.MapleInventoryManipulator; import server.MapleItemInformationProvider; import server.MapleStorage; diff --git a/src/client/processor/AssignAPProcessor.java b/src/client/processor/stat/AssignAPProcessor.java similarity index 99% rename from src/client/processor/AssignAPProcessor.java rename to src/client/processor/stat/AssignAPProcessor.java index 9ba1c9fed1..4edb87bbb5 100644 --- a/src/client/processor/AssignAPProcessor.java +++ b/src/client/processor/stat/AssignAPProcessor.java @@ -21,7 +21,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package client.processor; +package client.processor.stat; import client.MapleCharacter; import client.MapleClient; @@ -34,7 +34,6 @@ import client.inventory.Equip; import client.inventory.Item; import client.inventory.MapleInventoryType; import config.YamlConfig; -import constants.ServerConstants; import constants.skills.BlazeWizard; import constants.skills.Brawler; import constants.skills.DawnWarrior; diff --git a/src/client/processor/AssignSPProcessor.java b/src/client/processor/stat/AssignSPProcessor.java similarity index 98% rename from src/client/processor/AssignSPProcessor.java rename to src/client/processor/stat/AssignSPProcessor.java index 835c8369f3..d27522c05c 100644 --- a/src/client/processor/AssignSPProcessor.java +++ b/src/client/processor/stat/AssignSPProcessor.java @@ -21,14 +21,14 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package client.processor; +package client.processor.stat; import client.MapleCharacter; import client.MapleClient; import client.Skill; import client.SkillFactory; import client.autoban.AutobanFactory; -import constants.GameConstants; +import constants.game.GameConstants; import constants.skills.Aran; import server.ThreadManager; import tools.FilePrinter; diff --git a/src/config/ServerConfig.java b/src/config/ServerConfig.java index d19727735e..18343598d6 100644 --- a/src/config/ServerConfig.java +++ b/src/config/ServerConfig.java @@ -11,6 +11,7 @@ public class ServerConfig { public boolean DB_CONNECTION_POOL; //Login Configuration + public int WORLDS; public int WLDLIST_SIZE; public int CHANNEL_SIZE; public int CHANNEL_LOAD; diff --git a/src/constants/ServerConstants.java b/src/constants/ServerConstants.java deleted file mode 100644 index 8e39808de2..0000000000 --- a/src/constants/ServerConstants.java +++ /dev/null @@ -1,34 +0,0 @@ -package constants; - -public class ServerConstants { - //Server Version - public static short VERSION = 83; - - //Java Configuration - public static final boolean JAVA_8 = getJavaVersion() >= 8; //Max amount of times a party leader is allowed to persist on the Party Search before entry expiration (thus needing to manually restart the Party Search to be able to search for members). - - //Debug Variables - public static int DEBUG_VALUES[] = new int[10]; // Field designed for packet testing purposes - - // https://github.com/openstreetmap/josm/blob/a3a6e8a6b657cf4c5b4c64ea14d6e87be6280d65/src/org/openstreetmap/josm/tools/Utils.java#L1566-L1585 - /** - * Returns the Java version as an int value. - * @return the Java version as an int value (8, 9, etc.) - * @since 12130 - */ - public static int getJavaVersion() { - String version = System.getProperty("java.version"); - if (version.startsWith("1.")) { - version = version.substring(2); - } - // Allow these formats: - // 1.8.0_72-ea - // 9-ea - // 9 - // 9.0.1 - int dotPos = version.indexOf('.'); - int dashPos = version.indexOf('-'); - return Integer.parseInt(version.substring(0, - dotPos > -1 ? dotPos : dashPos > -1 ? dashPos : 1)); - } -} diff --git a/src/constants/ExpTable.java b/src/constants/game/ExpTable.java similarity index 99% rename from src/constants/ExpTable.java rename to src/constants/game/ExpTable.java index a7b4d2f22d..1b963bf68c 100644 --- a/src/constants/ExpTable.java +++ b/src/constants/game/ExpTable.java @@ -19,7 +19,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package constants; +package constants.game; public final class ExpTable { private static final int[] exp = {15, 15, 34, 57, 92, 135, 372, 560, 840, 1144, 1242, 1573, 2144, 2800, 3640, 4700, 5893, 7360, 9144, 11120, 13477, 16268, 19320, 22880, 27008, 31477, 36600, 42444, 48720, 55813, 63800, 86784, 98208, 110932, 124432, 139372, 155865, 173280, 192400, 213345, 235372, 259392, 285532, 312928, 342624, 374760, 408336, 445544, 483532, 524160, 567772, 598886, 631704, 666321, 702836, 741351, 781976, 824828, 870028, 917625, 967995, 1021041, 1076994, 1136013, 1198266, 1263930, 1333194, 1406252, 1483314, 1564600, 1650340, 1740778, 1836173, 1936794, 2042930, 2154882, 2272970, 2397528, 2528912, 2667496, 2813674, 2967863, 3130502, 3302053, 3483005, 3673873, 3875201, 4087562, 4311559, 4547832, 4797053, 5059931, 5337215, 5629694, 5938202, 6263614, 6606860, 6968915, 7350811, 7753635, 8178534, 8626718, 9099462, 9598112, 10124088, 10678888, 11264090, 11881362, 12532461, 13219239, 13943653, 14707765, 15513750, 16363902, 17260644, 18206527, 19204245, 20256637, 21366700, 22537594, 23772654, 25075395, 26449526, 27898960, 29427822, 31040466, 32741483, 34535716, 36428273, 38424542, 40530206, 42751262, 45094030, 47565183, 50171755, 52921167, 55821246, 58880250, 62106888, 65510344, 69100311, 72887008, 76881216, 81094306, 85594273, 90225770, 95170142, 100385466, 105886589, 111689174, 117809740, 124265714, 131075474, 138258410, 145834970, 153826726, 162256430, 171148082, 180526997, 190419876, 200854885, 211861732, 223471711, 223471711, 248635353, 262260570, 276632449, 291791906, 307782102, 324648562, 342439302, 361204976, 380999008, 401877754, 423900654, 447130410, 471633156, 497478653, 524740482, 553496261, 583827855, 615821622, 649568646, 685165008, 722712050, 762316670, 804091623, 848155844, 894634784, 943660770, 995373379, 1049919840, 1107455447, 1168144006, 1232158297, 1299680571, 1370903066, 1446028554, 1525246918, 1608855764, 1697021059}; diff --git a/src/constants/GameConstants.java b/src/constants/game/GameConstants.java similarity index 99% rename from src/constants/GameConstants.java rename to src/constants/game/GameConstants.java index e7b4017f96..a2af847905 100644 --- a/src/constants/GameConstants.java +++ b/src/constants/game/GameConstants.java @@ -1,4 +1,4 @@ -package constants; +package constants.game; import client.MapleDisease; import java.util.ArrayList; diff --git a/src/constants/ScriptableNPCConstants.java b/src/constants/game/ScriptableNPCConstants.java similarity index 95% rename from src/constants/ScriptableNPCConstants.java rename to src/constants/game/ScriptableNPCConstants.java index eac4db3caf..c2d47d84ba 100644 --- a/src/constants/ScriptableNPCConstants.java +++ b/src/constants/game/ScriptableNPCConstants.java @@ -1,4 +1,4 @@ -package constants; +package constants.game; /** * @brief ScriptableNPCConstants diff --git a/src/constants/EquipSlot.java b/src/constants/inventory/EquipSlot.java similarity index 98% rename from src/constants/EquipSlot.java rename to src/constants/inventory/EquipSlot.java index e1fb37c835..1bd6dd0a46 100644 --- a/src/constants/EquipSlot.java +++ b/src/constants/inventory/EquipSlot.java @@ -1,4 +1,4 @@ -package constants; +package constants.inventory; /** * diff --git a/src/constants/EquipType.java b/src/constants/inventory/EquipType.java similarity index 98% rename from src/constants/EquipType.java rename to src/constants/inventory/EquipType.java index 0ba3600744..37fe0363dd 100644 --- a/src/constants/EquipType.java +++ b/src/constants/inventory/EquipType.java @@ -17,7 +17,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package constants; +package constants.inventory; import java.util.HashMap; import java.util.Map; diff --git a/src/constants/ItemConstants.java b/src/constants/inventory/ItemConstants.java similarity index 99% rename from src/constants/ItemConstants.java rename to src/constants/inventory/ItemConstants.java index 1ae3d13507..6d2934b1b6 100644 --- a/src/constants/ItemConstants.java +++ b/src/constants/inventory/ItemConstants.java @@ -19,8 +19,9 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package constants; +package constants.inventory; +import constants.net.ServerConstants; import client.inventory.MapleInventoryType; import config.YamlConfig; diff --git a/src/constants/OpcodeConstants.java b/src/constants/net/OpcodeConstants.java similarity index 98% rename from src/constants/OpcodeConstants.java rename to src/constants/net/OpcodeConstants.java index 970be0c247..a1ad036189 100644 --- a/src/constants/OpcodeConstants.java +++ b/src/constants/net/OpcodeConstants.java @@ -17,7 +17,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package constants; +package constants.net; import java.util.Map; import java.util.HashMap; diff --git a/src/constants/net/ServerConstants.java b/src/constants/net/ServerConstants.java new file mode 100644 index 0000000000..f151bc3f31 --- /dev/null +++ b/src/constants/net/ServerConstants.java @@ -0,0 +1,332 @@ +package constants.net; + +public class ServerConstants { + //Server Version + public static short VERSION = 83; + + //Java Configuration + public static final boolean JAVA_8 = getJavaVersion() >= 8; //Max amount of times a party leader is allowed to persist on the Party Search before entry expiration (thus needing to manually restart the Party Search to be able to search for members). + + //Login Configuration + public static final int WLDLIST_SIZE = 21; //Max possible worlds on the server. + public static final int CHANNEL_SIZE = 20; //Max possible channels per world (which is 20, based on the channel list on login phase). + public static final int CHANNEL_LOAD = 100; //Max players per channel (limit actually used to calculate the World server capacity). + public static final int CHANNEL_LOCKS = 20; //Total number of structure management locks each channel has. + + public static final long RESPAWN_INTERVAL = 10 * 1000; //10 seconds, 10000. + public static final long PURGING_INTERVAL = 5 * 60 * 1000; + public static final long RANKING_INTERVAL = 60 * 60 * 1000; //60 minutes, 3600000. + public static final long COUPON_INTERVAL = 60 * 60 * 1000; //60 minutes, 3600000. + public static final long UPDATE_INTERVAL = 777; //Dictates the frequency on which the "centralized server time" is updated. + + public static final boolean ENABLE_PIC = false; //Pick true/false to enable or disable Pic. Delete character requires PIC available. + public static final boolean ENABLE_PIN = false; //Pick true/false to enable or disable Pin. + + public static final int BYPASS_PIC_EXPIRATION = 20; //Enables PIC bypass, which will remain active for that account by that client machine for N minutes. Set 0 to disable. + public static final int BYPASS_PIN_EXPIRATION = 15; //Enables PIN bypass, which will remain active for that account by that client machine for N minutes. Set 0 to disable. + + public static final boolean AUTOMATIC_REGISTER = true; //Automatically register players when they login with a nonexistent username. + public static final boolean BCRYPT_MIGRATION = true; //Performs a migration from old SHA-1 and SHA-512 password to bcrypt. + public static final boolean COLLECTIVE_CHARSLOT = false; //Available character slots are contabilized globally rather than per world server. + public static final boolean DETERRED_MULTICLIENT = false; //Enables detection of multi-client and suspicious remote IP on the login system. + + //Besides blocking logging in with several client sessions on the same machine, this also blocks suspicious login attempts for players that tries to login on an account using several diferent remote addresses. + + //Multiclient Coordinator Configuration + public static final int MAX_ALLOWED_ACCOUNT_HWID = 4; //Allows up to N concurrent HWID's for an account. HWID's remains linked to an account longer the more times it's used to login. + public static final int MAX_ACCOUNT_LOGIN_ATTEMPT = 15; //After N tries on an account, login on that account gets disabled for a short period. + public static final int LOGIN_ATTEMPT_DURATION = 120; //Period in seconds the login attempt remains registered on the system. + + //Ip Configuration + public static String HOST; + public static boolean LOCALSERVER; + + //Other Configuration + public static boolean SHUTDOWNHOOK; + + //Server Flags + public static final boolean USE_CUSTOM_KEYSET = true; //Enables auto-setup of the HeavenMS's custom keybindings when creating characters. + public static final boolean USE_DEBUG = false; //Will enable some text prints on the client, oriented for debugging purposes. + public static final boolean USE_DEBUG_SHOW_INFO_EQPEXP = false; //Prints on the cmd all equip exp gain info. + public static boolean USE_DEBUG_SHOW_RCVD_PACKET = false; //Prints on the cmd all received packet ids. + public static boolean USE_DEBUG_SHOW_RCVD_MVLIFE = false; //Prints on the cmd all received move life content. + public static final boolean USE_DEBUG_SHOW_PACKET = false; + public static boolean USE_SUPPLY_RATE_COUPONS = true; //Allows rate coupons to be sold through the Cash Shop. + public static final boolean USE_IP_VALIDATION = true; //Enables IP checking when logging in. + + public static final boolean USE_MAXRANGE = true; //Will send and receive packets from all events on a map, rather than those of only view range. + public static final boolean USE_MAXRANGE_ECHO_OF_HERO = true; + public static final boolean USE_MTS = false; + public static final boolean USE_CPQ = true; //Renders the CPQ available or not. + public static final boolean USE_AUTOHIDE_GM = false; //When enabled, GMs are automatically hidden when joining. Thanks to Steven Deblois (steven1152). + public static final boolean USE_BUYBACK_SYSTEM = true; //Enables the HeavenMS-builtin buyback system, to be used by dead players when clicking the MTS button. + public static final boolean USE_FIXED_RATIO_HPMP_UPDATE = true; //Enables the HeavenMS-builtin HPMP update based on the current pool to max pool ratio. + public static final boolean USE_FAMILY_SYSTEM = true; + public static final boolean USE_DUEY = true; + public static final boolean USE_RANDOMIZE_HPMP_GAIN = true; //Enables randomizing on MaxHP/MaxMP gains and INT accounting for the MaxMP gain on level up. + public static final boolean USE_STORAGE_ITEM_SORT = true; //Enables storage "Arrange Items" feature. + public static final boolean USE_ITEM_SORT = true; //Enables inventory "Item Sort/Merge" feature. + public static final boolean USE_ITEM_SORT_BY_NAME = false; //Item sorting based on name rather than id. + public static final boolean USE_PARTY_FOR_STARTERS = true; //Players level 10 or below can create/invite other players on the given level range. + public static final boolean USE_AUTOASSIGN_STARTERS_AP = false; //Beginners level 10 or below have their AP autoassigned (they can't choose to levelup a stat). Set true ONLY if the localhost doesn't support AP assigning for beginners level 10 or below. + public static final boolean USE_AUTOASSIGN_SECONDARY_CAP = true;//Prevents AP autoassign from spending on secondary stats after the player class' cap (defined on the autoassign handler) has been reached. + public static final boolean USE_STARTING_AP_4 = true; //Use early-GMS 4/4/4/4 starting stats. To overcome AP shortage, this gives 4AP/5AP at 1st/2nd job advancements. + public static final boolean USE_AUTOBAN = false; //Commands the server to detect infractors automatically. + public static final boolean USE_AUTOBAN_LOG = true; //Log autoban related messages. Still logs even with USE_AUTOBAN disabled. + public static final boolean USE_AUTOSAVE = true; //Enables server autosaving feature (saves characters to DB each 1 hour). + public static final boolean USE_SERVER_AUTOASSIGNER = true; //HeavenMS-builtin autoassigner, uses algorithm based on distributing AP accordingly with required secondary stat on equipments. + public static final boolean USE_REFRESH_RANK_MOVE = true; + public static final boolean USE_ENFORCE_ADMIN_ACCOUNT = false; //Forces accounts having GM characters to be treated as a "GM account" by the client (localhost). Some of the GM account perks is the ability to FLY, but unable to TRADE. + public static final boolean USE_ENFORCE_NOVICE_EXPRATE = false; //Hardsets experience rate 1x for beginners level 10 or under. Ideal for roaming on novice areas without caring too much about losing some stats. + public static final boolean USE_ENFORCE_HPMP_SWAP = false; //Forces players to reuse stats (via AP Resetting) located on HP/MP pool only inside the HP/MP stats. + public static final boolean USE_ENFORCE_MOB_LEVEL_RANGE = true; //Players N levels below the killed mob will gain no experience from defeating it. + public static final boolean USE_ENFORCE_JOB_LEVEL_RANGE = false;//Caps the player level on the minimum required to advance their current jobs. + public static final boolean USE_ENFORCE_JOB_SP_RANGE = false; //Caps the player SP level on the total obtainable by their current jobs. After changing jobs, missing SP will be retrieved. + public static final boolean USE_ENFORCE_ITEM_SUGGESTION = false;//Forces the Owl of Minerva and the Cash Shop to always display the defined item array instead of those featured by the players. + public static final boolean USE_ENFORCE_UNMERCHABLE_CASH = true;//Forces players to not sell CASH items via merchants, drops of it disappears. + public static final boolean USE_ENFORCE_UNMERCHABLE_PET = true; //Forces players to not sell pets via merchants, drops of it disappears. (since non-named pets gets dirty name and other possible DB-related issues) + public static final boolean USE_ENFORCE_MERCHANT_SAVE = true; //Forces automatic DB save on merchant owners, at every item movement on shop. + public static final boolean USE_ENFORCE_MDOOR_POSITION = false; //Forces mystic door to be spawned near spawnpoints. + public static final boolean USE_SPAWN_CLEAN_MDOOR = false; //Makes mystic doors to be spawned without deploy animation. This clears disconnecting issues that may happen when trying to cancel doors a couple seconds after deployment. + public static final boolean USE_SPAWN_LOOT_ON_ANIMATION = false;//Makes loot appear some time after the mob has been killed (following the mob death animation, instead of instantly). + public static final boolean USE_SPAWN_RELEVANT_LOOT = true; //Forces to only spawn loots that are collectable by the player or any of their party members. + public static final boolean USE_ERASE_PERMIT_ON_OPENSHOP = true;//Forces "shop permit" item to be consumed when player deploy his/her player shop. + public static final boolean USE_ERASE_UNTRADEABLE_DROP = true; //Forces flagged untradeable items to disappear when dropped. + public static final boolean USE_ERASE_PET_ON_EXPIRATION = false;//Forces pets to be removed from inventory when expire time comes, rather than converting it to a doll. + public static final boolean USE_BUFF_MOST_SIGNIFICANT = true; //When applying buffs, the player will stick with the highest stat boost among the listed, rather than overwriting stats. + public static final boolean USE_BUFF_EVERLASTING = false; //Every applied buff on players holds expiration time so high it'd be considered permanent. Suggestion thanks to Vcoc. + public static final boolean USE_MULTIPLE_SAME_EQUIP_DROP = true;//Enables multiple drops by mobs of the same equipment, number of possible drops based on the quantities provided at the drop data. + public static final boolean USE_BANISHABLE_TOWN_SCROLL = true; //Enables town scrolls to act as if it's a "player banish", rendering the antibanish scroll effect available. + public static final boolean USE_ENABLE_FULL_RESPAWN = true; //At respawn task, always respawn missing mobs when they're available. Spawn count doesn't depend on how many players are currently there. + public static final boolean USE_ENABLE_CHAT_LOG = false; //Write in-game chat to log + public static final boolean USE_REBIRTH_SYSTEM = false; //Flag to enable/disable rebirth system + public static final boolean USE_MAP_OWNERSHIP_SYSTEM = true; //Flag to enable/disable map ownership system + public static final boolean USE_FISHING_SYSTEM = true; //Flag to enable/disable custom fishing system + public static final boolean USE_NPCS_SCRIPTABLE = true; //Flag to enable/disable serverside predefined script NPCs. + + //Events/PQs Configuration + public static final boolean USE_OLD_GMS_STYLED_PQ_NPCS = true; //Enables PQ NPCs with similar behaviour to old GMS style, that skips info about the PQs and immediately tries to register the party in. + public static final boolean USE_ENABLE_SOLO_EXPEDITIONS = true; //Enables start expeditions with any number of players. This will also bypass all the Zakum prequest. + public static final boolean USE_ENABLE_DAILY_EXPEDITIONS = false;//Enables daily entry limitations in expeditions. + public static final boolean USE_ENABLE_RECALL_EVENT = false; //Enables a disconnected player to reaccess the last event instance they were in before logging out. Recall only works if the event isn't cleared or disposed yet. Suggestion thanks to Alisson (Goukken). + + //Announcement Configuration + public static final boolean USE_ANNOUNCE_SHOPITEMSOLD = false; //Automatic message sent to owner when an item from the Player Shop or Hired Merchant is sold. + public static final boolean USE_ANNOUNCE_CHANGEJOB = false; //Automatic message sent to acquantainces when changing jobs. + + //Cash Shop Configuration + public static final boolean USE_JOINT_CASHSHOP_INVENTORY = true;//Enables usage of a same cash shop inventory for explorers, cygnus and legends. Items from exclusive cash shop inventories won't show up on the shared inventory, though. + public static final boolean USE_CLEAR_OUTDATED_COUPONS = true; //Enables deletion of older code coupon registry from the DB, freeing so-long irrelevant data. + public static final boolean ALLOW_CASHSHOP_NAME_CHANGE = true; //Allows players to buy name changes in the cash shop. + public static final boolean ALLOW_CASHSHOP_WORLD_TRANSFER =true;//Allows players to buy world transfers in the cash shop. + + //Maker Configuration + public static final boolean USE_MAKER_PERMISSIVE_ATKUP = true; //Allows players to use attack-based strengthening gems on non-weapon items. + public static final boolean USE_MAKER_FEE_HEURISTICS = true; //Apply compiled values for stimulants and reagents into the Maker fee calculations (max error revolves around 50k mesos). Set false to use basic constant values instead (results are never higher than requested by the client-side). + + //Custom Configuration + public static final boolean USE_ENABLE_CUSTOM_NPC_SCRIPT = true;//Enables usage of custom HeavenMS NPC scripts (Agent E, Coco, etc). Will not disable Abdula (it's actually useful for the gameplay) or quests. + public static final boolean USE_STARTER_MERGE = false; //Allows any players to use the Equipment Merge custom mechanic (as opposed to the high-level, Maker lv3 requisites). + + //Commands Configuration + public static final boolean BLOCK_GENERATE_CASH_ITEM = false; //Prevents creation of cash items with the item/drop command. + public static final boolean USE_WHOLE_SERVER_RANKING = false; //Enables a ranking pool made from every character registered on the server for the "ranks" command, instead of separated by worlds. + + //Server Rates And Experience + public static final int EXP_RATE = 10; //NOTE: World-specific rates within "world.ini" OVERRIDES the default rates from here. + public static final int MESO_RATE = 10; + public static final int DROP_RATE = 10; + public static final int BOSS_DROP_RATE = 10; //NOTE: Boss drop rate OVERRIDES common drop rate, for bosses-only. + public static final int QUEST_RATE = 5; //Multiplier for Exp & Meso gains when completing a quest. Only available when USE_QUEST_RATE is true. Stacks with server Exp & Meso rates. + public static final int FISHING_RATE = 10; //Multiplier for success likelihood on meso thrown during fishing. + public static final int TRAVEL_RATE = 10; //Means of transportation rides/departs using 1/N of the default time. + + public static final double EQUIP_EXP_RATE = 1.0; //Rate for equipment exp gain, grows linearly. Set 1.0 for default (about 100~200 same-level range mobs killed to pass equip from level 1 to 2). + public static final double PQ_BONUS_EXP_RATE = 0.5; //Rate for the PQ exp reward. + + public static final byte EXP_SPLIT_LEVEL_INTERVAL = 5; //Non-contributing players must be within N level between the mob to receive EXP. + public static final byte EXP_SPLIT_LEECH_INTERVAL = 5; //Non-contributing players must be within N level between any contributing party member to receive EXP. + public static final float EXP_SPLIT_MVP_MOD = 0.2f; + public static final float EXP_SPLIT_COMMON_MOD = 0.8f; + public static final float PARTY_BONUS_EXP_RATE = 1.0f; //Rate for the party exp bonus reward. + + //Miscellaneous Configuration + public static String TIMEZONE = "GMT-3"; + public static boolean USE_DISPLAY_NUMBERS_WITH_COMMA = true; //Enforce comma on displayed strings (use this when USE_UNITPRICE_WITH_COMMA is active and you still want to display comma-separated values). + public static boolean USE_UNITPRICE_WITH_COMMA = true; //Set this accordingly with the layout of the unitPrices on Item.wz XML's, whether it's using commas or dots to represent fractions. + public static final byte MAX_MONITORED_BUFFSTATS = 5; //Limits accounting for "dormant" buff effects, that should take place when stronger stat buffs expires. + public static final int MAX_AP = 32767; //Max AP allotted on the auto-assigner. + public static final int MAX_EVENT_LEVELS = 8; //Event has different levels of rewarding system. + public static final long BLOCK_NPC_RACE_CONDT = (long)(0.5 * 1000); //Time the player client must wait before reopening a conversation with an NPC. + public static final long PET_LOOT_UPON_ATTACK = (long)(0.7 * 1000); //Time the pet must wait before trying to pick items up. + public static final int TOT_MOB_QUEST_REQUIREMENT = 77; //Overwrites old 999-mobs requirement for the ToT questline with new requirement value, set 0 for default. + public static final int MOB_REACTOR_REFRESH_TIME = 30 * 1000; //Overwrites refresh time for those reactors oriented to inflict damage to bosses (Ice Queen, Riche), set 0 for default. + public static final int PARTY_SEARCH_REENTRY_LIMIT = 10; //Max amount of times a party leader is allowed to persist on the Party Search before entry expiration (thus needing to manually restart the Party Search to be able to search for members). + public static final int NAME_CHANGE_COOLDOWN = 30*24*60*60*1000; //Cooldown for name changes, default (GMS) is 30 days. + public static final int WORLD_TRANSFER_COOLDOWN=NAME_CHANGE_COOLDOWN;//Cooldown for world tranfers, default is same as name change (30 days). + public static final boolean INSTANT_NAME_CHANGE = false; //Whether or not to wait for server restart to apply name changes. Does on reconnect otherwise (requires queries on every login). + + //Dangling Items/Locks Configuration + public static final int ITEM_EXPIRE_TIME = 3 * 60 * 1000; //Time before items start disappearing. Recommended to be set up to 3 minutes. + public static final int KITE_EXPIRE_TIME = 60 * 60 * 1000; //Time before kites (cash item) disappears. + public static final int ITEM_MONITOR_TIME = 5 * 60 * 1000; //Interval between item monitoring tasks on maps, which checks for dangling (null) item objects on the map item history. + public static final int LOCK_MONITOR_TIME = 30 * 1000; //Waiting time for a lock to be released. If it reaches timeout, a critical server deadlock has made present. + + //Map Monitor Configuration + public static final int ITEM_EXPIRE_CHECK = 10 * 1000; //Interval between item expiring tasks on maps, which checks and makes disappear expired items. + public static final int ITEM_LIMIT_ON_MAP = 200; //Max number of items allowed on a map. + public static final int MAP_VISITED_SIZE = 5; //Max length for last mapids visited by a player. This is used to recover and update drops on these maps accordingly with player actions. + public static final int MAP_DAMAGE_OVERTIME_INTERVAL = 5000;//Interval in milliseconds between map environment damage (e.g. El Nath and Aqua Road surrondings). + + //Channel Mob Disease Monitor Configuration + public static final int MOB_STATUS_MONITOR_PROC = 200; //Frequency in milliseconds between each proc on the mob disease monitor schedule. + public static final int MOB_STATUS_MONITOR_LIFE = 84; //Idle proc count the mob disease monitor is allowed to be there before closing it due to inactivity. + public static final int MOB_STATUS_AGGRO_PERSISTENCE = 2; //Idle proc count on aggro update for a mob to keep following the current controller, given him/her is the leading damage dealer. + public static final int MOB_STATUS_AGGRO_INTERVAL = 5000; //Interval in milliseconds between aggro logistics update. + + //Some Gameplay Enhancing Configurations + //Scroll Configuration + public static final boolean USE_PERFECT_GM_SCROLL = true; //Scrolls from GMs never uses up slots nor fails. + public static final boolean USE_PERFECT_SCROLLING = true; //Scrolls doesn't use slots upon failure. + public static final boolean USE_ENHANCED_CHSCROLL = true; //Equips even more powerful with chaos upgrade. + public static final boolean USE_ENHANCED_CRAFTING = true; //Apply chaos scroll on every equip crafted. + public static final boolean USE_ENHANCED_CLNSLATE = true; //Clean slates can be applied to recover successfully used slots as well. + public static final int SCROLL_CHANCE_ROLLS = 10; //Number of rolls for success on a scroll, set 1 for default. + public static final int CHSCROLL_STAT_ROLLS = 3; //Number of rolls of stat upgrade on a successfully applied chaos scroll, set 1 for default. + public static final int CHSCROLL_STAT_RANGE = 6; //Stat upgrade range (-N, N) on chaos scrolls. + + //Beginner Skills Configuration + public static final boolean USE_ULTRA_NIMBLE_FEET = true; //Massive speed & jump upgrade. + public static final boolean USE_ULTRA_RECOVERY = true; //Massive recovery amounts overtime. + public static final boolean USE_ULTRA_THREE_SNAILS = true; //Massive damage on shell toss. + + //Other Skills Configuration + public static final boolean USE_FULL_ARAN_SKILLSET = false; //Enables starter availability to all Aran job skills. Suggestion thanks to Masterrulax. + public static final boolean USE_FAST_REUSE_HERO_WILL = true;//Greatly reduce cooldown on Hero's Will. + public static final boolean USE_ANTI_IMMUNITY_CRASH = true; //Crash skills additionally removes the mob's invincibility buffs. Suggestion thanks to Celestial. + public static final boolean USE_UNDISPEL_HOLY_SHIELD = true;//Holy shield buff also prevents players from suffering dispel from mobs. + public static final boolean USE_FULL_HOLY_SYMBOL = true; //Holy symbol doesn't require EXP sharers to work in full. + + //Character Configuration + public static final boolean USE_ADD_SLOTS_BY_LEVEL = true; //Slots are added each 20 levels. + public static final boolean USE_ADD_RATES_BY_LEVEL = true; //Rates are added each 20 levels. + public static final boolean USE_STACK_COUPON_RATES = false; //Multiple coupons effects builds up together. + public static final boolean USE_PERFECT_PITCH = true; //For lvl 30 or above, each lvlup grants player 1 perfect pitch. + + //Quest Configuration + public static final boolean USE_QUEST_RATE = false; //Exp/Meso gained by quests uses fixed server exp/meso rate times quest rate as multiplier, instead of player rates. + + //Quest Points Configuration + public static final int QUEST_POINT_REPEATABLE_INTERVAL = 24;//Minimum interval between repeatable quest completions for quest points to be awarded. + public static final int QUEST_POINT_REQUIREMENT = 16; //Exchange factor between N quest points to +1 fame, set 0 to disable the entire quest point mechanism. + public static final int QUEST_POINT_PER_QUEST_COMPLETE = 4; //Each completed quest awards N quest points, set 0 to disable. + public static final int QUEST_POINT_PER_EVENT_CLEAR = 1; //Each completed event instance awards N quest points, set 0 to disable. + + //Guild Configuration + public static final int CREATE_GUILD_MIN_PARTNERS = 6; //Minimum number of members on Guild Headquarters to establish a new guild. + public static final int CREATE_GUILD_COST = 1500000; + public static final int CHANGE_EMBLEM_COST = 5000000; + public static final int EXPAND_GUILD_BASE_COST = 500000; + public static final int EXPAND_GUILD_TIER_COST = 1000000; + public static final int EXPAND_GUILD_MAX_COST = 5000000; + + //Family Configuration + public static final int FAMILY_REP_PER_KILL = 4; //Amount of rep gained per monster kill. + public static final int FAMILY_REP_PER_BOSS_KILL = 20; //Amount of rep gained per boss kill. + public static final int FAMILY_REP_PER_LEVELUP = 200; //Amount of rep gained upon leveling up. + public static final int FAMILY_MAX_GENERATIONS = 1000; //Maximum depth of family tree. (Distance from leader to farthest junior) + + //Equipment Configuration + public static final boolean USE_EQUIPMNT_LVLUP_SLOTS = true;//Equips can upgrade slots at level up. + public static final boolean USE_EQUIPMNT_LVLUP_POWER = true;//Enable more powerful stat upgrades at equip level up. + public static final boolean USE_EQUIPMNT_LVLUP_CASH = true; //Enable equip leveling up on cash equipments as well. + public static final boolean USE_SPIKES_AVOID_BANISH = true; //Shoes equipped with spikes prevents mobs from banishing wearer. + public static final int MAX_EQUIPMNT_LVLUP_STAT_UP = 10000; //Max stat upgrade an equipment can have on a levelup. + public static final int MAX_EQUIPMNT_STAT = 32767; //Max stat on an equipment by leveling up. + public static final int USE_EQUIPMNT_LVLUP = 7; //All equips lvlup at max level of N, set 1 to disable. + + //Map-Chair Configuration + public static final boolean USE_CHAIR_EXTRAHEAL = true; //Enable map chairs to further recover player's HP and MP (player must have the Chair Mastery skill). + public static final byte CHAIR_EXTRA_HEAL_MULTIPLIER = 10; //Due to only being able to be send up-to-255 heal values, values being actually updated is the one displayed times this. + public static final int CHAIR_EXTRA_HEAL_MAX_DELAY = 21; //Players are expected to recover fully after using this skill for N seconds. + + //Player NPC Configuration + public static final int PLAYERNPC_INITIAL_X = 262; //Map frame width for putting PlayerNPCs. + public static final int PLAYERNPC_INITIAL_Y = 262; //Map frame height for putting PlayerNPCs. + public static final int PLAYERNPC_AREA_X = 320; //Initial width gap between PlayerNPCs. + public static final int PLAYERNPC_AREA_Y = 160; //Initial height gap between PlayerNPCs. + public static final int PLAYERNPC_AREA_STEPS = 4; //Max number of times gap is shortened to comport PlayerNPCs. + public static final boolean PLAYERNPC_ORGANIZE_AREA = true; //Automatically rearranges PlayerNPCs on the map if there is no space set the new NPC. Current distance gap between NPCs is decreased to solve this issue. + public static final boolean PLAYERNPC_AUTODEPLOY = true; //Makes PlayerNPC automatically deployed on the Hall of Fame at the instant one reaches max level. If false, eligible players must talk to 1st job instructor to deploy a NPC. + + //Pet Auto-Pot Configuration + public static final boolean USE_COMPULSORY_AUTOPOT = true; //Pets will consume as many potions as needed to fulfill the AUTOHP/MP ratio threshold. + public static final boolean USE_EQUIPS_ON_AUTOPOT = true; //Player MaxHP and MaxMP check values on autopot handler will be updated by the HP/MP bonuses on equipped items. + public static final double PET_AUTOHP_RATIO = 0.99; //Will automatically consume potions until given ratio of the MaxHP/MaxMP is reached. + public static final double PET_AUTOMP_RATIO = 0.99; + + //Pet & Mount Configuration + public static final byte PET_EXHAUST_COUNT = 3; //Number of proc counts (1 per minute) on the exhaust schedule for fullness. + public static final byte MOUNT_EXHAUST_COUNT = 1; //Number of proc counts (1 per minute) on the exhaust schedule for tiredness. + + //Pet Hunger Configuration + public static final boolean PETS_NEVER_HUNGRY = false; //If true, pets and mounts will never grow hungry. + public static final boolean GM_PETS_NEVER_HUNGRY = true; //If true, pets and mounts owned by GMs will never grow hungry. + + //Event Configuration + public static final int EVENT_MAX_GUILD_QUEUE = 10; //Max number of guilds in queue for GPQ. + public static final long EVENT_LOBBY_DELAY = 10; //Cooldown duration in seconds before reopening an event lobby. + + //Dojo Configuration + public static final boolean USE_FAST_DOJO_UPGRADE = true; //Reduced Dojo training points amount required for a belt upgrade. + public static final boolean USE_DEADLY_DOJO = false; //Should bosses really use 1HP,1MP attacks in dojo? + public static final int DOJO_ENERGY_ATK = 100; //Dojo energy gain when deal attack + public static final int DOJO_ENERGY_DMG = 20; //Dojo energy gain when recv attack + + //Wedding Configuration + public static final int WEDDING_RESERVATION_DELAY = 3; //Minimum idle slots before processing a wedding reservation. + public static final int WEDDING_RESERVATION_TIMEOUT = 10; //Limit time in minutes for the couple to show up before cancelling the wedding reservation. + public static final int WEDDING_RESERVATION_INTERVAL = 60; //Time between wedding starts in minutes. + public static final int WEDDING_BLESS_EXP = 30000; //Exp gained per bless count. + public static final int WEDDING_GIFT_LIMIT = 1; //Max number of gifts per person to same wishlist on marriage instances. + public static final boolean WEDDING_BLESSER_SHOWFX = true; //Pops bubble sprite effect on players blessing the couple. Setting this false shows the blessing effect on the couple instead. + + //Buyback Configuration + public static final boolean USE_BUYBACK_WITH_MESOS = true; //Enables usage of either mesos or NX for the buyback fee. + public static final float BUYBACK_FEE = 77.70f; //Sets the base amount needed to buyback (level 30 or under will use the base value). + public static final float BUYBACK_LEVEL_STACK_FEE = 85.47f; //Sets the level-stacking portion of the amount needed to buyback (fee will sum up linearly until level 120, when it reaches the peak). + public static final int BUYBACK_MESO_MULTIPLIER = 1000; //Sets a multiplier for the fee when using meso as the charge unit. + public static final int BUYBACK_RETURN_MINUTES = 1; //Sets the maximum amount of time the player can wait before decide to buyback. + public static final int BUYBACK_COOLDOWN_MINUTES = 7; //Sets the time the player must wait before using buyback again. + + // Login timeout by shavit + public static long TIMEOUT_DURATION = 3600000L; // Kicks clients who don't send any packet to the game server in due time (in millisseconds). + + //Event End Timestamp + public static final long EVENT_END_TIMESTAMP = 1428897600000L; + + //Debug Variables + public static int DEBUG_VALUES[] = new int[10]; // Field designed for packet testing purposes + + // https://github.com/openstreetmap/josm/blob/a3a6e8a6b657cf4c5b4c64ea14d6e87be6280d65/src/org/openstreetmap/josm/tools/Utils.java#L1566-L1585 + /** + * Returns the Java version as an int value. + * @return the Java version as an int value (8, 9, etc.) + * @since 12130 + */ + public static int getJavaVersion() { + String version = System.getProperty("java.version"); + if (version.startsWith("1.")) { + version = version.substring(2); + } + // Allow these formats: + // 1.8.0_72-ea + // 9-ea + // 9 + // 9.0.1 + int dotPos = version.indexOf('.'); + int dashPos = version.indexOf('-'); + return Integer.parseInt(version.substring(0, + dotPos > -1 ? dotPos : dashPos > -1 ? dashPos : 1)); + } +} diff --git a/src/constants/CharsetConstants.java b/src/constants/string/CharsetConstants.java similarity index 97% rename from src/constants/CharsetConstants.java rename to src/constants/string/CharsetConstants.java index a00bc90bd2..45c9c6ce4e 100644 --- a/src/constants/CharsetConstants.java +++ b/src/constants/string/CharsetConstants.java @@ -4,7 +4,7 @@ * and open the template in the editor. */ -package constants; +package constants.string; /* * Thanks to GabrielSin (EllinMS) - gabrielsin@playellin.net diff --git a/src/constants/LanguageConstants.java b/src/constants/string/LanguageConstants.java similarity index 99% rename from src/constants/LanguageConstants.java rename to src/constants/string/LanguageConstants.java index 45ab0fe9a2..4bbf48d4d1 100644 --- a/src/constants/LanguageConstants.java +++ b/src/constants/string/LanguageConstants.java @@ -1,4 +1,4 @@ -package constants; +package constants.string; import client.MapleCharacter; diff --git a/src/net/MapleServerHandler.java b/src/net/MapleServerHandler.java index 5b16e0ae02..6e8aad2b22 100644 --- a/src/net/MapleServerHandler.java +++ b/src/net/MapleServerHandler.java @@ -35,14 +35,14 @@ import org.apache.mina.core.session.IdleStatus; import org.apache.mina.core.session.IoSession; import client.MapleClient; -import constants.ServerConstants; +import constants.net.ServerConstants; import java.net.InetSocketAddress; import net.server.Server; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.MonitoredReentrantLock; import net.server.audit.locks.factory.MonitoredReentrantLockFactory; -import net.server.coordinator.MapleSessionCoordinator; +import net.server.coordinator.session.MapleSessionCoordinator; import tools.FilePrinter; import tools.MapleAESOFB; diff --git a/src/net/mina/MaplePacketDecoder.java b/src/net/mina/MaplePacketDecoder.java index b08116fc23..ad90d7dc1e 100644 --- a/src/net/mina/MaplePacketDecoder.java +++ b/src/net/mina/MaplePacketDecoder.java @@ -22,10 +22,9 @@ package net.mina; import config.YamlConfig; -import constants.ServerConstants; import client.MapleClient; -import constants.OpcodeConstants; -import net.server.coordinator.MapleSessionCoordinator; +import constants.net.OpcodeConstants; +import net.server.coordinator.session.MapleSessionCoordinator; import org.apache.mina.core.buffer.IoBuffer; import org.apache.mina.core.session.IoSession; import org.apache.mina.filter.codec.CumulativeProtocolDecoder; diff --git a/src/net/mina/MaplePacketEncoder.java b/src/net/mina/MaplePacketEncoder.java index 8aafcf2e60..2bd7fda9b4 100644 --- a/src/net/mina/MaplePacketEncoder.java +++ b/src/net/mina/MaplePacketEncoder.java @@ -22,10 +22,9 @@ along with this program. If not, see . package net.mina; import config.YamlConfig; -import constants.ServerConstants; import client.MapleClient; -import constants.OpcodeConstants; -import net.server.coordinator.MapleSessionCoordinator; +import constants.net.OpcodeConstants; +import net.server.coordinator.session.MapleSessionCoordinator; import org.apache.mina.core.buffer.IoBuffer; import org.apache.mina.core.session.IoSession; import org.apache.mina.filter.codec.ProtocolEncoder; diff --git a/src/net/server/Server.java b/src/net/server/Server.java index 25d4c77cc3..bc7023394c 100644 --- a/src/net/server/Server.java +++ b/src/net/server/Server.java @@ -55,22 +55,22 @@ import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import net.MapleServerHandler; import net.mina.MapleCodecFactory; import net.server.channel.Channel; -import net.server.coordinator.MapleSessionCoordinator; +import net.server.coordinator.session.MapleSessionCoordinator; import net.server.guild.MapleAlliance; import net.server.guild.MapleGuild; import net.server.guild.MapleGuildCharacter; -import net.server.worker.BossLogWorker; -import net.server.worker.CharacterDiseaseWorker; -import net.server.worker.CouponWorker; -import net.server.worker.EventRecallCoordinatorWorker; -import net.server.worker.DueyFredrickWorker; -import net.server.worker.InvitationWorker; -import net.server.worker.LoginCoordinatorWorker; -import net.server.worker.LoginStorageWorker; -import net.server.worker.RankingCommandWorker; -import net.server.worker.RankingLoginWorker; -import net.server.worker.ReleaseLockWorker; -import net.server.worker.RespawnWorker; +import net.server.task.BossLogTask; +import net.server.task.CharacterDiseaseTask; +import net.server.task.CouponTask; +import net.server.task.EventRecallCoordinatorTask; +import net.server.task.DueyFredrickTask; +import net.server.task.InvitationTask; +import net.server.task.LoginCoordinatorTask; +import net.server.task.LoginStorageTask; +import net.server.task.RankingCommandTask; +import net.server.task.RankingLoginTask; +import net.server.task.ReleaseLockTask; +import net.server.task.RespawnTask; import net.server.world.World; import org.apache.mina.core.buffer.IoBuffer; @@ -91,10 +91,10 @@ import client.inventory.ItemFactory; import client.inventory.MaplePet; import client.inventory.manipulator.MapleCashidGenerator; import client.newyear.NewYearCardRecord; -import constants.ItemConstants; -import constants.GameConstants; -import constants.OpcodeConstants; -import constants.ServerConstants; +import constants.inventory.ItemConstants; +import constants.game.GameConstants; +import constants.net.OpcodeConstants; +import constants.net.ServerConstants; import java.util.TimeZone; import server.CashShop.CashItemFactory; import server.MapleSkillbookInformationProvider; @@ -877,21 +877,21 @@ public class Server { disconnectIdlesOnLoginTask(); long timeLeft = getTimeLeftForNextHour(); - tMan.register(new CharacterDiseaseWorker(), YamlConfig.config.server.UPDATE_INTERVAL, YamlConfig.config.server.UPDATE_INTERVAL); - tMan.register(new ReleaseLockWorker(), 2 * 60 * 1000, 2 * 60 * 1000); - tMan.register(new CouponWorker(), YamlConfig.config.server.COUPON_INTERVAL, timeLeft); - tMan.register(new RankingCommandWorker(), 5 * 60 * 1000, 5 * 60 * 1000); - tMan.register(new RankingLoginWorker(), YamlConfig.config.server.RANKING_INTERVAL, timeLeft); - tMan.register(new LoginCoordinatorWorker(), 60 * 60 * 1000, timeLeft); - tMan.register(new EventRecallCoordinatorWorker(), 60 * 60 * 1000, timeLeft); - tMan.register(new LoginStorageWorker(), 2 * 60 * 1000, 2 * 60 * 1000); - tMan.register(new DueyFredrickWorker(), 60 * 60 * 1000, timeLeft); - tMan.register(new InvitationWorker(), 30 * 1000, 30 * 1000); - tMan.register(new RespawnWorker(), YamlConfig.config.server.RESPAWN_INTERVAL, YamlConfig.config.server.RESPAWN_INTERVAL); + tMan.register(new CharacterDiseaseTask(), ServerConstants.UPDATE_INTERVAL, ServerConstants.UPDATE_INTERVAL); + tMan.register(new ReleaseLockTask(), 2 * 60 * 1000, 2 * 60 * 1000); + tMan.register(new CouponTask(), ServerConstants.COUPON_INTERVAL, timeLeft); + tMan.register(new RankingCommandTask(), 5 * 60 * 1000, 5 * 60 * 1000); + tMan.register(new RankingLoginTask(), ServerConstants.RANKING_INTERVAL, timeLeft); + tMan.register(new LoginCoordinatorTask(), 60 * 60 * 1000, timeLeft); + tMan.register(new EventRecallCoordinatorTask(), 60 * 60 * 1000, timeLeft); + tMan.register(new LoginStorageTask(), 2 * 60 * 1000, 2 * 60 * 1000); + tMan.register(new DueyFredrickTask(), 60 * 60 * 1000, timeLeft); + tMan.register(new InvitationTask(), 30 * 1000, 30 * 1000); + tMan.register(new RespawnTask(), ServerConstants.RESPAWN_INTERVAL, ServerConstants.RESPAWN_INTERVAL); timeLeft = getTimeLeftForNextDay(); MapleExpeditionBossLog.resetBossLogTable(); - tMan.register(new BossLogWorker(), 24 * 60 * 60 * 1000, timeLeft); + tMan.register(new BossLogTask(), 24 * 60 * 60 * 1000, timeLeft); long timeToTake = System.currentTimeMillis(); SkillFactory.loadAllSkills(); @@ -911,7 +911,7 @@ public class Server { if(YamlConfig.config.server.USE_THREAD_TRACKER) ThreadTracker.getInstance().registerThreadTrackerTask(); try { - Integer worldCount = Math.min(GameConstants.WORLD_NAMES.length, YamlConfig.config.worlds.size()); + Integer worldCount = Math.min(GameConstants.WORLD_NAMES.length, YamlConfig.config.server.WORLDS); for (int i = 0; i < worldCount; i++) { initWorld(); diff --git a/src/net/server/audit/locks/active/TrackerReadLock.java b/src/net/server/audit/locks/active/TrackerReadLock.java index 4b05805d0a..fccd60b85b 100644 --- a/src/net/server/audit/locks/active/TrackerReadLock.java +++ b/src/net/server/audit/locks/active/TrackerReadLock.java @@ -20,7 +20,6 @@ package net.server.audit.locks.active; import config.YamlConfig; -import constants.ServerConstants; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; diff --git a/src/net/server/audit/locks/active/TrackerReentrantLock.java b/src/net/server/audit/locks/active/TrackerReentrantLock.java index 3f1432465e..119916bd29 100644 --- a/src/net/server/audit/locks/active/TrackerReentrantLock.java +++ b/src/net/server/audit/locks/active/TrackerReentrantLock.java @@ -25,7 +25,6 @@ import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.ScheduledFuture; import config.YamlConfig; -import constants.ServerConstants; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; diff --git a/src/net/server/audit/locks/active/TrackerWriteLock.java b/src/net/server/audit/locks/active/TrackerWriteLock.java index e77aaec924..a492cbf1e2 100644 --- a/src/net/server/audit/locks/active/TrackerWriteLock.java +++ b/src/net/server/audit/locks/active/TrackerWriteLock.java @@ -20,7 +20,6 @@ package net.server.audit.locks.active; import config.YamlConfig; -import constants.ServerConstants; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; diff --git a/src/net/server/audit/locks/empty/EmptyReadLock.java b/src/net/server/audit/locks/empty/EmptyReadLock.java index 9e98b776bf..18d3d66c5d 100644 --- a/src/net/server/audit/locks/empty/EmptyReadLock.java +++ b/src/net/server/audit/locks/empty/EmptyReadLock.java @@ -19,7 +19,7 @@ */ package net.server.audit.locks.empty; -import constants.ServerConstants; +import constants.net.ServerConstants; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; diff --git a/src/net/server/audit/locks/empty/EmptyReentrantLock.java b/src/net/server/audit/locks/empty/EmptyReentrantLock.java index dd2916c1e9..be1889e7da 100644 --- a/src/net/server/audit/locks/empty/EmptyReentrantLock.java +++ b/src/net/server/audit/locks/empty/EmptyReentrantLock.java @@ -19,7 +19,7 @@ */ package net.server.audit.locks.empty; -import constants.ServerConstants; +import constants.net.ServerConstants; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; diff --git a/src/net/server/audit/locks/empty/EmptyWriteLock.java b/src/net/server/audit/locks/empty/EmptyWriteLock.java index c1615f2fa3..cbfa163f74 100644 --- a/src/net/server/audit/locks/empty/EmptyWriteLock.java +++ b/src/net/server/audit/locks/empty/EmptyWriteLock.java @@ -19,7 +19,7 @@ */ package net.server.audit.locks.empty; -import constants.ServerConstants; +import constants.net.ServerConstants; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; diff --git a/src/net/server/channel/Channel.java b/src/net/server/channel/Channel.java index aaa7aa64e2..3ee7013f8b 100644 --- a/src/net/server/channel/Channel.java +++ b/src/net/server/channel/Channel.java @@ -21,6 +21,13 @@ along with this program. If not, see . */ package net.server.channel; +import net.server.channel.task.FaceExpressionScheduler; +import net.server.channel.task.MobMistScheduler; +import net.server.channel.task.OverallScheduler; +import net.server.channel.task.MobAnimationScheduler; +import net.server.channel.task.MobStatusScheduler; +import net.server.channel.task.MobClearSkillScheduler; +import net.server.channel.task.EventScheduler; import java.io.File; import java.net.InetSocketAddress; import java.util.ArrayList; @@ -50,7 +57,6 @@ import net.mina.MapleCodecFactory; import net.server.PlayerStorage; import net.server.Server; -import net.server.channel.worker.*; import net.server.world.World; import net.server.world.MapleParty; @@ -78,7 +84,7 @@ import tools.MaplePacketCreator; import tools.Pair; import client.MapleCharacter; import client.status.MonsterStatusEffect; -import constants.ServerConstants; +import constants.net.ServerConstants; import server.maps.MapleMiniDungeonInfo; public final class Channel { diff --git a/src/net/server/channel/handlers/AbstractDealDamageHandler.java b/src/net/server/channel/handlers/AbstractDealDamageHandler.java index ec977f1501..dd9124d1a5 100644 --- a/src/net/server/channel/handlers/AbstractDealDamageHandler.java +++ b/src/net/server/channel/handlers/AbstractDealDamageHandler.java @@ -55,8 +55,8 @@ import client.SkillFactory; import client.autoban.AutobanFactory; import client.status.MonsterStatus; import client.status.MonsterStatusEffect; -import constants.GameConstants; -import constants.ServerConstants; +import constants.game.GameConstants; +import constants.net.ServerConstants; import constants.skills.Aran; import constants.skills.Assassin; import constants.skills.Bandit; diff --git a/src/net/server/channel/handlers/AcceptFamilyHandler.java b/src/net/server/channel/handlers/AcceptFamilyHandler.java index 670f37fec4..ebe120fb11 100644 --- a/src/net/server/channel/handlers/AcceptFamilyHandler.java +++ b/src/net/server/channel/handlers/AcceptFamilyHandler.java @@ -22,7 +22,6 @@ package net.server.channel.handlers; import config.YamlConfig; -import constants.ServerConstants; import java.sql.Connection; import java.sql.PreparedStatement; @@ -33,10 +32,10 @@ import client.MapleClient; import client.MapleFamily; import client.MapleFamilyEntry; import net.AbstractMaplePacketHandler; -import net.server.coordinator.MapleInviteCoordinator; -import net.server.coordinator.MapleInviteCoordinator.InviteResult; -import net.server.coordinator.MapleInviteCoordinator.InviteType; -import net.server.coordinator.MapleInviteCoordinator.MapleInviteResult; +import net.server.coordinator.world.MapleInviteCoordinator; +import net.server.coordinator.world.MapleInviteCoordinator.InviteResult; +import net.server.coordinator.world.MapleInviteCoordinator.InviteType; +import net.server.coordinator.world.MapleInviteCoordinator.MapleInviteResult; import tools.DatabaseConnection; import tools.FilePrinter; import tools.MaplePacketCreator; diff --git a/src/net/server/channel/handlers/AdminChatHandler.java b/src/net/server/channel/handlers/AdminChatHandler.java index 35be0f800b..40acfc9259 100644 --- a/src/net/server/channel/handlers/AdminChatHandler.java +++ b/src/net/server/channel/handlers/AdminChatHandler.java @@ -2,7 +2,6 @@ package net.server.channel.handlers; import client.MapleClient; import config.YamlConfig; -import constants.ServerConstants; import net.AbstractMaplePacketHandler; import tools.LogHelper; import tools.MaplePacketCreator; diff --git a/src/net/server/channel/handlers/AranComboHandler.java b/src/net/server/channel/handlers/AranComboHandler.java index 5490843b6a..1f5de34084 100644 --- a/src/net/server/channel/handlers/AranComboHandler.java +++ b/src/net/server/channel/handlers/AranComboHandler.java @@ -24,7 +24,7 @@ package net.server.channel.handlers; import client.MapleCharacter; import client.MapleClient; import client.SkillFactory; -import constants.GameConstants; +import constants.game.GameConstants; import constants.skills.Aran; import net.AbstractMaplePacketHandler; import tools.data.input.SeekableLittleEndianAccessor; diff --git a/src/net/server/channel/handlers/AutoAssignHandler.java b/src/net/server/channel/handlers/AutoAssignHandler.java index b9e2717c4f..41b5582263 100644 --- a/src/net/server/channel/handlers/AutoAssignHandler.java +++ b/src/net/server/channel/handlers/AutoAssignHandler.java @@ -22,7 +22,7 @@ package net.server.channel.handlers; import client.MapleClient; -import client.processor.AssignAPProcessor; +import client.processor.stat.AssignAPProcessor; import net.AbstractMaplePacketHandler; import tools.data.input.SeekableLittleEndianAccessor; diff --git a/src/net/server/channel/handlers/CashOperationHandler.java b/src/net/server/channel/handlers/CashOperationHandler.java index ca25e216fb..62e92cdf0e 100644 --- a/src/net/server/channel/handlers/CashOperationHandler.java +++ b/src/net/server/channel/handlers/CashOperationHandler.java @@ -29,7 +29,7 @@ import client.inventory.Item; import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; import config.YamlConfig; -import constants.ItemConstants; +import constants.inventory.ItemConstants; import java.sql.SQLException; import java.util.Calendar; import java.util.List; @@ -40,7 +40,7 @@ import server.CashShop; import server.CashShop.CashItem; import server.CashShop.CashItemFactory; import client.inventory.manipulator.MapleInventoryManipulator; -import constants.ServerConstants; +import constants.net.ServerConstants; import server.MapleItemInformationProvider; import tools.FilePrinter; import tools.MaplePacketCreator; diff --git a/src/net/server/channel/handlers/CloseRangeDamageHandler.java b/src/net/server/channel/handlers/CloseRangeDamageHandler.java index 3f23247fac..b9240062d8 100644 --- a/src/net/server/channel/handlers/CloseRangeDamageHandler.java +++ b/src/net/server/channel/handlers/CloseRangeDamageHandler.java @@ -36,8 +36,8 @@ import client.MapleClient; import client.MapleJob; import client.Skill; import client.SkillFactory; -import constants.GameConstants; -import constants.ServerConstants; +import constants.game.GameConstants; +import constants.net.ServerConstants; import constants.skills.Crusader; import constants.skills.DawnWarrior; import constants.skills.DragonKnight; diff --git a/src/net/server/channel/handlers/DenyPartyRequestHandler.java b/src/net/server/channel/handlers/DenyPartyRequestHandler.java index 2da154845b..748804377d 100644 --- a/src/net/server/channel/handlers/DenyPartyRequestHandler.java +++ b/src/net/server/channel/handlers/DenyPartyRequestHandler.java @@ -24,9 +24,9 @@ package net.server.channel.handlers; import client.MapleCharacter; import client.MapleClient; import net.AbstractMaplePacketHandler; -import net.server.coordinator.MapleInviteCoordinator; -import net.server.coordinator.MapleInviteCoordinator.InviteResult; -import net.server.coordinator.MapleInviteCoordinator.InviteType; +import net.server.coordinator.world.MapleInviteCoordinator; +import net.server.coordinator.world.MapleInviteCoordinator.InviteResult; +import net.server.coordinator.world.MapleInviteCoordinator.InviteType; import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; diff --git a/src/net/server/channel/handlers/DistributeAPHandler.java b/src/net/server/channel/handlers/DistributeAPHandler.java index 3831a15e5d..c83c64158b 100644 --- a/src/net/server/channel/handlers/DistributeAPHandler.java +++ b/src/net/server/channel/handlers/DistributeAPHandler.java @@ -22,7 +22,7 @@ package net.server.channel.handlers; import client.MapleClient; -import client.processor.AssignAPProcessor; +import client.processor.stat.AssignAPProcessor; import net.AbstractMaplePacketHandler; import tools.data.input.SeekableLittleEndianAccessor; diff --git a/src/net/server/channel/handlers/DistributeSPHandler.java b/src/net/server/channel/handlers/DistributeSPHandler.java index 8e1e570c03..22b6042445 100644 --- a/src/net/server/channel/handlers/DistributeSPHandler.java +++ b/src/net/server/channel/handlers/DistributeSPHandler.java @@ -22,7 +22,7 @@ package net.server.channel.handlers; import client.MapleClient; -import client.processor.AssignSPProcessor; +import client.processor.stat.AssignSPProcessor; import net.AbstractMaplePacketHandler; import tools.data.input.SeekableLittleEndianAccessor; diff --git a/src/net/server/channel/handlers/DueyHandler.java b/src/net/server/channel/handlers/DueyHandler.java index 71c0bdd390..0e67dc43e7 100644 --- a/src/net/server/channel/handlers/DueyHandler.java +++ b/src/net/server/channel/handlers/DueyHandler.java @@ -22,9 +22,8 @@ package net.server.channel.handlers; import client.MapleClient; -import client.processor.DueyProcessor; +import client.processor.npc.DueyProcessor; import config.YamlConfig; -import constants.ServerConstants; import net.AbstractMaplePacketHandler; import tools.MaplePacketCreator; diff --git a/src/net/server/channel/handlers/EnterMTSHandler.java b/src/net/server/channel/handlers/EnterMTSHandler.java index 8de629d4e9..402e84ead9 100644 --- a/src/net/server/channel/handlers/EnterMTSHandler.java +++ b/src/net/server/channel/handlers/EnterMTSHandler.java @@ -29,12 +29,11 @@ import java.util.ArrayList; import java.util.List; import config.YamlConfig; -import constants.ServerConstants; import client.MapleCharacter; import client.MapleClient; import client.inventory.Equip; import client.inventory.Item; -import client.processor.BuybackProcessor; +import client.processor.action.BuybackProcessor; import net.AbstractMaplePacketHandler; import net.server.Server; import server.MTSItemInfo; diff --git a/src/net/server/channel/handlers/FaceExpressionHandler.java b/src/net/server/channel/handlers/FaceExpressionHandler.java index b5be532a12..6a463dd726 100644 --- a/src/net/server/channel/handlers/FaceExpressionHandler.java +++ b/src/net/server/channel/handlers/FaceExpressionHandler.java @@ -23,7 +23,7 @@ package net.server.channel.handlers; import client.MapleClient; import client.MapleCharacter; -import constants.ItemConstants; +import constants.inventory.ItemConstants; import net.AbstractMaplePacketHandler; import tools.data.input.SeekableLittleEndianAccessor; diff --git a/src/net/server/channel/handlers/FamilyAddHandler.java b/src/net/server/channel/handlers/FamilyAddHandler.java index 1553908173..6c9e0d7fcd 100644 --- a/src/net/server/channel/handlers/FamilyAddHandler.java +++ b/src/net/server/channel/handlers/FamilyAddHandler.java @@ -22,12 +22,11 @@ package net.server.channel.handlers; import config.YamlConfig; -import constants.ServerConstants; import client.MapleCharacter; import client.MapleClient; import net.AbstractMaplePacketHandler; -import net.server.coordinator.MapleInviteCoordinator; -import net.server.coordinator.MapleInviteCoordinator.InviteType; +import net.server.coordinator.world.MapleInviteCoordinator; +import net.server.coordinator.world.MapleInviteCoordinator.InviteType; import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; diff --git a/src/net/server/channel/handlers/FamilySeparateHandler.java b/src/net/server/channel/handlers/FamilySeparateHandler.java index 1dee691f5c..93597f53d1 100644 --- a/src/net/server/channel/handlers/FamilySeparateHandler.java +++ b/src/net/server/channel/handlers/FamilySeparateHandler.java @@ -23,7 +23,6 @@ import client.MapleClient; import client.MapleFamily; import client.MapleFamilyEntry; import config.YamlConfig; -import constants.ServerConstants; import net.AbstractMaplePacketHandler; import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; diff --git a/src/net/server/channel/handlers/FamilySummonResponseHandler.java b/src/net/server/channel/handlers/FamilySummonResponseHandler.java index 0bbaa58830..9f39b745f8 100644 --- a/src/net/server/channel/handlers/FamilySummonResponseHandler.java +++ b/src/net/server/channel/handlers/FamilySummonResponseHandler.java @@ -5,12 +5,11 @@ import client.MapleClient; import client.MapleFamilyEntitlement; import client.MapleFamilyEntry; import config.YamlConfig; -import constants.ServerConstants; import net.AbstractMaplePacketHandler; -import net.server.coordinator.MapleInviteCoordinator; -import net.server.coordinator.MapleInviteCoordinator.InviteResult; -import net.server.coordinator.MapleInviteCoordinator.InviteType; -import net.server.coordinator.MapleInviteCoordinator.MapleInviteResult; +import net.server.coordinator.world.MapleInviteCoordinator; +import net.server.coordinator.world.MapleInviteCoordinator.InviteResult; +import net.server.coordinator.world.MapleInviteCoordinator.InviteType; +import net.server.coordinator.world.MapleInviteCoordinator.MapleInviteResult; import server.maps.MapleMap; import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; diff --git a/src/net/server/channel/handlers/FamilyUseHandler.java b/src/net/server/channel/handlers/FamilyUseHandler.java index 24b2abc758..344f8b541d 100644 --- a/src/net/server/channel/handlers/FamilyUseHandler.java +++ b/src/net/server/channel/handlers/FamilyUseHandler.java @@ -26,10 +26,9 @@ import client.MapleClient; import client.MapleFamilyEntitlement; import client.MapleFamilyEntry; import config.YamlConfig; -import constants.ServerConstants; import net.AbstractMaplePacketHandler; -import net.server.coordinator.MapleInviteCoordinator; -import net.server.coordinator.MapleInviteCoordinator.InviteType; +import net.server.coordinator.world.MapleInviteCoordinator; +import net.server.coordinator.world.MapleInviteCoordinator.InviteType; import server.maps.FieldLimit; import server.maps.MapleMap; import tools.MaplePacketCreator; diff --git a/src/net/server/channel/handlers/FieldDamageMobHandler.java b/src/net/server/channel/handlers/FieldDamageMobHandler.java index 4ae3153e96..0a6942319d 100644 --- a/src/net/server/channel/handlers/FieldDamageMobHandler.java +++ b/src/net/server/channel/handlers/FieldDamageMobHandler.java @@ -21,7 +21,7 @@ package net.server.channel.handlers; import client.MapleCharacter; import client.MapleClient; -import constants.GameConstants; +import constants.game.GameConstants; import net.AbstractMaplePacketHandler; import server.life.MapleMonster; import server.life.MapleMonsterInformationProvider; diff --git a/src/net/server/channel/handlers/FredrickHandler.java b/src/net/server/channel/handlers/FredrickHandler.java index ef516098a0..1e035ded11 100644 --- a/src/net/server/channel/handlers/FredrickHandler.java +++ b/src/net/server/channel/handlers/FredrickHandler.java @@ -23,7 +23,7 @@ package net.server.channel.handlers; import client.MapleCharacter; import client.MapleClient; -import client.processor.FredrickProcessor; +import client.processor.npc.FredrickProcessor; import net.AbstractMaplePacketHandler; import tools.data.input.SeekableLittleEndianAccessor; diff --git a/src/net/server/channel/handlers/GeneralChatHandler.java b/src/net/server/channel/handlers/GeneralChatHandler.java index dcf8b66b85..6f56b1a16b 100644 --- a/src/net/server/channel/handlers/GeneralChatHandler.java +++ b/src/net/server/channel/handlers/GeneralChatHandler.java @@ -26,7 +26,6 @@ import client.MapleClient; import client.autoban.AutobanFactory; import client.command.CommandsExecutor; import config.YamlConfig; -import constants.ServerConstants; import net.AbstractMaplePacketHandler; import tools.FilePrinter; import tools.LogHelper; diff --git a/src/net/server/channel/handlers/GuildOperationHandler.java b/src/net/server/channel/handlers/GuildOperationHandler.java index ac5f0b3b70..92991f4269 100644 --- a/src/net/server/channel/handlers/GuildOperationHandler.java +++ b/src/net/server/channel/handlers/GuildOperationHandler.java @@ -24,8 +24,8 @@ package net.server.channel.handlers; import config.YamlConfig; import net.server.guild.MapleGuildResponse; import net.server.guild.MapleGuild; -import constants.GameConstants; -import constants.ServerConstants; +import constants.game.GameConstants; +import constants.net.ServerConstants; import client.MapleClient; import net.AbstractMaplePacketHandler; import tools.data.input.SeekableLittleEndianAccessor; diff --git a/src/net/server/channel/handlers/HiredMerchantRequest.java b/src/net/server/channel/handlers/HiredMerchantRequest.java index 19e7f4dc35..160cdfff0d 100644 --- a/src/net/server/channel/handlers/HiredMerchantRequest.java +++ b/src/net/server/channel/handlers/HiredMerchantRequest.java @@ -26,7 +26,7 @@ import client.MapleCharacter; import java.sql.SQLException; import java.util.Arrays; import client.MapleClient; -import constants.GameConstants; +import constants.game.GameConstants; import java.awt.Point; import net.AbstractMaplePacketHandler; import server.maps.MaplePortal; diff --git a/src/net/server/channel/handlers/InventoryMergeHandler.java b/src/net/server/channel/handlers/InventoryMergeHandler.java index 1e87fa2e23..ae8c2feb3b 100644 --- a/src/net/server/channel/handlers/InventoryMergeHandler.java +++ b/src/net/server/channel/handlers/InventoryMergeHandler.java @@ -22,7 +22,6 @@ package net.server.channel.handlers; import config.YamlConfig; -import constants.ServerConstants; import net.AbstractMaplePacketHandler; import client.inventory.manipulator.MapleInventoryManipulator; import tools.MaplePacketCreator; diff --git a/src/net/server/channel/handlers/InventorySortHandler.java b/src/net/server/channel/handlers/InventorySortHandler.java index 5d2b32db38..d7510405f8 100644 --- a/src/net/server/channel/handlers/InventorySortHandler.java +++ b/src/net/server/channel/handlers/InventorySortHandler.java @@ -35,7 +35,7 @@ import client.inventory.Equip; import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; import client.inventory.ModifyInventory; -import constants.ServerConstants; +import constants.net.ServerConstants; import server.MapleItemInformationProvider; import net.server.Server; diff --git a/src/net/server/channel/handlers/ItemRewardHandler.java b/src/net/server/channel/handlers/ItemRewardHandler.java index 2794c1aedd..6fc7586ecf 100644 --- a/src/net/server/channel/handlers/ItemRewardHandler.java +++ b/src/net/server/channel/handlers/ItemRewardHandler.java @@ -24,7 +24,7 @@ package net.server.channel.handlers; import client.MapleClient; import client.inventory.Item; import client.inventory.MapleInventoryType; -import constants.ItemConstants; +import constants.inventory.ItemConstants; import java.util.List; import net.AbstractMaplePacketHandler; import net.server.Server; diff --git a/src/net/server/channel/handlers/KeymapChangeHandler.java b/src/net/server/channel/handlers/KeymapChangeHandler.java index 5613ddaef6..7d97aa108c 100644 --- a/src/net/server/channel/handlers/KeymapChangeHandler.java +++ b/src/net/server/channel/handlers/KeymapChangeHandler.java @@ -21,7 +21,7 @@ */ package net.server.channel.handlers; -import constants.GameConstants; +import constants.game.GameConstants; import client.MapleClient; import client.MapleKeyBinding; import client.Skill; diff --git a/src/net/server/channel/handlers/MTSHandler.java b/src/net/server/channel/handlers/MTSHandler.java index 3ccdc2f007..50ca166f63 100644 --- a/src/net/server/channel/handlers/MTSHandler.java +++ b/src/net/server/channel/handlers/MTSHandler.java @@ -44,7 +44,7 @@ import client.MapleClient; import client.inventory.Equip; import client.inventory.Item; import client.inventory.MapleInventoryType; -import constants.ItemConstants; +import constants.inventory.ItemConstants; public final class MTSHandler extends AbstractMaplePacketHandler { diff --git a/src/net/server/channel/handlers/MagicDamageHandler.java b/src/net/server/channel/handlers/MagicDamageHandler.java index cd562e5d63..1065f4eeb3 100644 --- a/src/net/server/channel/handlers/MagicDamageHandler.java +++ b/src/net/server/channel/handlers/MagicDamageHandler.java @@ -30,7 +30,7 @@ import client.MapleCharacter; import client.MapleClient; import client.Skill; import client.SkillFactory; -import constants.ServerConstants; +import constants.net.ServerConstants; import constants.skills.Bishop; import constants.skills.Evan; import constants.skills.FPArchMage; diff --git a/src/net/server/channel/handlers/MakerSkillHandler.java b/src/net/server/channel/handlers/MakerSkillHandler.java index 77062f96fb..2a108e64d0 100644 --- a/src/net/server/channel/handlers/MakerSkillHandler.java +++ b/src/net/server/channel/handlers/MakerSkillHandler.java @@ -22,7 +22,7 @@ package net.server.channel.handlers; import client.MapleClient; -import client.processor.MakerProcessor; +import client.processor.action.MakerProcessor; import net.AbstractMaplePacketHandler; import tools.data.input.SeekableLittleEndianAccessor; diff --git a/src/net/server/channel/handlers/MessengerHandler.java b/src/net/server/channel/handlers/MessengerHandler.java index 5b835df3c8..e30b9a8aca 100644 --- a/src/net/server/channel/handlers/MessengerHandler.java +++ b/src/net/server/channel/handlers/MessengerHandler.java @@ -24,10 +24,10 @@ package net.server.channel.handlers; import client.MapleCharacter; import client.MapleClient; import net.AbstractMaplePacketHandler; -import net.server.coordinator.MapleInviteCoordinator; -import net.server.coordinator.MapleInviteCoordinator.InviteResult; -import net.server.coordinator.MapleInviteCoordinator.InviteType; -import net.server.coordinator.MapleInviteCoordinator.MapleInviteResult; +import net.server.coordinator.world.MapleInviteCoordinator; +import net.server.coordinator.world.MapleInviteCoordinator.InviteResult; +import net.server.coordinator.world.MapleInviteCoordinator.InviteType; +import net.server.coordinator.world.MapleInviteCoordinator.MapleInviteResult; import net.server.world.MapleMessenger; import net.server.world.MapleMessengerCharacter; import net.server.world.World; diff --git a/src/net/server/channel/handlers/MoveLifeHandler.java b/src/net/server/channel/handlers/MoveLifeHandler.java index 5c4581fa1f..a3d1053ac0 100644 --- a/src/net/server/channel/handlers/MoveLifeHandler.java +++ b/src/net/server/channel/handlers/MoveLifeHandler.java @@ -28,7 +28,6 @@ import java.util.LinkedList; import java.util.List; import config.YamlConfig; -import constants.ServerConstants; import server.life.MapleMonster; import server.life.MapleMonsterInformationProvider; //import server.life.MobAttackInfo; diff --git a/src/net/server/channel/handlers/MultiChatHandler.java b/src/net/server/channel/handlers/MultiChatHandler.java index a31c265d17..87515bb2c8 100644 --- a/src/net/server/channel/handlers/MultiChatHandler.java +++ b/src/net/server/channel/handlers/MultiChatHandler.java @@ -25,7 +25,6 @@ import client.MapleCharacter; import client.MapleClient; import client.autoban.AutobanFactory; import config.YamlConfig; -import constants.ServerConstants; import net.AbstractMaplePacketHandler; import net.server.Server; import net.server.world.World; diff --git a/src/net/server/channel/handlers/NPCShopHandler.java b/src/net/server/channel/handlers/NPCShopHandler.java index 1598df933c..48475b441f 100644 --- a/src/net/server/channel/handlers/NPCShopHandler.java +++ b/src/net/server/channel/handlers/NPCShopHandler.java @@ -23,7 +23,7 @@ package net.server.channel.handlers; import client.MapleClient; import client.autoban.AutobanFactory; -import constants.ItemConstants; +import constants.inventory.ItemConstants; import net.AbstractMaplePacketHandler; import tools.FilePrinter; import tools.data.input.SeekableLittleEndianAccessor; diff --git a/src/net/server/channel/handlers/NPCTalkHandler.java b/src/net/server/channel/handlers/NPCTalkHandler.java index e9ca76240a..4c0b978115 100644 --- a/src/net/server/channel/handlers/NPCTalkHandler.java +++ b/src/net/server/channel/handlers/NPCTalkHandler.java @@ -22,9 +22,8 @@ package net.server.channel.handlers; import client.MapleClient; -import client.processor.DueyProcessor; +import client.processor.npc.DueyProcessor; import config.YamlConfig; -import constants.ServerConstants; import net.AbstractMaplePacketHandler; import scripting.npc.NPCScriptManager; import server.life.MapleNPC; diff --git a/src/net/server/channel/handlers/NewYearCardHandler.java b/src/net/server/channel/handlers/NewYearCardHandler.java index 126deb16f5..a2c4d8587e 100644 --- a/src/net/server/channel/handlers/NewYearCardHandler.java +++ b/src/net/server/channel/handlers/NewYearCardHandler.java @@ -19,7 +19,7 @@ */ package net.server.channel.handlers; -import constants.ItemConstants; +import constants.inventory.ItemConstants; import client.MapleCharacter; import client.MapleClient; diff --git a/src/net/server/channel/handlers/OpenFamilyHandler.java b/src/net/server/channel/handlers/OpenFamilyHandler.java index 242b510bb3..39dcdeeaf4 100644 --- a/src/net/server/channel/handlers/OpenFamilyHandler.java +++ b/src/net/server/channel/handlers/OpenFamilyHandler.java @@ -20,7 +20,6 @@ package net.server.channel.handlers; import config.YamlConfig; -import constants.ServerConstants; import client.MapleCharacter; import client.MapleClient; import net.AbstractMaplePacketHandler; diff --git a/src/net/server/channel/handlers/OpenFamilyPedigreeHandler.java b/src/net/server/channel/handlers/OpenFamilyPedigreeHandler.java index c6a57a78d7..2a24be3cda 100644 --- a/src/net/server/channel/handlers/OpenFamilyPedigreeHandler.java +++ b/src/net/server/channel/handlers/OpenFamilyPedigreeHandler.java @@ -20,7 +20,6 @@ package net.server.channel.handlers; import config.YamlConfig; -import constants.ServerConstants; import client.MapleCharacter; import client.MapleClient; import net.AbstractMaplePacketHandler; diff --git a/src/net/server/channel/handlers/OwlWarpHandler.java b/src/net/server/channel/handlers/OwlWarpHandler.java index f8be4608e0..25f6c8baa1 100644 --- a/src/net/server/channel/handlers/OwlWarpHandler.java +++ b/src/net/server/channel/handlers/OwlWarpHandler.java @@ -19,7 +19,7 @@ */ package net.server.channel.handlers; -import constants.GameConstants; +import constants.game.GameConstants; import client.MapleClient; import net.AbstractMaplePacketHandler; import server.maps.MaplePlayerShop; diff --git a/src/net/server/channel/handlers/PartyOperationHandler.java b/src/net/server/channel/handlers/PartyOperationHandler.java index 562cb04136..e73fe55966 100644 --- a/src/net/server/channel/handlers/PartyOperationHandler.java +++ b/src/net/server/channel/handlers/PartyOperationHandler.java @@ -31,11 +31,11 @@ import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; import client.MapleCharacter; import client.MapleClient; -import constants.ServerConstants; -import net.server.coordinator.MapleInviteCoordinator; -import net.server.coordinator.MapleInviteCoordinator.InviteResult; -import net.server.coordinator.MapleInviteCoordinator.InviteType; -import net.server.coordinator.MapleInviteCoordinator.MapleInviteResult; +import constants.net.ServerConstants; +import net.server.coordinator.world.MapleInviteCoordinator; +import net.server.coordinator.world.MapleInviteCoordinator.InviteResult; +import net.server.coordinator.world.MapleInviteCoordinator.InviteType; +import net.server.coordinator.world.MapleInviteCoordinator.MapleInviteResult; import java.util.List; diff --git a/src/net/server/channel/handlers/PetAutoPotHandler.java b/src/net/server/channel/handlers/PetAutoPotHandler.java index c27d06a802..f1ea8a7518 100644 --- a/src/net/server/channel/handlers/PetAutoPotHandler.java +++ b/src/net/server/channel/handlers/PetAutoPotHandler.java @@ -21,9 +21,12 @@ */ package net.server.channel.handlers; +import client.MapleCharacter; import client.MapleClient; -import client.processor.PetAutopotProcessor; +import client.processor.action.PetAutopotProcessor; import net.AbstractMaplePacketHandler; +import server.MapleItemInformationProvider; +import server.MapleStatEffect; import tools.data.input.SeekableLittleEndianAccessor; public final class PetAutoPotHandler extends AbstractMaplePacketHandler { @@ -36,6 +39,18 @@ public final class PetAutoPotHandler extends AbstractMaplePacketHandler { short slot = slea.readShort(); int itemId = slea.readInt(); + MapleCharacter chr = c.getPlayer(); + MapleStatEffect stat = MapleItemInformationProvider.getInstance().getItemEffect(itemId); + if (stat.getHp() > 0 || stat.getHpRate() > 0.0) { + float estimatedHp = ((float) chr.getHp()) / chr.getMaxHp(); + chr.setAutopotHpAlert(estimatedHp); + } + + if (stat.getMp() > 0 || stat.getMpRate() > 0.0) { + float estimatedMp = ((float) chr.getMp()) / chr.getMaxMp(); + chr.setAutopotMpAlert(estimatedMp); + } + PetAutopotProcessor.runAutopotAction(c, slot, itemId); } diff --git a/src/net/server/channel/handlers/PetChatHandler.java b/src/net/server/channel/handlers/PetChatHandler.java index abb21c849d..b18db64dbb 100644 --- a/src/net/server/channel/handlers/PetChatHandler.java +++ b/src/net/server/channel/handlers/PetChatHandler.java @@ -24,7 +24,6 @@ package net.server.channel.handlers; import client.MapleClient; import client.autoban.AutobanFactory; import config.YamlConfig; -import constants.ServerConstants; import net.AbstractMaplePacketHandler; import tools.FilePrinter; import tools.LogHelper; diff --git a/src/net/server/channel/handlers/PetLootHandler.java b/src/net/server/channel/handlers/PetLootHandler.java index c20ba61a2d..9cd57414a5 100644 --- a/src/net/server/channel/handlers/PetLootHandler.java +++ b/src/net/server/channel/handlers/PetLootHandler.java @@ -32,7 +32,7 @@ import server.maps.MapleMapItem; import server.maps.MapleMapObject; import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; -import constants.ServerConstants; +import constants.net.ServerConstants; /** * @author TheRamon diff --git a/src/net/server/channel/handlers/PlayerInteractionHandler.java b/src/net/server/channel/handlers/PlayerInteractionHandler.java index a3d98705b6..ac4010e3f5 100644 --- a/src/net/server/channel/handlers/PlayerInteractionHandler.java +++ b/src/net/server/channel/handlers/PlayerInteractionHandler.java @@ -30,14 +30,13 @@ import client.inventory.MapleInventoryType; import client.inventory.manipulator.MapleInventoryManipulator; import client.inventory.manipulator.MapleKarmaManipulator; import config.YamlConfig; -import constants.ItemConstants; -import constants.ServerConstants; +import constants.inventory.ItemConstants; import net.AbstractMaplePacketHandler; import server.MapleItemInformationProvider; import server.maps.MaplePortal; import server.MapleTrade; -import constants.GameConstants; +import constants.game.GameConstants; import server.maps.FieldLimit; import server.maps.MapleHiredMerchant; import server.maps.MapleMapObject; diff --git a/src/net/server/channel/handlers/PlayerLoggedinHandler.java b/src/net/server/channel/handlers/PlayerLoggedinHandler.java index a4ab1d0221..379ffeb5ab 100644 --- a/src/net/server/channel/handlers/PlayerLoggedinHandler.java +++ b/src/net/server/channel/handlers/PlayerLoggedinHandler.java @@ -61,16 +61,16 @@ import client.inventory.Item; import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; import client.inventory.MaplePet; -import constants.GameConstants; -import constants.ScriptableNPCConstants; -import constants.ServerConstants; +import constants.game.GameConstants; +import constants.game.ScriptableNPCConstants; +import constants.net.ServerConstants; import java.util.Collections; import java.util.Comparator; import java.util.HashSet; import java.util.Map; import java.util.Set; -import net.server.coordinator.MapleEventRecallCoordinator; -import net.server.coordinator.MapleSessionCoordinator; +import net.server.coordinator.world.MapleEventRecallCoordinator; +import net.server.coordinator.session.MapleSessionCoordinator; import org.apache.mina.core.session.IoSession; import server.life.MobSkill; import scripting.event.EventInstanceManager; diff --git a/src/net/server/channel/handlers/RangedAttackHandler.java b/src/net/server/channel/handlers/RangedAttackHandler.java index 5b371a2f1e..bf45884a52 100644 --- a/src/net/server/channel/handlers/RangedAttackHandler.java +++ b/src/net/server/channel/handlers/RangedAttackHandler.java @@ -37,8 +37,8 @@ import client.inventory.Item; import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; import client.inventory.MapleWeaponType; -import constants.ItemConstants; -import constants.ServerConstants; +import constants.inventory.ItemConstants; +import constants.net.ServerConstants; import constants.skills.Aran; import constants.skills.Buccaneer; import constants.skills.NightLord; diff --git a/src/net/server/channel/handlers/RemoteGachaponHandler.java b/src/net/server/channel/handlers/RemoteGachaponHandler.java index c7b9382857..e06eb3704f 100644 --- a/src/net/server/channel/handlers/RemoteGachaponHandler.java +++ b/src/net/server/channel/handlers/RemoteGachaponHandler.java @@ -23,7 +23,7 @@ package net.server.channel.handlers; import client.MapleClient; import client.autoban.AutobanFactory; -import constants.ItemConstants; +import constants.inventory.ItemConstants; import net.AbstractMaplePacketHandler; import scripting.npc.NPCScriptManager; import tools.data.input.SeekableLittleEndianAccessor; diff --git a/src/net/server/channel/handlers/RingActionHandler.java b/src/net/server/channel/handlers/RingActionHandler.java index 3f2290119c..41da5441c5 100644 --- a/src/net/server/channel/handlers/RingActionHandler.java +++ b/src/net/server/channel/handlers/RingActionHandler.java @@ -33,7 +33,7 @@ import client.inventory.Equip; import client.inventory.Item; import client.inventory.MapleInventoryType; import client.inventory.manipulator.MapleInventoryManipulator; -import client.processor.DueyProcessor; +import client.processor.npc.DueyProcessor; import net.AbstractMaplePacketHandler; import net.server.world.World; import net.server.channel.Channel; diff --git a/src/net/server/channel/handlers/ScriptedItemHandler.java b/src/net/server/channel/handlers/ScriptedItemHandler.java index 1c95735b17..73678c9025 100644 --- a/src/net/server/channel/handlers/ScriptedItemHandler.java +++ b/src/net/server/channel/handlers/ScriptedItemHandler.java @@ -23,7 +23,7 @@ package net.server.channel.handlers; import client.MapleClient; import client.inventory.Item; -import constants.ItemConstants; +import constants.inventory.ItemConstants; import net.AbstractMaplePacketHandler; import scripting.item.ItemScriptManager; import server.MapleItemInformationProvider; diff --git a/src/net/server/channel/handlers/ScrollHandler.java b/src/net/server/channel/handlers/ScrollHandler.java index 9655473d52..d485609288 100644 --- a/src/net/server/channel/handlers/ScrollHandler.java +++ b/src/net/server/channel/handlers/ScrollHandler.java @@ -31,7 +31,7 @@ import client.inventory.Item; import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; import client.inventory.ModifyInventory; -import constants.ItemConstants; +import constants.inventory.ItemConstants; import java.util.ArrayList; import java.util.List; import java.util.Map; diff --git a/src/net/server/channel/handlers/SkillMacroHandler.java b/src/net/server/channel/handlers/SkillMacroHandler.java index de88635f34..148d93a986 100644 --- a/src/net/server/channel/handlers/SkillMacroHandler.java +++ b/src/net/server/channel/handlers/SkillMacroHandler.java @@ -27,6 +27,8 @@ import tools.data.input.SeekableLittleEndianAccessor; import net.AbstractMaplePacketHandler; public final class SkillMacroHandler extends AbstractMaplePacketHandler { + + @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { int num = slea.readByte(); for (int i = 0; i < num; i++) { diff --git a/src/net/server/channel/handlers/SpawnPetHandler.java b/src/net/server/channel/handlers/SpawnPetHandler.java index 6ebcff6dc5..be1a203ad7 100644 --- a/src/net/server/channel/handlers/SpawnPetHandler.java +++ b/src/net/server/channel/handlers/SpawnPetHandler.java @@ -22,7 +22,7 @@ package net.server.channel.handlers; import client.MapleClient; -import client.processor.SpawnPetProcessor; +import client.processor.action.SpawnPetProcessor; import net.AbstractMaplePacketHandler; import tools.data.input.SeekableLittleEndianAccessor; diff --git a/src/net/server/channel/handlers/SpecialMoveHandler.java b/src/net/server/channel/handlers/SpecialMoveHandler.java index 16891585a2..c1c8b3abae 100644 --- a/src/net/server/channel/handlers/SpecialMoveHandler.java +++ b/src/net/server/channel/handlers/SpecialMoveHandler.java @@ -33,7 +33,7 @@ import client.MapleCharacter; import client.MapleClient; import client.Skill; import client.SkillFactory; -import constants.ServerConstants; +import constants.net.ServerConstants; import constants.skills.Brawler; import constants.skills.Corsair; import constants.skills.DarkKnight; diff --git a/src/net/server/channel/handlers/SpouseChatHandler.java b/src/net/server/channel/handlers/SpouseChatHandler.java index 9fe17fc769..46d4bff57f 100644 --- a/src/net/server/channel/handlers/SpouseChatHandler.java +++ b/src/net/server/channel/handlers/SpouseChatHandler.java @@ -24,7 +24,6 @@ package net.server.channel.handlers; import client.MapleCharacter; import client.MapleClient; import config.YamlConfig; -import constants.ServerConstants; import net.AbstractMaplePacketHandler; import tools.LogHelper; import tools.MaplePacketCreator; diff --git a/src/net/server/channel/handlers/StorageHandler.java b/src/net/server/channel/handlers/StorageHandler.java index 6f353a5b4b..7289db93ba 100644 --- a/src/net/server/channel/handlers/StorageHandler.java +++ b/src/net/server/channel/handlers/StorageHandler.java @@ -22,7 +22,7 @@ package net.server.channel.handlers; import client.MapleClient; -import client.processor.StorageProcessor; +import client.processor.npc.StorageProcessor; import net.AbstractMaplePacketHandler; import tools.data.input.SeekableLittleEndianAccessor; diff --git a/src/net/server/channel/handlers/TakeDamageHandler.java b/src/net/server/channel/handlers/TakeDamageHandler.java index dfe19296e9..054e6f780c 100644 --- a/src/net/server/channel/handlers/TakeDamageHandler.java +++ b/src/net/server/channel/handlers/TakeDamageHandler.java @@ -32,9 +32,8 @@ import client.inventory.MapleInventoryType; import client.status.MonsterStatus; import client.status.MonsterStatusEffect; import config.YamlConfig; -import constants.GameConstants; -import constants.ItemConstants; -import constants.ServerConstants; +import constants.game.GameConstants; +import constants.inventory.ItemConstants; import constants.skills.Aran; import java.awt.Point; diff --git a/src/net/server/channel/handlers/TransferNameHandler.java b/src/net/server/channel/handlers/TransferNameHandler.java index 0feae06b18..b574e450a7 100644 --- a/src/net/server/channel/handlers/TransferNameHandler.java +++ b/src/net/server/channel/handlers/TransferNameHandler.java @@ -30,7 +30,6 @@ import java.sql.Connection; import client.MapleCharacter; import client.MapleClient; import config.YamlConfig; -import constants.ServerConstants; import net.AbstractMaplePacketHandler; import tools.DatabaseConnection; import tools.MaplePacketCreator; diff --git a/src/net/server/channel/handlers/TransferWorldHandler.java b/src/net/server/channel/handlers/TransferWorldHandler.java index d6f46343fb..446752f544 100644 --- a/src/net/server/channel/handlers/TransferWorldHandler.java +++ b/src/net/server/channel/handlers/TransferWorldHandler.java @@ -29,7 +29,6 @@ import java.sql.Timestamp; import client.MapleCharacter; import client.MapleClient; import config.YamlConfig; -import constants.ServerConstants; import net.AbstractMaplePacketHandler; import net.server.Server; import tools.DatabaseConnection; diff --git a/src/net/server/channel/handlers/UseCashItemHandler.java b/src/net/server/channel/handlers/UseCashItemHandler.java index f88582c9a3..117c5342ae 100644 --- a/src/net/server/channel/handlers/UseCashItemHandler.java +++ b/src/net/server/channel/handlers/UseCashItemHandler.java @@ -25,6 +25,7 @@ import client.MapleCharacter; import client.MapleClient; import client.Skill; import client.SkillFactory; +import client.SkillMacro; import client.creator.veteran.*; import client.inventory.Equip; import client.inventory.Equip.ScrollResult; @@ -35,13 +36,12 @@ import client.inventory.MaplePet; import client.inventory.ModifyInventory; import client.inventory.manipulator.MapleInventoryManipulator; import client.inventory.manipulator.MapleKarmaManipulator; -import client.processor.AssignAPProcessor; -import client.processor.AssignSPProcessor; -import client.processor.DueyProcessor; +import client.processor.stat.AssignAPProcessor; +import client.processor.stat.AssignSPProcessor; +import client.processor.npc.DueyProcessor; import config.YamlConfig; -import constants.GameConstants; -import constants.ItemConstants; -import constants.ServerConstants; +import constants.game.GameConstants; +import constants.inventory.ItemConstants; import java.sql.SQLException; import java.util.ArrayList; @@ -170,6 +170,33 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler { if ((curLevel < skillSPTo.getMaxLevel()) && curLevelSPFrom > 0) { player.changeSkillLevel(skillSPFrom, (byte) (curLevelSPFrom - 1), player.getMasterLevel(skillSPFrom), -1); player.changeSkillLevel(skillSPTo, (byte) (curLevel + 1), player.getMasterLevel(skillSPTo), -1); + + // update macros, thanks to Arnah + if((curLevelSPFrom - 1) == 0){ + boolean updated = false; + for(SkillMacro macro : player.getMacros()){ + if(macro == null) continue; + + boolean update = false;// cleaner? + if(macro.getSkill1() == SPFrom){ + update = true; + macro.setSkill1(0); + } + if(macro.getSkill2() == SPFrom){ + update = true; + macro.setSkill2(0); + } + if(macro.getSkill3() == SPFrom){ + update = true; + macro.setSkill3(0); + } + if(update){ + updated = true; + player.updateMacros(macro.getPosition(), macro); + } + } + if(updated) player.sendMacros(); + } } } else { int APTo = slea.readInt(); diff --git a/src/net/server/channel/handlers/UseCatchItemHandler.java b/src/net/server/channel/handlers/UseCatchItemHandler.java index 97e55b0ff3..ef3ee4b444 100644 --- a/src/net/server/channel/handlers/UseCatchItemHandler.java +++ b/src/net/server/channel/handlers/UseCatchItemHandler.java @@ -25,7 +25,7 @@ import client.MapleCharacter; import client.MapleClient; import client.inventory.MapleInventoryType; import client.autoban.AutobanManager; -import constants.ItemConstants; +import constants.inventory.ItemConstants; import net.AbstractMaplePacketHandler; import net.server.Server; import client.inventory.manipulator.MapleInventoryManipulator; diff --git a/src/net/server/channel/handlers/UseChairHandler.java b/src/net/server/channel/handlers/UseChairHandler.java index 353b36f087..93de1bd830 100644 --- a/src/net/server/channel/handlers/UseChairHandler.java +++ b/src/net/server/channel/handlers/UseChairHandler.java @@ -23,7 +23,7 @@ package net.server.channel.handlers; import client.MapleClient; import client.inventory.MapleInventoryType; -import constants.ItemConstants; +import constants.inventory.ItemConstants; import net.AbstractMaplePacketHandler; import tools.data.input.SeekableLittleEndianAccessor; diff --git a/src/net/server/channel/handlers/UseItemHandler.java b/src/net/server/channel/handlers/UseItemHandler.java index 182aef2062..29878407f3 100644 --- a/src/net/server/channel/handlers/UseItemHandler.java +++ b/src/net/server/channel/handlers/UseItemHandler.java @@ -27,8 +27,7 @@ import client.MapleDisease; import client.inventory.Item; import client.inventory.MapleInventoryType; import config.YamlConfig; -import constants.ItemConstants; -import constants.ServerConstants; +import constants.inventory.ItemConstants; import net.AbstractMaplePacketHandler; import client.inventory.manipulator.MapleInventoryManipulator; import server.MapleItemInformationProvider; diff --git a/src/net/server/channel/handlers/UseMountFoodHandler.java b/src/net/server/channel/handlers/UseMountFoodHandler.java index a626d5ec1c..dde7452092 100644 --- a/src/net/server/channel/handlers/UseMountFoodHandler.java +++ b/src/net/server/channel/handlers/UseMountFoodHandler.java @@ -27,7 +27,7 @@ import client.MapleMount; import client.inventory.Item; import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; -import constants.ExpTable; +import constants.game.ExpTable; import net.AbstractMaplePacketHandler; import client.inventory.manipulator.MapleInventoryManipulator; import tools.MaplePacketCreator; diff --git a/src/net/server/channel/handlers/UseOwlOfMinervaHandler.java b/src/net/server/channel/handlers/UseOwlOfMinervaHandler.java index ac5df67148..5c81060879 100644 --- a/src/net/server/channel/handlers/UseOwlOfMinervaHandler.java +++ b/src/net/server/channel/handlers/UseOwlOfMinervaHandler.java @@ -30,7 +30,7 @@ import java.util.LinkedList; import java.util.List; import java.util.PriorityQueue; -import constants.GameConstants; +import constants.game.GameConstants; /** * @author Ronan diff --git a/src/net/server/channel/handlers/WeddingHandler.java b/src/net/server/channel/handlers/WeddingHandler.java index 19ef488948..6fca323515 100644 --- a/src/net/server/channel/handlers/WeddingHandler.java +++ b/src/net/server/channel/handlers/WeddingHandler.java @@ -15,8 +15,7 @@ import client.inventory.MapleInventoryType; import client.inventory.manipulator.MapleInventoryManipulator; import client.inventory.manipulator.MapleKarmaManipulator; import config.YamlConfig; -import constants.ItemConstants; -import constants.ServerConstants; +import constants.inventory.ItemConstants; import net.AbstractMaplePacketHandler; import server.MapleMarriage; import tools.MaplePacketCreator; diff --git a/src/net/server/channel/handlers/WhisperHandler.java b/src/net/server/channel/handlers/WhisperHandler.java index 2c7dded0cf..816bf60d5f 100644 --- a/src/net/server/channel/handlers/WhisperHandler.java +++ b/src/net/server/channel/handlers/WhisperHandler.java @@ -26,7 +26,6 @@ import java.sql.ResultSet; import java.sql.SQLException; import config.YamlConfig; -import constants.ServerConstants; import net.AbstractMaplePacketHandler; import net.server.world.World; import tools.DatabaseConnection; diff --git a/src/net/server/channel/worker/BaseScheduler.java b/src/net/server/channel/task/BaseScheduler.java similarity index 99% rename from src/net/server/channel/worker/BaseScheduler.java rename to src/net/server/channel/task/BaseScheduler.java index 248e66cac5..57579386c4 100644 --- a/src/net/server/channel/worker/BaseScheduler.java +++ b/src/net/server/channel/task/BaseScheduler.java @@ -17,10 +17,9 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.channel.worker; +package net.server.channel.task; import config.YamlConfig; -import constants.ServerConstants; import java.util.Collections; import java.util.HashMap; import java.util.LinkedList; diff --git a/src/net/server/channel/worker/EventScheduler.java b/src/net/server/channel/task/EventScheduler.java similarity index 97% rename from src/net/server/channel/worker/EventScheduler.java rename to src/net/server/channel/task/EventScheduler.java index 7cb0545004..6cb5b2539f 100644 --- a/src/net/server/channel/worker/EventScheduler.java +++ b/src/net/server/channel/task/EventScheduler.java @@ -17,7 +17,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.channel.worker; +package net.server.channel.task; import net.server.audit.locks.MonitoredLockType; diff --git a/src/net/server/channel/worker/FaceExpressionScheduler.java b/src/net/server/channel/task/FaceExpressionScheduler.java similarity index 97% rename from src/net/server/channel/worker/FaceExpressionScheduler.java rename to src/net/server/channel/task/FaceExpressionScheduler.java index 6dd247020d..b4ecc857a4 100644 --- a/src/net/server/channel/worker/FaceExpressionScheduler.java +++ b/src/net/server/channel/task/FaceExpressionScheduler.java @@ -17,7 +17,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.channel.worker; +package net.server.channel.task; import java.util.Collections; import net.server.audit.locks.MonitoredLockType; diff --git a/src/net/server/channel/worker/MobAnimationScheduler.java b/src/net/server/channel/task/MobAnimationScheduler.java similarity index 98% rename from src/net/server/channel/worker/MobAnimationScheduler.java rename to src/net/server/channel/task/MobAnimationScheduler.java index ca22e9986a..b83e634c2c 100644 --- a/src/net/server/channel/worker/MobAnimationScheduler.java +++ b/src/net/server/channel/task/MobAnimationScheduler.java @@ -17,7 +17,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.channel.worker; +package net.server.channel.task; import net.server.audit.locks.MonitoredLockType; diff --git a/src/net/server/channel/worker/MobClearSkillScheduler.java b/src/net/server/channel/task/MobClearSkillScheduler.java similarity index 97% rename from src/net/server/channel/worker/MobClearSkillScheduler.java rename to src/net/server/channel/task/MobClearSkillScheduler.java index 0f95e4ccc9..7c1880269d 100644 --- a/src/net/server/channel/worker/MobClearSkillScheduler.java +++ b/src/net/server/channel/task/MobClearSkillScheduler.java @@ -17,7 +17,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.channel.worker; +package net.server.channel.task; import net.server.audit.locks.MonitoredLockType; diff --git a/src/net/server/channel/worker/MobMistScheduler.java b/src/net/server/channel/task/MobMistScheduler.java similarity index 97% rename from src/net/server/channel/worker/MobMistScheduler.java rename to src/net/server/channel/task/MobMistScheduler.java index eb0822e3b4..f7494b879e 100644 --- a/src/net/server/channel/worker/MobMistScheduler.java +++ b/src/net/server/channel/task/MobMistScheduler.java @@ -17,7 +17,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.channel.worker; +package net.server.channel.task; import net.server.audit.locks.MonitoredLockType; diff --git a/src/net/server/channel/worker/MobStatusScheduler.java b/src/net/server/channel/task/MobStatusScheduler.java similarity index 98% rename from src/net/server/channel/worker/MobStatusScheduler.java rename to src/net/server/channel/task/MobStatusScheduler.java index 434a49a4c4..8de9577e7a 100644 --- a/src/net/server/channel/worker/MobStatusScheduler.java +++ b/src/net/server/channel/task/MobStatusScheduler.java @@ -17,11 +17,10 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.channel.worker; +package net.server.channel.task; import client.status.MonsterStatusEffect; import config.YamlConfig; -import constants.ServerConstants; import java.util.HashMap; import java.util.ArrayList; import java.util.List; diff --git a/src/net/server/channel/worker/OverallScheduler.java b/src/net/server/channel/task/OverallScheduler.java similarity index 97% rename from src/net/server/channel/worker/OverallScheduler.java rename to src/net/server/channel/task/OverallScheduler.java index 4b34c589da..ffcf9d0e9e 100644 --- a/src/net/server/channel/worker/OverallScheduler.java +++ b/src/net/server/channel/task/OverallScheduler.java @@ -17,7 +17,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.channel.worker; +package net.server.channel.task; import net.server.audit.locks.MonitoredLockType; diff --git a/src/net/server/channel/worker/SchedulerListener.java b/src/net/server/channel/task/SchedulerListener.java similarity index 96% rename from src/net/server/channel/worker/SchedulerListener.java rename to src/net/server/channel/task/SchedulerListener.java index 8e910df12c..fa3e82688b 100644 --- a/src/net/server/channel/worker/SchedulerListener.java +++ b/src/net/server/channel/task/SchedulerListener.java @@ -17,7 +17,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.channel.worker; +package net.server.channel.task; import java.util.List; diff --git a/src/net/server/coordinator/LoginStorage.java b/src/net/server/coordinator/login/LoginStorage.java similarity index 98% rename from src/net/server/coordinator/LoginStorage.java rename to src/net/server/coordinator/login/LoginStorage.java index 377bd113ee..f3d0ccd2ff 100644 --- a/src/net/server/coordinator/LoginStorage.java +++ b/src/net/server/coordinator/login/LoginStorage.java @@ -17,10 +17,9 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.coordinator; +package net.server.coordinator.login; import config.YamlConfig; -import constants.ServerConstants; import java.util.Collections; import java.util.LinkedList; import java.util.List; diff --git a/src/net/server/coordinator/MapleLoginBypassCoordinator.java b/src/net/server/coordinator/login/MapleLoginBypassCoordinator.java similarity index 98% rename from src/net/server/coordinator/MapleLoginBypassCoordinator.java rename to src/net/server/coordinator/login/MapleLoginBypassCoordinator.java index cb90d84588..c52cd34732 100644 --- a/src/net/server/coordinator/MapleLoginBypassCoordinator.java +++ b/src/net/server/coordinator/login/MapleLoginBypassCoordinator.java @@ -17,10 +17,9 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.coordinator; +package net.server.coordinator.login; import config.YamlConfig; -import constants.ServerConstants; import java.util.HashSet; import java.util.LinkedList; import java.util.List; diff --git a/src/net/server/coordinator/MapleMatchCheckerCoordinator.java b/src/net/server/coordinator/matchchecker/MapleMatchCheckerCoordinator.java similarity index 99% rename from src/net/server/coordinator/MapleMatchCheckerCoordinator.java rename to src/net/server/coordinator/matchchecker/MapleMatchCheckerCoordinator.java index 79cef27403..5bfe6cf0c8 100644 --- a/src/net/server/coordinator/MapleMatchCheckerCoordinator.java +++ b/src/net/server/coordinator/matchchecker/MapleMatchCheckerCoordinator.java @@ -17,7 +17,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.coordinator; +package net.server.coordinator.matchchecker; import client.MapleCharacter; import net.server.PlayerStorage; diff --git a/src/net/server/coordinator/matchchecker/listener/MatchCheckerCPQChallenge.java b/src/net/server/coordinator/matchchecker/listener/MatchCheckerCPQChallenge.java index 8941dcc587..613c6cf18f 100644 --- a/src/net/server/coordinator/matchchecker/listener/MatchCheckerCPQChallenge.java +++ b/src/net/server/coordinator/matchchecker/listener/MatchCheckerCPQChallenge.java @@ -20,7 +20,7 @@ package net.server.coordinator.matchchecker.listener; import client.MapleCharacter; -import constants.LanguageConstants; +import constants.string.LanguageConstants; import java.util.LinkedList; import java.util.List; import java.util.Set; diff --git a/src/net/server/coordinator/matchchecker/listener/MatchCheckerGuildCreation.java b/src/net/server/coordinator/matchchecker/listener/MatchCheckerGuildCreation.java index e5a481f296..6f4899d1d5 100644 --- a/src/net/server/coordinator/matchchecker/listener/MatchCheckerGuildCreation.java +++ b/src/net/server/coordinator/matchchecker/listener/MatchCheckerGuildCreation.java @@ -21,8 +21,7 @@ package net.server.coordinator.matchchecker.listener; import client.MapleCharacter; import config.YamlConfig; -import constants.GameConstants; -import constants.ServerConstants; +import constants.game.GameConstants; import net.server.coordinator.matchchecker.AbstractMatchCheckerListener; import net.server.coordinator.matchchecker.MatchCheckerListenerRecipe; import net.server.guild.MapleGuild; diff --git a/src/net/server/coordinator/MaplePartySearchCoordinator.java b/src/net/server/coordinator/partysearch/MaplePartySearchCoordinator.java similarity index 98% rename from src/net/server/coordinator/MaplePartySearchCoordinator.java rename to src/net/server/coordinator/partysearch/MaplePartySearchCoordinator.java index 866f76ac65..eec3116494 100644 --- a/src/net/server/coordinator/MaplePartySearchCoordinator.java +++ b/src/net/server/coordinator/partysearch/MaplePartySearchCoordinator.java @@ -17,15 +17,14 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.coordinator; +package net.server.coordinator.partysearch; import client.MapleCharacter; import client.MapleJob; import config.YamlConfig; -import constants.ServerConstants; import java.io.File; import net.server.world.MapleParty; -import net.server.coordinator.MapleInviteCoordinator.InviteType; +import net.server.coordinator.world.MapleInviteCoordinator.InviteType; import net.server.coordinator.partysearch.PartySearchEchelon; import net.server.coordinator.partysearch.PartySearchStorage; import tools.MaplePacketCreator; @@ -44,6 +43,7 @@ import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock; import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.MonitoredReentrantReadWriteLock; +import net.server.coordinator.world.MapleInviteCoordinator; import provider.MapleData; import provider.MapleDataProviderFactory; import provider.MapleDataTool; diff --git a/src/net/server/coordinator/partysearch/PartySearchCharacter.java b/src/net/server/coordinator/partysearch/PartySearchCharacter.java index e7cdf50d07..b70ed0cc3a 100644 --- a/src/net/server/coordinator/partysearch/PartySearchCharacter.java +++ b/src/net/server/coordinator/partysearch/PartySearchCharacter.java @@ -20,7 +20,6 @@ package net.server.coordinator.partysearch; import client.MapleCharacter; -import net.server.coordinator.MaplePartySearchCoordinator; import java.lang.ref.WeakReference; diff --git a/src/net/server/coordinator/MapleSessionCoordinator.java b/src/net/server/coordinator/session/MapleSessionCoordinator.java similarity index 99% rename from src/net/server/coordinator/MapleSessionCoordinator.java rename to src/net/server/coordinator/session/MapleSessionCoordinator.java index f9e30e1f02..a071247052 100644 --- a/src/net/server/coordinator/MapleSessionCoordinator.java +++ b/src/net/server/coordinator/session/MapleSessionCoordinator.java @@ -17,12 +17,12 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.coordinator; +package net.server.coordinator.session; +import net.server.coordinator.login.LoginStorage; import client.MapleCharacter; import client.MapleClient; import config.YamlConfig; -import constants.ServerConstants; import net.server.Server; import net.server.audit.locks.MonitoredLockType; diff --git a/src/net/server/coordinator/MapleEventRecallCoordinator.java b/src/net/server/coordinator/world/MapleEventRecallCoordinator.java similarity index 97% rename from src/net/server/coordinator/MapleEventRecallCoordinator.java rename to src/net/server/coordinator/world/MapleEventRecallCoordinator.java index 6acb64be38..21b294a172 100644 --- a/src/net/server/coordinator/MapleEventRecallCoordinator.java +++ b/src/net/server/coordinator/world/MapleEventRecallCoordinator.java @@ -17,10 +17,9 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.coordinator; +package net.server.coordinator.world; import config.YamlConfig; -import constants.ServerConstants; import scripting.event.EventInstanceManager; import java.util.LinkedList; import java.util.List; diff --git a/src/net/server/coordinator/MapleInviteCoordinator.java b/src/net/server/coordinator/world/MapleInviteCoordinator.java similarity index 99% rename from src/net/server/coordinator/MapleInviteCoordinator.java rename to src/net/server/coordinator/world/MapleInviteCoordinator.java index e2436795f3..ed0c1596df 100644 --- a/src/net/server/coordinator/MapleInviteCoordinator.java +++ b/src/net/server/coordinator/world/MapleInviteCoordinator.java @@ -17,7 +17,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.coordinator; +package net.server.coordinator.world; import client.MapleCharacter; import tools.Pair; diff --git a/src/net/server/coordinator/MapleMonsterAggroCoordinator.java b/src/net/server/coordinator/world/MapleMonsterAggroCoordinator.java similarity index 99% rename from src/net/server/coordinator/MapleMonsterAggroCoordinator.java rename to src/net/server/coordinator/world/MapleMonsterAggroCoordinator.java index 06a163d0d9..e95739cf00 100644 --- a/src/net/server/coordinator/MapleMonsterAggroCoordinator.java +++ b/src/net/server/coordinator/world/MapleMonsterAggroCoordinator.java @@ -17,7 +17,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.coordinator; +package net.server.coordinator.world; import java.util.ArrayList; import java.util.Collections; @@ -31,7 +31,6 @@ import java.util.List; import java.util.Set; import config.YamlConfig; -import constants.ServerConstants; import client.MapleCharacter; import java.util.concurrent.ScheduledFuture; import net.server.Server; diff --git a/src/net/server/guild/MapleAlliance.java b/src/net/server/guild/MapleAlliance.java index 2a696b4b38..56a44597a4 100644 --- a/src/net/server/guild/MapleAlliance.java +++ b/src/net/server/guild/MapleAlliance.java @@ -31,9 +31,9 @@ import java.util.List; import client.MapleCharacter; import client.MapleClient; import net.server.Server; -import net.server.coordinator.MapleInviteCoordinator; -import net.server.coordinator.MapleInviteCoordinator.InviteType; -import net.server.coordinator.MapleInviteCoordinator.MapleInviteResult; +import net.server.coordinator.world.MapleInviteCoordinator; +import net.server.coordinator.world.MapleInviteCoordinator.InviteType; +import net.server.coordinator.world.MapleInviteCoordinator.MapleInviteResult; import net.server.world.MapleParty; import net.server.world.MaplePartyCharacter; import tools.DatabaseConnection; diff --git a/src/net/server/guild/MapleGuild.java b/src/net/server/guild/MapleGuild.java index c4776c2f1c..a682cda6d7 100644 --- a/src/net/server/guild/MapleGuild.java +++ b/src/net/server/guild/MapleGuild.java @@ -24,7 +24,6 @@ package net.server.guild; import client.MapleCharacter; import client.MapleClient; import config.YamlConfig; -import constants.ServerConstants; import java.sql.Connection; import java.sql.PreparedStatement; @@ -48,10 +47,10 @@ import net.server.channel.Channel; import tools.DatabaseConnection; import tools.MaplePacketCreator; import net.server.audit.locks.MonitoredLockType; -import net.server.coordinator.MapleInviteCoordinator; -import net.server.coordinator.MapleInviteCoordinator.InviteType; -import net.server.coordinator.MapleInviteCoordinator.MapleInviteResult; -import net.server.coordinator.MapleMatchCheckerCoordinator; +import net.server.coordinator.world.MapleInviteCoordinator; +import net.server.coordinator.world.MapleInviteCoordinator.InviteType; +import net.server.coordinator.world.MapleInviteCoordinator.MapleInviteResult; +import net.server.coordinator.matchchecker.MapleMatchCheckerCoordinator; public class MapleGuild { diff --git a/src/net/server/handlers/login/AfterLoginHandler.java b/src/net/server/handlers/login/AfterLoginHandler.java index 5b2536e16c..f3acb93bf0 100644 --- a/src/net/server/handlers/login/AfterLoginHandler.java +++ b/src/net/server/handlers/login/AfterLoginHandler.java @@ -23,7 +23,7 @@ package net.server.handlers.login; import client.MapleClient; import net.AbstractMaplePacketHandler; -import net.server.coordinator.MapleSessionCoordinator; +import net.server.coordinator.session.MapleSessionCoordinator; import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; diff --git a/src/net/server/handlers/login/CharSelectedHandler.java b/src/net/server/handlers/login/CharSelectedHandler.java index b5e7ba5d48..00d2cbc22c 100644 --- a/src/net/server/handlers/login/CharSelectedHandler.java +++ b/src/net/server/handlers/login/CharSelectedHandler.java @@ -26,8 +26,8 @@ import java.net.InetAddress; import java.net.UnknownHostException; import net.AbstractMaplePacketHandler; import net.server.Server; -import net.server.coordinator.MapleSessionCoordinator; -import net.server.coordinator.MapleSessionCoordinator.AntiMulticlientResult; +import net.server.coordinator.session.MapleSessionCoordinator; +import net.server.coordinator.session.MapleSessionCoordinator.AntiMulticlientResult; import net.server.world.World; import org.apache.mina.core.session.IoSession; import tools.MaplePacketCreator; diff --git a/src/net/server/handlers/login/CharSelectedWithPicHandler.java b/src/net/server/handlers/login/CharSelectedWithPicHandler.java index 31ac500d9f..5ee43ec4b5 100644 --- a/src/net/server/handlers/login/CharSelectedWithPicHandler.java +++ b/src/net/server/handlers/login/CharSelectedWithPicHandler.java @@ -5,8 +5,8 @@ import java.net.UnknownHostException; import net.AbstractMaplePacketHandler; import net.server.Server; -import net.server.coordinator.MapleSessionCoordinator; -import net.server.coordinator.MapleSessionCoordinator.AntiMulticlientResult; +import net.server.coordinator.session.MapleSessionCoordinator; +import net.server.coordinator.session.MapleSessionCoordinator.AntiMulticlientResult; import net.server.world.World; import org.apache.mina.core.session.IoSession; import tools.MaplePacketCreator; diff --git a/src/net/server/handlers/login/LoginPasswordHandler.java b/src/net/server/handlers/login/LoginPasswordHandler.java index 04756fe491..aff6fdce2d 100644 --- a/src/net/server/handlers/login/LoginPasswordHandler.java +++ b/src/net/server/handlers/login/LoginPasswordHandler.java @@ -27,7 +27,6 @@ import java.sql.SQLException; import java.util.Calendar; import config.YamlConfig; -import constants.ServerConstants; import net.MaplePacketHandler; import net.server.Server; import tools.BCrypt; @@ -41,7 +40,7 @@ import java.sql.Statement; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; -import net.server.coordinator.MapleSessionCoordinator; +import net.server.coordinator.session.MapleSessionCoordinator; import org.apache.mina.core.session.IoSession; public final class LoginPasswordHandler implements MaplePacketHandler { diff --git a/src/net/server/handlers/login/RegisterPicHandler.java b/src/net/server/handlers/login/RegisterPicHandler.java index ed76cee00d..759eacf26a 100644 --- a/src/net/server/handlers/login/RegisterPicHandler.java +++ b/src/net/server/handlers/login/RegisterPicHandler.java @@ -9,8 +9,8 @@ import net.server.world.World; import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; import client.MapleClient; -import net.server.coordinator.MapleSessionCoordinator; -import net.server.coordinator.MapleSessionCoordinator.AntiMulticlientResult; +import net.server.coordinator.session.MapleSessionCoordinator; +import net.server.coordinator.session.MapleSessionCoordinator.AntiMulticlientResult; import org.apache.mina.core.session.IoSession; public final class RegisterPicHandler extends AbstractMaplePacketHandler { diff --git a/src/net/server/handlers/login/RegisterPinHandler.java b/src/net/server/handlers/login/RegisterPinHandler.java index 4d325996bc..65a3e667a9 100644 --- a/src/net/server/handlers/login/RegisterPinHandler.java +++ b/src/net/server/handlers/login/RegisterPinHandler.java @@ -23,7 +23,7 @@ package net.server.handlers.login; import client.MapleClient; import net.AbstractMaplePacketHandler; -import net.server.coordinator.MapleSessionCoordinator; +import net.server.coordinator.session.MapleSessionCoordinator; import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; diff --git a/src/net/server/handlers/login/ServerlistRequestHandler.java b/src/net/server/handlers/login/ServerlistRequestHandler.java index ba29947a4c..9391bafac4 100644 --- a/src/net/server/handlers/login/ServerlistRequestHandler.java +++ b/src/net/server/handlers/login/ServerlistRequestHandler.java @@ -22,7 +22,7 @@ package net.server.handlers.login; import client.MapleClient; -import constants.GameConstants; +import constants.game.GameConstants; import java.util.List; import net.AbstractMaplePacketHandler; import net.server.Server; diff --git a/src/net/server/handlers/login/SetGenderHandler.java b/src/net/server/handlers/login/SetGenderHandler.java index adaed709ac..3cf57342f8 100644 --- a/src/net/server/handlers/login/SetGenderHandler.java +++ b/src/net/server/handlers/login/SetGenderHandler.java @@ -25,7 +25,7 @@ package net.server.handlers.login; import client.MapleClient; import net.AbstractMaplePacketHandler; import net.server.Server; -import net.server.coordinator.MapleSessionCoordinator; +import net.server.coordinator.session.MapleSessionCoordinator; import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; diff --git a/src/net/server/handlers/login/ViewAllCharHandler.java b/src/net/server/handlers/login/ViewAllCharHandler.java index fb695f4474..edf3a5f7dc 100644 --- a/src/net/server/handlers/login/ViewAllCharHandler.java +++ b/src/net/server/handlers/login/ViewAllCharHandler.java @@ -24,7 +24,6 @@ package net.server.handlers.login; import client.MapleCharacter; import client.MapleClient; import config.YamlConfig; -import constants.ServerConstants; import java.util.List; import net.AbstractMaplePacketHandler; import net.server.Server; diff --git a/src/net/server/handlers/login/ViewAllCharRegisterPicHandler.java b/src/net/server/handlers/login/ViewAllCharRegisterPicHandler.java index b308b8ad3c..008913d9ad 100644 --- a/src/net/server/handlers/login/ViewAllCharRegisterPicHandler.java +++ b/src/net/server/handlers/login/ViewAllCharRegisterPicHandler.java @@ -5,8 +5,8 @@ import java.net.InetAddress; import java.net.UnknownHostException; import net.AbstractMaplePacketHandler; import net.server.Server; -import net.server.coordinator.MapleSessionCoordinator; -import net.server.coordinator.MapleSessionCoordinator.AntiMulticlientResult; +import net.server.coordinator.session.MapleSessionCoordinator; +import net.server.coordinator.session.MapleSessionCoordinator.AntiMulticlientResult; import net.server.world.World; import org.apache.mina.core.session.IoSession; import tools.MaplePacketCreator; diff --git a/src/net/server/handlers/login/ViewAllCharSelectedHandler.java b/src/net/server/handlers/login/ViewAllCharSelectedHandler.java index 66dae5c4ad..3a829a314d 100644 --- a/src/net/server/handlers/login/ViewAllCharSelectedHandler.java +++ b/src/net/server/handlers/login/ViewAllCharSelectedHandler.java @@ -26,8 +26,8 @@ import java.net.InetAddress; import java.net.UnknownHostException; import net.AbstractMaplePacketHandler; import net.server.Server; -import net.server.coordinator.MapleSessionCoordinator; -import net.server.coordinator.MapleSessionCoordinator.AntiMulticlientResult; +import net.server.coordinator.session.MapleSessionCoordinator; +import net.server.coordinator.session.MapleSessionCoordinator.AntiMulticlientResult; import net.server.world.World; import org.apache.mina.core.session.IoSession; import tools.MaplePacketCreator; diff --git a/src/net/server/handlers/login/ViewAllCharSelectedWithPicHandler.java b/src/net/server/handlers/login/ViewAllCharSelectedWithPicHandler.java index 21cb544776..b736856482 100644 --- a/src/net/server/handlers/login/ViewAllCharSelectedWithPicHandler.java +++ b/src/net/server/handlers/login/ViewAllCharSelectedWithPicHandler.java @@ -10,8 +10,8 @@ import tools.MaplePacketCreator; import tools.Randomizer; import tools.data.input.SeekableLittleEndianAccessor; import client.MapleClient; -import net.server.coordinator.MapleSessionCoordinator; -import net.server.coordinator.MapleSessionCoordinator.AntiMulticlientResult; +import net.server.coordinator.session.MapleSessionCoordinator; +import net.server.coordinator.session.MapleSessionCoordinator.AntiMulticlientResult; import org.apache.mina.core.session.IoSession; public class ViewAllCharSelectedWithPicHandler extends AbstractMaplePacketHandler { diff --git a/src/net/server/worker/BaseWorker.java b/src/net/server/task/BaseTask.java similarity index 89% rename from src/net/server/worker/BaseWorker.java rename to src/net/server/task/BaseTask.java index 1b40005331..f9b2775864 100644 --- a/src/net/server/worker/BaseWorker.java +++ b/src/net/server/task/BaseTask.java @@ -17,20 +17,20 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.worker; +package net.server.task; import net.server.world.World; /** * @author Ronan */ -public abstract class BaseWorker implements Runnable { +public abstract class BaseTask implements Runnable { protected World wserv; @Override public void run() {} - public BaseWorker(World world) { + public BaseTask(World world) { wserv = world; } } diff --git a/src/net/server/worker/BossLogWorker.java b/src/net/server/task/BossLogTask.java similarity index 93% rename from src/net/server/worker/BossLogWorker.java rename to src/net/server/task/BossLogTask.java index 0711e9d3b4..1a9b1b055e 100644 --- a/src/net/server/worker/BossLogWorker.java +++ b/src/net/server/task/BossLogTask.java @@ -17,14 +17,14 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.worker; +package net.server.task; import server.expeditions.MapleExpeditionBossLog; /** * @author Ronan */ -public class BossLogWorker implements Runnable { +public class BossLogTask implements Runnable { @Override public void run() { diff --git a/src/net/server/worker/CharacterAutosaverWorker.java b/src/net/server/task/CharacterAutosaverTask.java similarity index 85% rename from src/net/server/worker/CharacterAutosaverWorker.java rename to src/net/server/task/CharacterAutosaverTask.java index 32e5617ef5..8f9611a15a 100644 --- a/src/net/server/worker/CharacterAutosaverWorker.java +++ b/src/net/server/task/CharacterAutosaverTask.java @@ -17,18 +17,17 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.worker; +package net.server.task; import config.YamlConfig; import net.server.world.World; import client.MapleCharacter; -import constants.ServerConstants; import net.server.PlayerStorage; /** * @author Ronan */ -public class CharacterAutosaverWorker extends BaseWorker implements Runnable { +public class CharacterAutosaverTask extends BaseTask implements Runnable { // thanks Alex (Alex09) for noticing these runnable classes are tasks, "workers" runs them @Override public void run() { @@ -42,7 +41,7 @@ public class CharacterAutosaverWorker extends BaseWorker implements Runnable { } } - public CharacterAutosaverWorker(World world) { + public CharacterAutosaverTask(World world) { super(world); } } diff --git a/src/net/server/worker/CharacterDiseaseWorker.java b/src/net/server/task/CharacterDiseaseTask.java similarity index 93% rename from src/net/server/worker/CharacterDiseaseWorker.java rename to src/net/server/task/CharacterDiseaseTask.java index c9c5c2f7de..7e9c65692c 100644 --- a/src/net/server/worker/CharacterDiseaseWorker.java +++ b/src/net/server/task/CharacterDiseaseTask.java @@ -17,7 +17,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.worker; +package net.server.task; import net.server.Server; @@ -25,7 +25,7 @@ import net.server.Server; * @author Ronan * @info Thread responsible for announcing other players diseases when one enters into a map */ -public class CharacterDiseaseWorker implements Runnable { +public class CharacterDiseaseTask implements Runnable { @Override public void run() { Server serv = Server.getInstance(); diff --git a/src/net/server/worker/CouponWorker.java b/src/net/server/task/CouponTask.java similarity index 94% rename from src/net/server/worker/CouponWorker.java rename to src/net/server/task/CouponTask.java index 484c4b225f..ef97a4019f 100644 --- a/src/net/server/worker/CouponWorker.java +++ b/src/net/server/task/CouponTask.java @@ -17,7 +17,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.worker; +package net.server.task; import java.sql.SQLException; import net.server.Server; @@ -27,7 +27,7 @@ import tools.FilePrinter; * @author Ronan * @info Thread responsible for maintaining coupons EXP & DROP effects active */ -public class CouponWorker implements Runnable { +public class CouponTask implements Runnable { @Override public void run() { try { diff --git a/src/net/server/worker/DueyFredrickWorker.java b/src/net/server/task/DueyFredrickTask.java similarity index 86% rename from src/net/server/worker/DueyFredrickWorker.java rename to src/net/server/task/DueyFredrickTask.java index 5287140931..17a356134a 100644 --- a/src/net/server/worker/DueyFredrickWorker.java +++ b/src/net/server/task/DueyFredrickTask.java @@ -17,15 +17,15 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.worker; +package net.server.task; -import client.processor.DueyProcessor; -import client.processor.FredrickProcessor; +import client.processor.npc.DueyProcessor; +import client.processor.npc.FredrickProcessor; /** * @author Ronan */ -public class DueyFredrickWorker implements Runnable { +public class DueyFredrickTask implements Runnable { @Override public void run() { diff --git a/src/net/server/worker/EventRecallCoordinatorWorker.java b/src/net/server/task/EventRecallCoordinatorTask.java similarity index 87% rename from src/net/server/worker/EventRecallCoordinatorWorker.java rename to src/net/server/task/EventRecallCoordinatorTask.java index 35a6517fc2..370d930122 100644 --- a/src/net/server/worker/EventRecallCoordinatorWorker.java +++ b/src/net/server/task/EventRecallCoordinatorTask.java @@ -17,15 +17,15 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.worker; +package net.server.task; -import net.server.coordinator.MapleEventRecallCoordinator; +import net.server.coordinator.world.MapleEventRecallCoordinator; /** * * @author Ronan */ -public class EventRecallCoordinatorWorker implements Runnable { +public class EventRecallCoordinatorTask implements Runnable { @Override public void run() { diff --git a/src/net/server/worker/FamilyDailyResetWorker.java b/src/net/server/task/FamilyDailyResetTask.java similarity index 94% rename from src/net/server/worker/FamilyDailyResetWorker.java rename to src/net/server/task/FamilyDailyResetTask.java index 92dc8e2672..6e18c6212b 100644 --- a/src/net/server/worker/FamilyDailyResetWorker.java +++ b/src/net/server/task/FamilyDailyResetTask.java @@ -1,4 +1,4 @@ -package net.server.worker; +package net.server.task; import java.sql.Connection; import java.sql.PreparedStatement; @@ -10,11 +10,11 @@ import net.server.world.World; import tools.DatabaseConnection; import tools.FilePrinter; -public class FamilyDailyResetWorker implements Runnable { +public class FamilyDailyResetTask implements Runnable { private final World world; - public FamilyDailyResetWorker(World world) { + public FamilyDailyResetTask(World world) { this.world = world; } diff --git a/src/net/server/worker/FishingWorker.java b/src/net/server/task/FishingTask.java similarity index 88% rename from src/net/server/worker/FishingWorker.java rename to src/net/server/task/FishingTask.java index 56eeb5fe46..ba154ecc60 100644 --- a/src/net/server/worker/FishingWorker.java +++ b/src/net/server/task/FishingTask.java @@ -17,21 +17,21 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.worker; +package net.server.task; import net.server.world.World; /** * @author Ronan */ -public class FishingWorker extends BaseWorker implements Runnable { +public class FishingTask extends BaseTask implements Runnable { @Override public void run() { wserv.runCheckFishingSchedule(); } - public FishingWorker(World world) { + public FishingTask(World world) { super(world); } } diff --git a/src/net/server/worker/HiredMerchantWorker.java b/src/net/server/task/HiredMerchantTask.java similarity index 87% rename from src/net/server/worker/HiredMerchantWorker.java rename to src/net/server/task/HiredMerchantTask.java index 67a066ac56..cf0ca17386 100644 --- a/src/net/server/worker/HiredMerchantWorker.java +++ b/src/net/server/task/HiredMerchantTask.java @@ -17,21 +17,21 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.worker; +package net.server.task; import net.server.world.World; /** * @author Ronan */ -public class HiredMerchantWorker extends BaseWorker implements Runnable { +public class HiredMerchantTask extends BaseTask implements Runnable { @Override public void run() { wserv.runHiredMerchantSchedule(); } - public HiredMerchantWorker(World world) { + public HiredMerchantTask(World world) { super(world); } } diff --git a/src/net/server/worker/InvitationWorker.java b/src/net/server/task/InvitationTask.java similarity index 88% rename from src/net/server/worker/InvitationWorker.java rename to src/net/server/task/InvitationTask.java index 87a171bef4..6aa153f0d0 100644 --- a/src/net/server/worker/InvitationWorker.java +++ b/src/net/server/task/InvitationTask.java @@ -17,14 +17,14 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.worker; +package net.server.task; -import net.server.coordinator.MapleInviteCoordinator; +import net.server.coordinator.world.MapleInviteCoordinator; /** * @author Ronan */ -public class InvitationWorker implements Runnable { +public class InvitationTask implements Runnable { @Override public void run() { diff --git a/src/net/server/worker/LoginCoordinatorWorker.java b/src/net/server/task/LoginCoordinatorTask.java similarity index 87% rename from src/net/server/worker/LoginCoordinatorWorker.java rename to src/net/server/task/LoginCoordinatorTask.java index 0bb2345547..b51d312069 100644 --- a/src/net/server/worker/LoginCoordinatorWorker.java +++ b/src/net/server/task/LoginCoordinatorTask.java @@ -17,15 +17,15 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.worker; +package net.server.task; -import net.server.coordinator.MapleSessionCoordinator; +import net.server.coordinator.session.MapleSessionCoordinator; /** * * @author Ronan */ -public class LoginCoordinatorWorker implements Runnable { +public class LoginCoordinatorTask implements Runnable { @Override public void run() { diff --git a/src/net/server/worker/LoginStorageWorker.java b/src/net/server/task/LoginStorageTask.java similarity index 84% rename from src/net/server/worker/LoginStorageWorker.java rename to src/net/server/task/LoginStorageTask.java index e71c533ffc..4975dd37da 100644 --- a/src/net/server/worker/LoginStorageWorker.java +++ b/src/net/server/task/LoginStorageTask.java @@ -17,16 +17,16 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.worker; +package net.server.task; -import net.server.coordinator.MapleSessionCoordinator; -import net.server.coordinator.MapleLoginBypassCoordinator; +import net.server.coordinator.session.MapleSessionCoordinator; +import net.server.coordinator.login.MapleLoginBypassCoordinator; /** * * @author Ronan */ -public class LoginStorageWorker implements Runnable { +public class LoginStorageTask implements Runnable { @Override public void run() { diff --git a/src/net/server/worker/MapOwnershipWorker.java b/src/net/server/task/MapOwnershipTask.java similarity index 88% rename from src/net/server/worker/MapOwnershipWorker.java rename to src/net/server/task/MapOwnershipTask.java index adc201de26..cc61e18554 100644 --- a/src/net/server/worker/MapOwnershipWorker.java +++ b/src/net/server/task/MapOwnershipTask.java @@ -17,7 +17,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.worker; +package net.server.task; import net.server.world.World; import net.server.channel.Channel; @@ -25,7 +25,7 @@ import net.server.channel.Channel; /** * @author Ronan */ -public class MapOwnershipWorker extends BaseWorker implements Runnable { +public class MapOwnershipTask extends BaseTask implements Runnable { @Override public void run() { @@ -34,7 +34,7 @@ public class MapOwnershipWorker extends BaseWorker implements Runnable { } } - public MapOwnershipWorker(World world) { + public MapOwnershipTask(World world) { super(world); } } diff --git a/src/net/server/worker/MountTirednessWorker.java b/src/net/server/task/MountTirednessTask.java similarity index 87% rename from src/net/server/worker/MountTirednessWorker.java rename to src/net/server/task/MountTirednessTask.java index a0244af19d..1b5277eea0 100644 --- a/src/net/server/worker/MountTirednessWorker.java +++ b/src/net/server/task/MountTirednessTask.java @@ -17,21 +17,21 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.worker; +package net.server.task; import net.server.world.World; /** * @author Ronan */ -public class MountTirednessWorker extends BaseWorker implements Runnable { +public class MountTirednessTask extends BaseTask implements Runnable { @Override public void run() { wserv.runMountSchedule(); } - public MountTirednessWorker(World world) { + public MountTirednessTask(World world) { super(world); } } diff --git a/src/net/server/worker/PartySearchWorker.java b/src/net/server/task/PartySearchTask.java similarity index 88% rename from src/net/server/worker/PartySearchWorker.java rename to src/net/server/task/PartySearchTask.java index aefa89325d..6adea657b8 100644 --- a/src/net/server/worker/PartySearchWorker.java +++ b/src/net/server/task/PartySearchTask.java @@ -17,7 +17,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.worker; +package net.server.task; import net.server.world.World; @@ -25,14 +25,14 @@ import net.server.world.World; * * @author Ronan */ -public class PartySearchWorker extends BaseWorker implements Runnable { +public class PartySearchTask extends BaseTask implements Runnable { @Override public void run() { wserv.runPartySearchUpdateSchedule(); } - public PartySearchWorker(World world) { + public PartySearchTask(World world) { super(world); } } diff --git a/src/net/server/worker/PetFullnessWorker.java b/src/net/server/task/PetFullnessTask.java similarity index 88% rename from src/net/server/worker/PetFullnessWorker.java rename to src/net/server/task/PetFullnessTask.java index 23c9f2b23a..5fe6a58fc9 100644 --- a/src/net/server/worker/PetFullnessWorker.java +++ b/src/net/server/task/PetFullnessTask.java @@ -17,21 +17,21 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.worker; +package net.server.task; import net.server.world.World; /** * @author Ronan */ -public class PetFullnessWorker extends BaseWorker implements Runnable { +public class PetFullnessTask extends BaseTask implements Runnable { @Override public void run() { wserv.runPetSchedule(); } - public PetFullnessWorker(World world) { + public PetFullnessTask(World world) { super(world); } } diff --git a/src/net/server/worker/RankingCommandWorker.java b/src/net/server/task/RankingCommandTask.java similarity index 92% rename from src/net/server/worker/RankingCommandWorker.java rename to src/net/server/task/RankingCommandTask.java index de0077021a..61a5dd0c93 100644 --- a/src/net/server/worker/RankingCommandWorker.java +++ b/src/net/server/task/RankingCommandTask.java @@ -17,7 +17,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.worker; +package net.server.task; import net.server.Server; @@ -25,7 +25,7 @@ import net.server.Server; * * @author Ronan */ -public class RankingCommandWorker implements Runnable { +public class RankingCommandTask implements Runnable { @Override public void run() { diff --git a/src/net/server/worker/RankingLoginWorker.java b/src/net/server/task/RankingLoginTask.java similarity index 97% rename from src/net/server/worker/RankingLoginWorker.java rename to src/net/server/task/RankingLoginTask.java index 6288fef75f..c56a9ea4db 100644 --- a/src/net/server/worker/RankingLoginWorker.java +++ b/src/net/server/task/RankingLoginTask.java @@ -19,7 +19,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.worker; +package net.server.task; import java.sql.Connection; import java.sql.PreparedStatement; @@ -28,7 +28,7 @@ import java.sql.SQLException; import client.MapleJob; import config.YamlConfig; import tools.DatabaseConnection; -import constants.ServerConstants; +import constants.net.ServerConstants; import net.server.Server; /** @@ -36,7 +36,7 @@ import net.server.Server; * @author Quit * @author Ronan */ -public class RankingLoginWorker implements Runnable { +public class RankingLoginTask implements Runnable { private Connection con; private long lastUpdate = System.currentTimeMillis(); diff --git a/src/net/server/worker/ReleaseLockWorker.java b/src/net/server/task/ReleaseLockTask.java similarity index 93% rename from src/net/server/worker/ReleaseLockWorker.java rename to src/net/server/task/ReleaseLockTask.java index ee567ee02c..c887d5059e 100644 --- a/src/net/server/worker/ReleaseLockWorker.java +++ b/src/net/server/task/ReleaseLockTask.java @@ -17,7 +17,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.worker; +package net.server.task; import net.server.audit.LockCollector; @@ -25,7 +25,7 @@ import net.server.audit.LockCollector; * @author Ronan * @info Thread responsible for expiring locks signalized for dispose. */ -public class ReleaseLockWorker implements Runnable { +public class ReleaseLockTask implements Runnable { @Override public void run() { LockCollector.getInstance().runLockCollector(); diff --git a/src/net/server/worker/RespawnWorker.java b/src/net/server/task/RespawnTask.java similarity index 89% rename from src/net/server/worker/RespawnWorker.java rename to src/net/server/task/RespawnTask.java index f5eda668fa..0a3c74078d 100644 --- a/src/net/server/worker/RespawnWorker.java +++ b/src/net/server/task/RespawnTask.java @@ -1,4 +1,4 @@ -package net.server.worker; +package net.server.task; import net.server.PlayerStorage; import net.server.Server; @@ -8,7 +8,7 @@ import server.maps.MapleMapManager; /** * @author Resinate */ -public class RespawnWorker implements Runnable { +public class RespawnTask implements Runnable { @Override public void run() { diff --git a/src/net/server/worker/ServerMessageWorker.java b/src/net/server/task/ServerMessageTask.java similarity index 89% rename from src/net/server/worker/ServerMessageWorker.java rename to src/net/server/task/ServerMessageTask.java index aab7456b64..bac3de329d 100644 --- a/src/net/server/worker/ServerMessageWorker.java +++ b/src/net/server/task/ServerMessageTask.java @@ -17,14 +17,14 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.worker; +package net.server.task; import net.server.world.World; /** * @author Ronan */ -public class ServerMessageWorker extends BaseWorker implements Runnable { +public class ServerMessageTask extends BaseTask implements Runnable { @Override public void run() { @@ -34,7 +34,7 @@ public class ServerMessageWorker extends BaseWorker implements Runnable { wserv.runDisabledServerMessagesSchedule(); } - public ServerMessageWorker(World world) { + public ServerMessageTask(World world) { super(world); } } diff --git a/src/net/server/worker/TimedMapObjectWorker.java b/src/net/server/task/TimedMapObjectTask.java similarity index 87% rename from src/net/server/worker/TimedMapObjectWorker.java rename to src/net/server/task/TimedMapObjectTask.java index 9f1576567e..ece2abd337 100644 --- a/src/net/server/worker/TimedMapObjectWorker.java +++ b/src/net/server/task/TimedMapObjectTask.java @@ -17,21 +17,21 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.worker; +package net.server.task; import net.server.world.World; /** * @author Ronan */ -public class TimedMapObjectWorker extends BaseWorker implements Runnable { +public class TimedMapObjectTask extends BaseTask implements Runnable { @Override public void run() { wserv.runTimedMapObjectSchedule(); } - public TimedMapObjectWorker(World world) { + public TimedMapObjectTask(World world) { super(world); } } diff --git a/src/net/server/worker/TimeoutWorker.java b/src/net/server/task/TimeoutTask.java similarity index 82% rename from src/net/server/worker/TimeoutWorker.java rename to src/net/server/task/TimeoutTask.java index f9c7b921b6..1ecdfc5d35 100644 --- a/src/net/server/worker/TimeoutWorker.java +++ b/src/net/server/task/TimeoutTask.java @@ -1,8 +1,7 @@ -package net.server.worker; +package net.server.task; import client.MapleCharacter; import config.YamlConfig; -import constants.ServerConstants; import net.server.world.World; import tools.FilePrinter; @@ -12,7 +11,7 @@ import java.util.Collection; * * @author Shavit */ -public class TimeoutWorker extends BaseWorker implements Runnable { +public class TimeoutTask extends BaseTask implements Runnable { @Override public void run() { long time = System.currentTimeMillis(); @@ -25,7 +24,7 @@ public class TimeoutWorker extends BaseWorker implements Runnable { } } - public TimeoutWorker(World world) { + public TimeoutTask(World world) { super(world); } } diff --git a/src/net/server/worker/WeddingReservationWorker.java b/src/net/server/task/WeddingReservationTask.java similarity index 92% rename from src/net/server/worker/WeddingReservationWorker.java rename to src/net/server/task/WeddingReservationTask.java index 8ee90890c4..b7a9b0bcf0 100644 --- a/src/net/server/worker/WeddingReservationWorker.java +++ b/src/net/server/task/WeddingReservationTask.java @@ -17,7 +17,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.worker; +package net.server.task; import java.util.Set; import net.server.world.World; @@ -27,7 +27,7 @@ import tools.Pair; /** * @author Ronan */ -public class WeddingReservationWorker extends BaseWorker implements Runnable { +public class WeddingReservationTask extends BaseTask implements Runnable { @Override public void run() { @@ -50,7 +50,7 @@ public class WeddingReservationWorker extends BaseWorker implements Runnable { } } - public WeddingReservationWorker(World world) { + public WeddingReservationTask(World world) { super(world); } } diff --git a/src/net/server/world/MapleParty.java b/src/net/server/world/MapleParty.java index d6758c77e4..ec7aaa167e 100644 --- a/src/net/server/world/MapleParty.java +++ b/src/net/server/world/MapleParty.java @@ -24,7 +24,6 @@ package net.server.world; import client.MapleCharacter; import client.MapleClient; import config.YamlConfig; -import constants.ServerConstants; import java.util.Collection; import java.util.Collections; import java.util.LinkedList; @@ -37,7 +36,7 @@ import net.server.audit.LockCollector; import net.server.audit.locks.MonitoredReentrantLock; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.factory.MonitoredReentrantLockFactory; -import net.server.coordinator.MapleMatchCheckerCoordinator; +import net.server.coordinator.matchchecker.MapleMatchCheckerCoordinator; import net.server.coordinator.matchchecker.MatchCheckerListenerFactory.MatchCheckerType; import scripting.event.EventInstanceManager; import server.maps.MapleDoor; diff --git a/src/net/server/world/World.java b/src/net/server/world/World.java index cd9c159c7e..b46b42a884 100644 --- a/src/net/server/world/World.java +++ b/src/net/server/world/World.java @@ -28,10 +28,10 @@ import client.BuddylistEntry; import client.MapleCharacter; import client.MapleFamily; import config.YamlConfig; -import constants.GameConstants; -import constants.ServerConstants; -import java.sql.Connection; +import constants.game.GameConstants; +import constants.net.ServerConstants; +import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; @@ -79,26 +79,26 @@ import net.server.audit.locks.MonitoredReentrantReadWriteLock; import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import net.server.channel.Channel; import net.server.channel.CharacterIdChannelPair; -import net.server.coordinator.MapleInviteCoordinator; -import net.server.coordinator.MapleInviteCoordinator.InviteResult; -import net.server.coordinator.MapleInviteCoordinator.InviteType; -import net.server.coordinator.MapleMatchCheckerCoordinator; -import net.server.coordinator.MaplePartySearchCoordinator; +import net.server.coordinator.world.MapleInviteCoordinator; +import net.server.coordinator.world.MapleInviteCoordinator.InviteResult; +import net.server.coordinator.world.MapleInviteCoordinator.InviteType; +import net.server.coordinator.matchchecker.MapleMatchCheckerCoordinator; +import net.server.coordinator.partysearch.MaplePartySearchCoordinator; import net.server.guild.MapleGuild; import net.server.guild.MapleGuildCharacter; import net.server.guild.MapleGuildSummary; -import net.server.worker.CharacterAutosaverWorker; -import net.server.worker.FamilyDailyResetWorker; -import net.server.worker.FishingWorker; -import net.server.worker.HiredMerchantWorker; -import net.server.worker.MapOwnershipWorker; -import net.server.worker.MountTirednessWorker; -import net.server.worker.PartySearchWorker; -import net.server.worker.PetFullnessWorker; -import net.server.worker.ServerMessageWorker; -import net.server.worker.TimedMapObjectWorker; -import net.server.worker.TimeoutWorker; -import net.server.worker.WeddingReservationWorker; +import net.server.task.CharacterAutosaverTask; +import net.server.task.FamilyDailyResetTask; +import net.server.task.FishingTask; +import net.server.task.HiredMerchantTask; +import net.server.task.MapOwnershipTask; +import net.server.task.MountTirednessTask; +import net.server.task.PartySearchTask; +import net.server.task.PetFullnessTask; +import net.server.task.ServerMessageTask; +import net.server.task.TimedMapObjectTask; +import net.server.task.TimeoutTask; +import net.server.task.WeddingReservationTask; import tools.DatabaseConnection; import tools.MaplePacketCreator; import tools.Pair; @@ -206,22 +206,22 @@ public class World { } TimerManager tman = TimerManager.getInstance(); - petsSchedule = tman.register(new PetFullnessWorker(this), 60 * 1000, 60 * 1000); - srvMessagesSchedule = tman.register(new ServerMessageWorker(this), 10 * 1000, 10 * 1000); - mountsSchedule = tman.register(new MountTirednessWorker(this), 60 * 1000, 60 * 1000); - merchantSchedule = tman.register(new HiredMerchantWorker(this), 10 * 60 * 1000, 10 * 60 * 1000); - timedMapObjectsSchedule = tman.register(new TimedMapObjectWorker(this), 60 * 1000, 60 * 1000); - charactersSchedule = tman.register(new CharacterAutosaverWorker(this), 60 * 60 * 1000, 60 * 60 * 1000); - marriagesSchedule = tman.register(new WeddingReservationWorker(this), YamlConfig.config.server.WEDDING_RESERVATION_INTERVAL * 60 * 1000, YamlConfig.config.server.WEDDING_RESERVATION_INTERVAL * 60 * 1000); - mapOwnershipSchedule = tman.register(new MapOwnershipWorker(this), 20 * 1000, 20 * 1000); - fishingSchedule = tman.register(new FishingWorker(this), 10 * 1000, 10 * 1000); - partySearchSchedule = tman.register(new PartySearchWorker(this), 10 * 1000, 10 * 1000); - timeoutSchedule = tman.register(new TimeoutWorker(this), 10 * 1000, 10 * 1000); + petsSchedule = tman.register(new PetFullnessTask(this), 60 * 1000, 60 * 1000); + srvMessagesSchedule = tman.register(new ServerMessageTask(this), 10 * 1000, 10 * 1000); + mountsSchedule = tman.register(new MountTirednessTask(this), 60 * 1000, 60 * 1000); + merchantSchedule = tman.register(new HiredMerchantTask(this), 10 * 60 * 1000, 10 * 60 * 1000); + timedMapObjectsSchedule = tman.register(new TimedMapObjectTask(this), 60 * 1000, 60 * 1000); + charactersSchedule = tman.register(new CharacterAutosaverTask(this), 60 * 60 * 1000, 60 * 60 * 1000); + marriagesSchedule = tman.register(new WeddingReservationTask(this), ServerConstants.WEDDING_RESERVATION_INTERVAL * 60 * 1000, ServerConstants.WEDDING_RESERVATION_INTERVAL * 60 * 1000); + mapOwnershipSchedule = tman.register(new MapOwnershipTask(this), 20 * 1000, 20 * 1000); + fishingSchedule = tman.register(new FishingTask(this), 10 * 1000, 10 * 1000); + partySearchSchedule = tman.register(new PartySearchTask(this), 10 * 1000, 10 * 1000); + timeoutSchedule = tman.register(new TimeoutTask(this), 10 * 1000, 10 * 1000); if(YamlConfig.config.server.USE_FAMILY_SYSTEM) { long timeLeft = Server.getTimeLeftForNextDay(); - FamilyDailyResetWorker.resetEntitlementUsage(this); - tman.register(new FamilyDailyResetWorker(this), 24 * 60 * 60 * 1000, timeLeft); + FamilyDailyResetTask.resetEntitlementUsage(this); + tman.register(new FamilyDailyResetTask(this), 24 * 60 * 60 * 1000, timeLeft); } } diff --git a/src/provider/wz/XMLDomMapleData.java b/src/provider/wz/XMLDomMapleData.java index 13606f3e07..b24ec2726a 100644 --- a/src/provider/wz/XMLDomMapleData.java +++ b/src/provider/wz/XMLDomMapleData.java @@ -21,7 +21,7 @@ */ package provider.wz; -import constants.GameConstants; +import constants.game.GameConstants; import java.awt.Point; import java.io.File; import java.io.FileInputStream; diff --git a/src/scripting/AbstractPlayerInteraction.java b/src/scripting/AbstractPlayerInteraction.java index 3f59073190..7ea9a0ec04 100644 --- a/src/scripting/AbstractPlayerInteraction.java +++ b/src/scripting/AbstractPlayerInteraction.java @@ -66,9 +66,9 @@ import client.inventory.MapleInventoryType; import client.inventory.MaplePet; import client.inventory.ModifyInventory; import client.inventory.manipulator.MapleInventoryManipulator; -import constants.GameConstants; -import constants.ItemConstants; -import constants.ServerConstants; +import constants.game.GameConstants; +import constants.inventory.ItemConstants; +import constants.net.ServerConstants; import server.MapleMarriage; import server.expeditions.MapleExpeditionBossLog; import server.life.MapleNPC; diff --git a/src/scripting/AbstractScriptManager.java b/src/scripting/AbstractScriptManager.java index 0b0ceeafde..ec9ad7f043 100644 --- a/src/scripting/AbstractScriptManager.java +++ b/src/scripting/AbstractScriptManager.java @@ -29,7 +29,7 @@ import java.io.IOException; import javax.script.*; -import constants.ServerConstants; +import constants.net.ServerConstants; import jdk.nashorn.api.scripting.NashornScriptEngine; import tools.FilePrinter; diff --git a/src/scripting/event/EventInstanceManager.java b/src/scripting/event/EventInstanceManager.java index 2f888ac7ba..cf08ac3ed4 100644 --- a/src/scripting/event/EventInstanceManager.java +++ b/src/scripting/event/EventInstanceManager.java @@ -51,8 +51,8 @@ import server.maps.MapleReactor; import client.MapleCharacter; import client.SkillFactory; import client.Skill; -import constants.ItemConstants; -import constants.ServerConstants; +import constants.inventory.ItemConstants; +import constants.net.ServerConstants; import java.awt.Point; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.locks.ReentrantReadWriteLock; @@ -60,9 +60,9 @@ import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock; import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; import java.util.logging.Level; import java.util.logging.Logger; -import net.server.coordinator.MapleEventRecallCoordinator; +import net.server.coordinator.world.MapleEventRecallCoordinator; import scripting.AbstractPlayerInteraction; -import scripting.event.worker.EventScriptScheduler; +import scripting.event.scheduler.EventScriptScheduler; import server.MapleItemInformationProvider; import server.ThreadManager; import server.life.MapleLifeFactory; diff --git a/src/scripting/event/EventManager.java b/src/scripting/event/EventManager.java index d7245805b5..d9661a6239 100644 --- a/src/scripting/event/EventManager.java +++ b/src/scripting/event/EventManager.java @@ -34,8 +34,8 @@ import java.util.logging.Logger; import javax.script.ScriptException; -import constants.ServerConstants; -import constants.GameConstants; +import constants.net.ServerConstants; +import constants.game.GameConstants; import client.MapleCharacter; import net.server.Server; import net.server.world.World; @@ -43,7 +43,7 @@ import net.server.channel.Channel; import net.server.guild.MapleGuild; import net.server.world.MapleParty; import net.server.world.MaplePartyCharacter; -import scripting.event.worker.EventScriptScheduler; +import scripting.event.scheduler.EventScriptScheduler; import server.MapleMarriage; import server.expeditions.MapleExpedition; import server.maps.MapleMap; @@ -925,7 +925,7 @@ public class EventManager { } private void fillEimQueue() { - ThreadManager.getInstance().newTask(new EventManagerWorker()); //call new thread to fill up readied instances queue + ThreadManager.getInstance().newTask(new EventManagerTask()); //call new thread to fill up readied instances queue } private EventInstanceManager getReadyInstance() { @@ -974,7 +974,7 @@ public class EventManager { instantiateQueuedInstance(); // keep filling the queue until reach threshold. } - private class EventManagerWorker implements Runnable { + private class EventManagerTask implements Runnable { @Override public void run() { diff --git a/src/scripting/event/EventScheduledFuture.java b/src/scripting/event/EventScheduledFuture.java index c653a17f61..647b74675b 100644 --- a/src/scripting/event/EventScheduledFuture.java +++ b/src/scripting/event/EventScheduledFuture.java @@ -19,7 +19,7 @@ */ package scripting.event; -import scripting.event.worker.EventScriptScheduler; +import scripting.event.scheduler.EventScriptScheduler; /** * diff --git a/src/scripting/event/worker/EventScriptScheduler.java b/src/scripting/event/scheduler/EventScriptScheduler.java similarity index 98% rename from src/scripting/event/worker/EventScriptScheduler.java rename to src/scripting/event/scheduler/EventScriptScheduler.java index fc935e0572..94830ecfac 100644 --- a/src/scripting/event/worker/EventScriptScheduler.java +++ b/src/scripting/event/scheduler/EventScriptScheduler.java @@ -17,10 +17,9 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package scripting.event.worker; +package scripting.event.scheduler; import config.YamlConfig; -import constants.ServerConstants; import java.util.HashMap; import java.util.LinkedList; import java.util.List; diff --git a/src/scripting/npc/NPCConversationManager.java b/src/scripting/npc/NPCConversationManager.java index 549c5e3c02..1d59e12836 100644 --- a/src/scripting/npc/NPCConversationManager.java +++ b/src/scripting/npc/NPCConversationManager.java @@ -25,7 +25,6 @@ import java.io.File; import java.sql.SQLException; import config.YamlConfig; -import constants.ServerConstants; import net.server.Server; import net.server.guild.MapleAlliance; import net.server.guild.MapleGuild; @@ -58,9 +57,9 @@ import client.SkillFactory; import client.inventory.Item; import client.inventory.ItemFactory; import client.inventory.MaplePet; -import constants.GameConstants; -import constants.ItemConstants; -import constants.LanguageConstants; +import constants.game.GameConstants; +import constants.inventory.ItemConstants; +import constants.string.LanguageConstants; import net.server.PlayerStorage; import net.server.channel.Channel; import net.server.coordinator.matchchecker.MatchCheckerListenerFactory.MatchCheckerType; diff --git a/src/scripting/quest/QuestScriptManager.java b/src/scripting/quest/QuestScriptManager.java index 8d9628769e..6116cbbfbc 100644 --- a/src/scripting/quest/QuestScriptManager.java +++ b/src/scripting/quest/QuestScriptManager.java @@ -29,7 +29,7 @@ import jdk.nashorn.api.scripting.NashornScriptEngine; import scripting.AbstractScriptManager; import server.quest.MapleQuest; import tools.FilePrinter; -import constants.GameConstants; +import constants.game.GameConstants; import client.MapleClient; import client.MapleQuestStatus; diff --git a/src/scripting/reactor/ReactorActionManager.java b/src/scripting/reactor/ReactorActionManager.java index 67c8d1f602..dd43569083 100644 --- a/src/scripting/reactor/ReactorActionManager.java +++ b/src/scripting/reactor/ReactorActionManager.java @@ -27,8 +27,7 @@ import client.inventory.Equip; import client.inventory.Item; import client.inventory.MapleInventoryType; import config.YamlConfig; -import constants.ItemConstants; -import constants.ServerConstants; +import constants.inventory.ItemConstants; import java.awt.Point; import java.util.ArrayList; import java.util.Collections; diff --git a/src/server/CashShop.java b/src/server/CashShop.java index 8a245e3167..19b99e9b03 100644 --- a/src/server/CashShop.java +++ b/src/server/CashShop.java @@ -48,8 +48,8 @@ import client.inventory.Item; import client.inventory.ItemFactory; import client.inventory.MapleInventoryType; import client.inventory.MaplePet; -import constants.ItemConstants; -import constants.ServerConstants; +import constants.inventory.ItemConstants; +import constants.net.ServerConstants; import java.util.Collections; import net.server.audit.locks.MonitoredLockType; diff --git a/src/server/MakerItemFactory.java b/src/server/MakerItemFactory.java index c7201b1fe7..25591b71f9 100644 --- a/src/server/MakerItemFactory.java +++ b/src/server/MakerItemFactory.java @@ -22,8 +22,7 @@ package server; import config.YamlConfig; -import constants.EquipType; -import constants.ServerConstants; +import constants.inventory.EquipType; import java.util.ArrayList; import java.util.List; import java.util.Map; diff --git a/src/server/MapleItemInformationProvider.java b/src/server/MapleItemInformationProvider.java index c2206724c2..4a2148e8c5 100644 --- a/src/server/MapleItemInformationProvider.java +++ b/src/server/MapleItemInformationProvider.java @@ -60,9 +60,9 @@ import client.inventory.Item; import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; import client.inventory.MapleWeaponType; -import constants.ServerConstants; -import constants.EquipSlot; -import constants.ItemConstants; +import constants.net.ServerConstants; +import constants.inventory.EquipSlot; +import constants.inventory.ItemConstants; import constants.skills.Assassin; import constants.skills.Gunslinger; import constants.skills.NightWalker; diff --git a/src/server/MapleShop.java b/src/server/MapleShop.java index 3364e36ee8..3c75335311 100644 --- a/src/server/MapleShop.java +++ b/src/server/MapleShop.java @@ -26,7 +26,7 @@ import client.MapleClient; import client.inventory.Item; import client.inventory.MapleInventoryType; import client.inventory.MaplePet; -import constants.ItemConstants; +import constants.inventory.ItemConstants; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; diff --git a/src/server/MapleStatEffect.java b/src/server/MapleStatEffect.java index b3044446c8..6270afd3d9 100644 --- a/src/server/MapleStatEffect.java +++ b/src/server/MapleStatEffect.java @@ -59,8 +59,8 @@ import client.inventory.MapleInventoryType; import client.inventory.manipulator.MapleInventoryManipulator; import client.status.MonsterStatus; import client.status.MonsterStatusEffect; -import constants.ItemConstants; -import constants.ServerConstants; +import constants.inventory.ItemConstants; +import constants.net.ServerConstants; import constants.skills.Aran; import constants.skills.Assassin; import constants.skills.Bandit; diff --git a/src/server/MapleStorageInventory.java b/src/server/MapleStorageInventory.java index d224e89b5d..767ce4caa2 100644 --- a/src/server/MapleStorageInventory.java +++ b/src/server/MapleStorageInventory.java @@ -26,8 +26,7 @@ import java.util.List; import java.util.Map; import config.YamlConfig; -import constants.ItemConstants; -import constants.ServerConstants; +import constants.inventory.ItemConstants; import client.MapleClient; import client.inventory.Equip; diff --git a/src/server/MapleTrade.java b/src/server/MapleTrade.java index dea46307ad..c5a6a50d1a 100644 --- a/src/server/MapleTrade.java +++ b/src/server/MapleTrade.java @@ -35,12 +35,12 @@ import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; import client.inventory.manipulator.MapleInventoryManipulator; import client.inventory.manipulator.MapleKarmaManipulator; -import constants.GameConstants; -import constants.ServerConstants; -import net.server.coordinator.MapleInviteCoordinator; -import net.server.coordinator.MapleInviteCoordinator.InviteResult; -import net.server.coordinator.MapleInviteCoordinator.InviteType; -import net.server.coordinator.MapleInviteCoordinator.MapleInviteResult; +import constants.game.GameConstants; +import constants.net.ServerConstants; +import net.server.coordinator.world.MapleInviteCoordinator; +import net.server.coordinator.world.MapleInviteCoordinator.InviteResult; +import net.server.coordinator.world.MapleInviteCoordinator.InviteType; +import net.server.coordinator.world.MapleInviteCoordinator.MapleInviteResult; import tools.Pair; /** diff --git a/src/server/expeditions/MapleExpeditionBossLog.java b/src/server/expeditions/MapleExpeditionBossLog.java index 8dadc6001b..87c91bf828 100644 --- a/src/server/expeditions/MapleExpeditionBossLog.java +++ b/src/server/expeditions/MapleExpeditionBossLog.java @@ -29,7 +29,6 @@ import java.util.LinkedList; import java.util.List; import config.YamlConfig; -import constants.ServerConstants; import tools.DatabaseConnection; import tools.Pair; diff --git a/src/server/expeditions/MapleExpeditionType.java b/src/server/expeditions/MapleExpeditionType.java index 3b1c2f96f6..ca2cefd457 100644 --- a/src/server/expeditions/MapleExpeditionType.java +++ b/src/server/expeditions/MapleExpeditionType.java @@ -23,7 +23,6 @@ package server.expeditions; import config.YamlConfig; -import constants.ServerConstants; /** * diff --git a/src/server/life/ChangeableStats.java b/src/server/life/ChangeableStats.java index 61b3de01af..876cc7b553 100644 --- a/src/server/life/ChangeableStats.java +++ b/src/server/life/ChangeableStats.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package server.life; -import constants.GameConstants; +import constants.game.GameConstants; public class ChangeableStats extends OverrideMonsterStats { diff --git a/src/server/life/MapleMonster.java b/src/server/life/MapleMonster.java index b6e4f44380..931ee5a0f2 100644 --- a/src/server/life/MapleMonster.java +++ b/src/server/life/MapleMonster.java @@ -31,7 +31,6 @@ import client.SkillFactory; import client.status.MonsterStatus; import client.status.MonsterStatusEffect; import config.YamlConfig; -import constants.ServerConstants; import constants.skills.Crusader; import constants.skills.FPMage; import constants.skills.Hermit; @@ -73,7 +72,7 @@ import tools.Randomizer; import net.server.audit.LockCollector; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.factory.MonitoredReentrantLockFactory; -import net.server.coordinator.MapleMonsterAggroCoordinator; +import net.server.coordinator.world.MapleMonsterAggroCoordinator; import server.MapleStatEffect; import server.loot.MapleLootManager; import server.maps.MapleSummon; diff --git a/src/server/life/MapleMonsterInformationProvider.java b/src/server/life/MapleMonsterInformationProvider.java index 45d6f7fa6e..66e0d385b6 100644 --- a/src/server/life/MapleMonsterInformationProvider.java +++ b/src/server/life/MapleMonsterInformationProvider.java @@ -21,8 +21,7 @@ package server.life; import config.YamlConfig; -import constants.ItemConstants; -import constants.ServerConstants; +import constants.inventory.ItemConstants; import java.io.File; import java.sql.Connection; import java.sql.PreparedStatement; diff --git a/src/server/life/MaplePlayerNPC.java b/src/server/life/MaplePlayerNPC.java index 9b31d70235..bddfba1b71 100644 --- a/src/server/life/MaplePlayerNPC.java +++ b/src/server/life/MaplePlayerNPC.java @@ -43,8 +43,8 @@ import client.MapleCharacter; import client.MapleClient; import client.inventory.Item; import client.inventory.MapleInventoryType; -import constants.GameConstants; -import constants.ServerConstants; +import constants.game.GameConstants; +import constants.net.ServerConstants; import net.server.Server; import net.server.channel.Channel; import net.server.world.World; diff --git a/src/server/life/MobSkill.java b/src/server/life/MobSkill.java index db3c18ffcd..0808dda53b 100644 --- a/src/server/life/MobSkill.java +++ b/src/server/life/MobSkill.java @@ -29,7 +29,7 @@ import java.util.List; import client.MapleCharacter; import client.MapleDisease; import client.status.MonsterStatus; -import constants.GameConstants; +import constants.game.GameConstants; import java.util.LinkedList; import java.util.Map; import tools.Randomizer; diff --git a/src/server/life/positioner/MaplePlayerNPCPodium.java b/src/server/life/positioner/MaplePlayerNPCPodium.java index ffe33daaf9..65dce56641 100644 --- a/src/server/life/positioner/MaplePlayerNPCPodium.java +++ b/src/server/life/positioner/MaplePlayerNPCPodium.java @@ -20,7 +20,6 @@ package server.life.positioner; import config.YamlConfig; -import constants.ServerConstants; import java.awt.Point; import java.util.ArrayList; import java.util.Arrays; diff --git a/src/server/life/positioner/MaplePlayerNPCPositioner.java b/src/server/life/positioner/MaplePlayerNPCPositioner.java index 7fcd145489..4945ab0935 100644 --- a/src/server/life/positioner/MaplePlayerNPCPositioner.java +++ b/src/server/life/positioner/MaplePlayerNPCPositioner.java @@ -20,7 +20,6 @@ package server.life.positioner; import config.YamlConfig; -import constants.ServerConstants; import java.awt.Point; import java.awt.Rectangle; import java.util.ArrayList; diff --git a/src/server/maps/MapleDoor.java b/src/server/maps/MapleDoor.java index de2749548c..d2860450bf 100644 --- a/src/server/maps/MapleDoor.java +++ b/src/server/maps/MapleDoor.java @@ -28,7 +28,7 @@ import config.YamlConfig; import tools.Pair; import client.MapleCharacter; -import constants.ServerConstants; +import constants.net.ServerConstants; /** * diff --git a/src/server/maps/MapleGenericPortal.java b/src/server/maps/MapleGenericPortal.java index cd0d6856a3..38d4301808 100644 --- a/src/server/maps/MapleGenericPortal.java +++ b/src/server/maps/MapleGenericPortal.java @@ -23,7 +23,7 @@ package server.maps; import client.MapleClient; import client.MapleCharacter; -import constants.GameConstants; +import constants.game.GameConstants; import java.awt.Point; import scripting.portal.PortalScriptManager; import tools.MaplePacketCreator; diff --git a/src/server/maps/MapleHiredMerchant.java b/src/server/maps/MapleHiredMerchant.java index f3681be2d9..a1870dd6ae 100644 --- a/src/server/maps/MapleHiredMerchant.java +++ b/src/server/maps/MapleHiredMerchant.java @@ -29,10 +29,9 @@ import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; import client.inventory.manipulator.MapleInventoryManipulator; import client.inventory.manipulator.MapleKarmaManipulator; -import client.processor.FredrickProcessor; +import client.processor.npc.FredrickProcessor; import com.mysql.jdbc.Statement; import config.YamlConfig; -import constants.ServerConstants; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; diff --git a/src/server/maps/MapleMap.java b/src/server/maps/MapleMap.java index bcdcb3f25e..5c6f6ffbb6 100644 --- a/src/server/maps/MapleMap.java +++ b/src/server/maps/MapleMap.java @@ -32,9 +32,8 @@ import client.inventory.MaplePet; import client.status.MonsterStatus; import client.status.MonsterStatusEffect; import config.YamlConfig; -import constants.GameConstants; -import constants.ItemConstants; -import constants.ServerConstants; +import constants.game.GameConstants; +import constants.inventory.ItemConstants; import java.awt.Point; import java.awt.Rectangle; import java.util.ArrayList; @@ -64,7 +63,7 @@ import net.server.audit.locks.MonitoredReentrantReadWriteLock; import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import java.lang.ref.WeakReference; import net.server.Server; -import net.server.coordinator.MapleMonsterAggroCoordinator; +import net.server.coordinator.world.MapleMonsterAggroCoordinator; import net.server.channel.Channel; import net.server.world.World; import scripting.map.MapScriptManager; diff --git a/src/server/maps/MapleReactor.java b/src/server/maps/MapleReactor.java index 81cc1327f4..e517ca43f2 100644 --- a/src/server/maps/MapleReactor.java +++ b/src/server/maps/MapleReactor.java @@ -22,9 +22,7 @@ package server.maps; import client.MapleClient; -import client.status.MonsterStatus; import config.YamlConfig; -import constants.ServerConstants; import java.awt.Rectangle; import java.util.List; diff --git a/src/server/partyquest/AriantColiseum.java b/src/server/partyquest/AriantColiseum.java index 4032332343..12e7989d37 100644 --- a/src/server/partyquest/AriantColiseum.java +++ b/src/server/partyquest/AriantColiseum.java @@ -26,7 +26,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.concurrent.ScheduledFuture; import client.MapleCharacter; -import constants.GameConstants; +import constants.game.GameConstants; import server.TimerManager; import server.expeditions.MapleExpedition; import server.expeditions.MapleExpeditionType; diff --git a/src/server/partyquest/MonsterCarnival.java b/src/server/partyquest/MonsterCarnival.java index 69443fda2f..b4c78da264 100644 --- a/src/server/partyquest/MonsterCarnival.java +++ b/src/server/partyquest/MonsterCarnival.java @@ -3,8 +3,7 @@ package server.partyquest; import java.util.concurrent.ScheduledFuture; import client.MapleCharacter; import config.YamlConfig; -import constants.LanguageConstants; -import constants.ServerConstants; +import constants.string.LanguageConstants; import net.server.Server; import net.server.channel.Channel; import net.server.world.MapleParty; diff --git a/src/server/quest/MapleQuest.java b/src/server/quest/MapleQuest.java index 8f560169f5..9760847427 100644 --- a/src/server/quest/MapleQuest.java +++ b/src/server/quest/MapleQuest.java @@ -32,7 +32,6 @@ import client.MapleCharacter.DelayedQuestUpdate; import client.MapleQuestStatus; import client.MapleQuestStatus.Status; import config.YamlConfig; -import constants.ServerConstants; import java.util.EnumMap; import java.util.Set; import provider.MapleData; diff --git a/src/server/quest/actions/ExpAction.java b/src/server/quest/actions/ExpAction.java index 4022e7982b..a617e91422 100644 --- a/src/server/quest/actions/ExpAction.java +++ b/src/server/quest/actions/ExpAction.java @@ -23,7 +23,6 @@ package server.quest.actions; import client.MapleCharacter; import config.YamlConfig; -import constants.ServerConstants; import provider.MapleData; import provider.MapleDataTool; import server.quest.MapleQuest; diff --git a/src/server/quest/actions/ItemAction.java b/src/server/quest/actions/ItemAction.java index a4e2d0a21e..600fac086b 100644 --- a/src/server/quest/actions/ItemAction.java +++ b/src/server/quest/actions/ItemAction.java @@ -26,7 +26,7 @@ import client.MapleClient; import client.inventory.Item; import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; -import constants.ItemConstants; +import constants.inventory.ItemConstants; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; diff --git a/src/server/quest/actions/MesoAction.java b/src/server/quest/actions/MesoAction.java index 139888d38f..df8e5d8af3 100644 --- a/src/server/quest/actions/MesoAction.java +++ b/src/server/quest/actions/MesoAction.java @@ -23,7 +23,6 @@ package server.quest.actions; import client.MapleCharacter; import config.YamlConfig; -import constants.ServerConstants; import provider.MapleData; import provider.MapleDataTool; import server.quest.MapleQuest; diff --git a/src/server/quest/actions/PetSkillAction.java b/src/server/quest/actions/PetSkillAction.java index b99fdb1ea1..2e058e7f9f 100644 --- a/src/server/quest/actions/PetSkillAction.java +++ b/src/server/quest/actions/PetSkillAction.java @@ -23,7 +23,7 @@ package server.quest.actions; import client.MapleCharacter; import client.MapleQuestStatus; -import constants.ItemConstants; +import constants.inventory.ItemConstants; import provider.MapleData; import provider.MapleDataTool; import server.quest.MapleQuest; diff --git a/src/server/quest/requirements/ItemRequirement.java b/src/server/quest/requirements/ItemRequirement.java index 7481a2056a..6308ce28f2 100644 --- a/src/server/quest/requirements/ItemRequirement.java +++ b/src/server/quest/requirements/ItemRequirement.java @@ -32,7 +32,7 @@ import server.quest.MapleQuestRequirementType; import client.MapleCharacter; import client.inventory.Item; import client.inventory.MapleInventoryType; -import constants.ItemConstants; +import constants.inventory.ItemConstants; /** * diff --git a/src/tools/HexTool.java b/src/tools/HexTool.java index d1853edfcc..e2f1b23d9a 100644 --- a/src/tools/HexTool.java +++ b/src/tools/HexTool.java @@ -21,7 +21,7 @@ */ package tools; -import constants.CharsetConstants; +import constants.string.CharsetConstants; import java.io.ByteArrayOutputStream; public class HexTool { diff --git a/src/tools/MaplePacketCreator.java b/src/tools/MaplePacketCreator.java index 8f9ff19d30..a91e7db1b8 100644 --- a/src/tools/MaplePacketCreator.java +++ b/src/tools/MaplePacketCreator.java @@ -63,10 +63,9 @@ import client.newyear.NewYearCardRecord; import client.status.MonsterStatus; import client.status.MonsterStatusEffect; import config.YamlConfig; -import constants.ExpTable; -import constants.GameConstants; -import constants.ItemConstants; -import constants.ServerConstants; +import constants.game.ExpTable; +import constants.game.GameConstants; +import constants.inventory.ItemConstants; import constants.skills.Buccaneer; import constants.skills.Corsair; import constants.skills.ThunderBreaker; diff --git a/src/tools/data/output/GenericLittleEndianWriter.java b/src/tools/data/output/GenericLittleEndianWriter.java index 91779e4d57..7dd866c4f8 100644 --- a/src/tools/data/output/GenericLittleEndianWriter.java +++ b/src/tools/data/output/GenericLittleEndianWriter.java @@ -23,7 +23,7 @@ package tools.data.output; import java.awt.Point; import java.nio.charset.Charset; -import constants.CharsetConstants.MapleLanguageType; +import constants.string.CharsetConstants.MapleLanguageType; /** * Provides a generic writer of a little-endian sequence of bytes. diff --git a/src/tools/packets/Fishing.java b/src/tools/packets/Fishing.java index c658548b60..b9fcdcfac9 100644 --- a/src/tools/packets/Fishing.java +++ b/src/tools/packets/Fishing.java @@ -21,9 +21,9 @@ package tools.packets; import client.MapleCharacter; import config.YamlConfig; -import constants.GameConstants; -import constants.ItemConstants; -import constants.ServerConstants; +import constants.game.GameConstants; +import constants.inventory.ItemConstants; +import constants.net.ServerConstants; import server.MapleItemInformationProvider; import tools.MaplePacketCreator; diff --git a/wz/Quest.wz/Check.img.xml b/wz/Quest.wz/Check.img.xml index 47010ff93e..d19084770e 100644 --- a/wz/Quest.wz/Check.img.xml +++ b/wz/Quest.wz/Check.img.xml @@ -44000,7 +44000,12 @@ - + + + + + + From 7ee947b4041852b33832d856b464abfe0ceafb8e Mon Sep 17 00:00:00 2001 From: ronancpl Date: Thu, 3 Oct 2019 20:01:09 -0300 Subject: [PATCH 30/37] Quest progress overview + Raise UI scripting + Shelved events loadout Performed a syllabus over quest progress tracking. Quests that were supposed to show up as startable/completable upon achieved progress should be able to do so. Reviewed progress tracking on scripts to adequate to this scenario. Fixed some scenarios on where quest dialog popups would appear when updating a quest progress. Fixed some scripts not using updated package addresses after the recent package refactor. Reviewed Raise UI, no longer rendering players unable to access CS/MTS in certain scenarios. Fixed a check of available space in inventory, when trying to obtain items from quests, not informing the player it happened due to a one-of-a-kind item already present. Fixed quest dialog (feature present in many quests) not showing to players when completing it. Fixed several issues with the Cygnus 1st job advancement quests. Added scripting within Raise UI open action. Mimiana egg uses this to keep track of player's EXP progress. Fixed pets not getting despawned as expiration takes place. Fixed hidden players being able to control mobs when either entering map or hidden state. Fixed estimated HP/MP alert not taking bonuses (such as from buffs or equipments) into account. Fixed Energy Charge refreshing buff time upon touching mobs, skewing the uptime of the skill's stat buffs. Switched SnakeYaml for YamlBeans, which makes up for a single JAR artifact. Refactored a channel's event scripts loadout, now taking place after the server bootup phase. --- config.yaml | 10 +- cores/jackson-annotations-2.9.9.jar | Bin 66897 -> 0 bytes cores/jackson-core-2.9.9.jar | Bin 325632 -> 0 bytes cores/jackson-databind-2.9.9.3.jar | Bin 1348389 -> 0 bytes cores/jackson-dataformat-yaml-2.9.9.jar | Bin 42456 -> 0 bytes cores/snakeyaml-1.25.jar | Bin 303487 -> 0 bytes cores/yamlbeans-1.13.jar | Bin 0 -> 161629 bytes docs/mychanges_ptbr.txt | 39 +- nbproject/project.properties | 12 +- scripts/event/BalrogBattle.js | 4 +- scripts/event/BalrogBattle_Easy.js | 2 +- scripts/event/HorntailBattle.js | 2 +- scripts/event/MK_PrimeMinister.js | 2 +- scripts/map/onUserEnter/130030000.js | 2 +- scripts/map/onUserEnter/130030001.js | 2 +- scripts/map/onUserEnter/910510000.js | 4 +- scripts/map/onUserEnter/914000100.js | 2 +- scripts/map/onUserEnter/925040100.js | 2 +- scripts/npc/1012100.js | 4 +- scripts/npc/1022000.js | 4 +- scripts/npc/1032001.js | 4 +- scripts/npc/1052001.js | 4 +- scripts/npc/1063012.js | 14 +- scripts/npc/1063013.js | 14 +- scripts/npc/1090000.js | 16 +- scripts/npc/1092019.js | 12 +- scripts/npc/1092090.js | 8 +- scripts/npc/1092091.js | 8 +- scripts/npc/1101001.js | 2 +- scripts/npc/1102003.js | 4 +- scripts/npc/1104201.js | 2 +- scripts/npc/1202010.js | 4 +- scripts/npc/1209000.js | 2 +- scripts/npc/1300013.js | 2 +- scripts/npc/2012027.js | 10 +- scripts/npc/2012028.js | 10 +- scripts/npc/2012029.js | 10 +- scripts/npc/2012030.js | 10 +- scripts/npc/2012031.js | 10 +- scripts/npc/2012032.js | 10 +- scripts/npc/2012033.js | 10 +- scripts/npc/2050014.js | 4 +- scripts/npc/2050015.js | 4 +- scripts/npc/2050016.js | 4 +- scripts/npc/2050017.js | 4 +- scripts/npc/2050018.js | 4 +- scripts/npc/2050019.js | 4 +- scripts/npc/2071012.js | 4 +- scripts/npc/2081009.js | 15 +- scripts/npc/2091009.js | 4 +- scripts/npc/2101017.js | 2 +- scripts/npc/2103000.js | 4 +- scripts/npc/2103003.js | 14 +- scripts/npc/2103004.js | 14 +- scripts/npc/2103005.js | 14 +- scripts/npc/2103006.js | 14 +- scripts/npc/2103009.js | 14 +- scripts/npc/2103010.js | 14 +- scripts/npc/2103011.js | 14 +- scripts/npc/2103012.js | 14 +- scripts/npc/2103013.js | 2 +- scripts/npc/2111011.js | 25 + scripts/npc/2111012.js | 25 + scripts/npc/2111013.js | 12 +- scripts/npc/2111014.js | 12 +- scripts/npc/2111016.js | 25 + scripts/npc/2111017.js | 8 +- scripts/npc/2111018.js | 8 +- scripts/npc/2111019.js | 8 +- scripts/npc/2111020.js | 6 +- scripts/npc/2111021.js | 6 +- scripts/npc/2111022.js | 6 +- scripts/npc/2111023.js | 6 +- scripts/npc/2112016.js | 8 +- scripts/npc/9201003.js | 2 +- scripts/npc/9977777.js | 1 + scripts/npc/MagatiaPassword.js | 7 +- scripts/npc/PupeteerPassword.js | 8 +- scripts/npc/cpqchallenge.js | 2 +- scripts/npc/cpqchallenge2.js | 2 +- scripts/npc/credits.js | 3 + scripts/npc/rank_user.js | 2 +- scripts/portal/TD_MC_enterboss1.js | 2 +- scripts/portal/TD_neo_inTree.js | 2 +- scripts/portal/enterInfo.js | 3 +- scripts/portal/enterMCave.js | 5 +- scripts/portal/enterPort.js | 2 +- scripts/portal/out_pepeking.js | 2 +- scripts/portal/q3367in.js | 7 +- scripts/portal/s4mind_end.js | 2 +- scripts/portal/secretDoor.js | 3 +- scripts/quest/1021.js | 6 +- scripts/quest/20010.js | 10 +- scripts/quest/20011.js | 2 +- scripts/quest/20013.js | 2 +- scripts/quest/20020.js | 38 ++ scripts/quest/20101.js | 44 +- scripts/quest/20102.js | 44 +- scripts/quest/20103.js | 46 +- scripts/quest/20104.js | 46 +- scripts/quest/20105.js | 44 +- scripts/quest/20514.js | 52 ++ scripts/quest/2236.js | 63 --- scripts/quest/2251.js | 38 -- scripts/quest/2260.js | 2 +- scripts/quest/3114.js | 62 --- scripts/quest/3311.js | 49 -- scripts/quest/3360.js | 28 +- scripts/quest/3523.js | 2 +- scripts/quest/3524.js | 2 +- scripts/quest/3525.js | 2 +- scripts/quest/3526.js | 2 +- scripts/quest/3527.js | 2 +- scripts/quest/3529.js | 3 +- scripts/quest/3539.js | 2 +- scripts/quest/3926.js | 59 -- scripts/quest/3927.js | 71 --- scripts/quest/3929.js | 70 --- scripts/quest/6033.js | 4 +- scripts/quest/6410.js | 57 -- scripts/reactor/1209000.js | 8 +- src/client/MapleCharacter.java | 247 +++++---- src/client/MapleClient.java | 2 +- src/client/MapleQuestStatus.java | 70 ++- .../command/commands/gm5/SetCommand.java | 4 +- src/config/ServerConfig.java | 2 - src/config/YamlConfig.java | 12 +- src/constants/net/ServerConstants.java | 301 +--------- src/constants/skills/FPWizard.java | 1 + src/net/server/Server.java | 14 +- src/net/server/channel/Channel.java | 24 +- .../handlers/AbstractDealDamageHandler.java | 6 +- .../AbstractMovementPacketHandler.java | 13 +- .../channel/handlers/BBSOperationHandler.java | 20 +- .../channel/handlers/MagicDamageHandler.java | 11 +- .../channel/handlers/MoveDragonHandler.java | 12 +- .../channel/handlers/MoveLifeHandler.java | 29 +- .../channel/handlers/MovePetHandler.java | 8 +- .../channel/handlers/MovePlayerHandler.java | 14 +- .../channel/handlers/MoveSummonHandler.java | 14 +- .../channel/handlers/PetAutoPotHandler.java | 4 +- .../handlers/PlayerLoggedinHandler.java | 5 +- .../handlers/PlayerMapTransitionHandler.java | 26 +- .../channel/handlers/RaiseIncExpHandler.java | 30 +- .../channel/handlers/RaiseUIStateHandler.java | 20 +- src/net/server/guild/MapleGuildCharacter.java | 26 +- .../login/CharlistRequestHandler.java | 4 +- src/net/server/world/World.java | 10 +- src/scripting/AbstractPlayerInteraction.java | 141 ++--- src/scripting/event/EventInstanceManager.java | 4 +- src/scripting/event/EventScriptManager.java | 10 +- src/scripting/map/MapScriptMethods.java | 20 +- src/scripting/npc/NPCConversationManager.java | 4 +- src/scripting/quest/QuestScriptManager.java | 34 +- src/server/MapleItemInformationProvider.java | 18 +- src/server/MapleTrade.java | 36 +- src/server/life/MapleLifeFactory.java | 22 +- src/server/life/MapleMonster.java | 8 +- src/server/maps/MapleMap.java | 16 +- src/server/maps/MapleMiniGame.java | 4 +- src/server/maps/MaplePlayerShop.java | 4 +- src/server/quest/MapleQuest.java | 337 +++++++----- src/server/quest/MapleQuestActionType.java | 4 +- .../server/quest/actions/InfoAction.java | 58 +- src/server/quest/actions/ItemAction.java | 22 +- .../quest/actions/MapleQuestAction.java | 4 +- src/server/quest/actions/QuestAction.java | 2 +- .../quest/requirements/InfoExRequirement.java | 14 +- .../requirements/InfoNumberRequirement.java | 57 ++ .../requirements/IntervalRequirement.java | 40 +- .../quest/requirements/MesoRequirement.java | 7 +- .../quest/requirements/MobRequirement.java | 2 +- .../quest/requirements/QuestRequirement.java | 6 +- src/tools/MaplePacketCreator.java | 120 ++-- .../exceptions/EmptyMovementException.java | 40 +- tools/ScriptQuestReleaseTracker/hashset.c | 238 ++++++++ tools/ScriptQuestReleaseTracker/pcre3.dll | Bin 0 -> 140288 bytes tools/ScriptQuestReleaseTracker/quest_diff.c | 85 +++ tools/ScriptQuestReleaseTracker/quest_diff.h | 28 + tools/ScriptQuestReleaseTracker/quest_list.c | 85 +++ tools/ScriptQuestReleaseTracker/quest_list.h | 43 ++ .../script_tracker.c | 159 ++++++ tools/ScriptQuestReleaseTracker/strmap.c | 515 ++++++++++++++++++ tools/ScriptQuestReleaseTracker/strmap.h | 356 ++++++++++++ .../method_tracker.c | 74 +-- tools/ScriptStaticMethodTracker/script_path.h | 4 +- wz/Quest.wz/Act.img.xml | 9 + wz/Quest.wz/Check.img.xml | 89 ++- wz/Quest.wz/QuestInfo.img.xml | 2 +- wz/Quest.wz/Say.img.xml | 17 + 190 files changed, 3281 insertions(+), 1880 deletions(-) delete mode 100644 cores/jackson-annotations-2.9.9.jar delete mode 100644 cores/jackson-core-2.9.9.jar delete mode 100644 cores/jackson-databind-2.9.9.3.jar delete mode 100644 cores/jackson-dataformat-yaml-2.9.9.jar delete mode 100644 cores/snakeyaml-1.25.jar create mode 100644 cores/yamlbeans-1.13.jar create mode 100644 scripts/npc/2111011.js create mode 100644 scripts/npc/2111012.js create mode 100644 scripts/npc/2111016.js create mode 100644 scripts/quest/20020.js create mode 100644 scripts/quest/20514.js delete mode 100644 scripts/quest/2236.js delete mode 100644 scripts/quest/2251.js delete mode 100644 scripts/quest/3114.js delete mode 100644 scripts/quest/3311.js delete mode 100644 scripts/quest/3926.js delete mode 100644 scripts/quest/3927.js delete mode 100644 scripts/quest/3929.js delete mode 100644 scripts/quest/6410.js rename scripts/quest/3345.js => src/server/quest/actions/InfoAction.java (52%) create mode 100644 src/server/quest/requirements/InfoNumberRequirement.java rename scripts/quest/21728.js => src/tools/exceptions/EmptyMovementException.java (53%) create mode 100644 tools/ScriptQuestReleaseTracker/hashset.c create mode 100644 tools/ScriptQuestReleaseTracker/pcre3.dll create mode 100644 tools/ScriptQuestReleaseTracker/quest_diff.c create mode 100644 tools/ScriptQuestReleaseTracker/quest_diff.h create mode 100644 tools/ScriptQuestReleaseTracker/quest_list.c create mode 100644 tools/ScriptQuestReleaseTracker/quest_list.h create mode 100644 tools/ScriptQuestReleaseTracker/script_tracker.c create mode 100644 tools/ScriptQuestReleaseTracker/strmap.c create mode 100644 tools/ScriptQuestReleaseTracker/strmap.h diff --git a/config.yaml b/config.yaml index c288ae3795..314d719972 100644 --- a/config.yaml +++ b/config.yaml @@ -174,11 +174,11 @@ server: CHANNEL_LOAD: 100 #Max players per channel (limit actually used to calculate the World server capacity). CHANNEL_LOCKS: 20 #Total number of structure management locks each channel has. - RESPAWN_INTERVAL: 10000 #10 seconds, 10000. - PURGING_INTERVAL: 300000 #5 minutes, 300000. - RANKING_INTERVAL: 3600000 #60 minutes, 3600000. - COUPON_INTERVAL: 3600000 #60 minutes, 3600000. - UPDATE_INTERVAL: 777 #Dictates the frequency on which the "centralized server time" is updated. + RESPAWN_INTERVAL: 10000 #10 seconds, 10000. + PURGING_INTERVAL: 300000 #5 minutes, 300000. + RANKING_INTERVAL: 3600000 #60 minutes, 3600000. + COUPON_INTERVAL: 3600000 #60 minutes, 3600000. + UPDATE_INTERVAL: 777 #Dictates the frequency on which the "centralized server time" is updated. ENABLE_PIC: false #Pick true/false to enable or disable Pic. Delete character requires PIC available. ENABLE_PIN: false #Pick true/false to enable or disable Pin. diff --git a/cores/jackson-annotations-2.9.9.jar b/cores/jackson-annotations-2.9.9.jar deleted file mode 100644 index 8e059d9711b815b02a6968b893052d86d5a40816..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66897 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�x&^XH~czNsheg9c|+g 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 Qdj@|>H&aoa9KiqUe|D_X@&Et; diff --git a/cores/jackson-core-2.9.9.jar b/cores/jackson-core-2.9.9.jar deleted file mode 100644 index 02bd446ddfb024ea1f49a597984b306e39f661a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 325632 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

S8Skcl)~^xtA-B=7a4)Bc@Qqj;dOb8z55E8ilcR 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 H3G)8{^DH|O diff --git a/cores/jackson-databind-2.9.9.3.jar b/cores/jackson-databind-2.9.9.3.jar deleted file mode 100644 index 5bf4ba88d17e4b4885ff24c9904f392d314b1558..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1348389 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 z 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≫N_?(~?q#HkPeJTovK*)0 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

`g$J2%#-0iE!i~>6^7@^G=_0%*JKfknb+vEZzUi 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

=dCw;U8?J{>|93{TH_X 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°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 z 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 z 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 diff --git a/cores/jackson-dataformat-yaml-2.9.9.jar b/cores/jackson-dataformat-yaml-2.9.9.jar deleted file mode 100644 index 36829fc6f902eb9d3d619086381b1afbf1e1392c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42456 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 kXxyDmbH`RE&m3pE2Nov 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 Yg;8CZ9Q3e3X$Ai@f!)3W$q2;%03ndk+yDRo literal 0 HcmV?d00001 diff --git a/docs/mychanges_ptbr.txt b/docs/mychanges_ptbr.txt index 09e8877a9d..22b9a22d82 100644 --- a/docs/mychanges_ptbr.txt +++ b/docs/mychanges_ptbr.txt @@ -2143,4 +2143,41 @@ Adicionado checagem no uso de autopots ao usar HP/MP, limites são calculados ba 20 Setembro 2019, Adicionado update de macros ao usar SP reset. Refatorado vários pacotes Java contendo classes diversificadas. -Corrigido nomenclatura errônea de "worker" introduzida, querendo significar "task". \ No newline at end of file +Corrigido nomenclatura errônea de "worker" introduzida, querendo significar "task". + +21 - 24 Setembro 2019, +Corrigido ferramenta detectora de métodos estáticos não realizando varredura completa em arquivos, parando em casos onde um método estático é encontrado em cada. +Implementado ferramenta detectora de scripts de quest que estiveram sendo usados como paliativo. +Refatorado amplamente métodos que lidam com atribuição de progresso de quests. +Revisado uso de vários scripts de quest que estiveram sendo usados como paliativo. +Alterado declaração de "MapleCharacter c", considerado ambíguo à de MapleClient. +Revisado uso de progresso de quests feito pelos scripts, de forma a parear com o novo modelo. + +26 - 28 Setembro 2019, +Corrigido casos no novo modelo onde algumas quests utilizando informações de progresso não conseguiriam ser completadas. +Corrigido uso envio desnecessário de pacote ao atualizar progresso de quest causando popup inesperado de mensagens de quests para jogadores. +Corrigido alguns scripts não levando a atualização dos endereços dos pacotes alterados na última refatoração. +Corrigido script de quest de Magatia checando errado quantidade de livros adquiridos pelo jogador no progresso de quest. + +29 Setembro 2019, +Revisado Raise UI, agora utilizando o novo sistema de progressão. +Corrigido checagem por espaço no inventário, ao tentar ganhar itens via quest, não informando o jogador adequadamente sobre itens one-of-a-kind. +Corrigido uso de itens na Raise UI, quando não atualizando progresso algum (nenhum pacote enviado ao jogador), não permitindo jogador acesso a certos recursos (como Cash Shop/MTS). +Revisado aplicação geral do novo modelo de progressão de quests implementado. + +01 - 02 Outubro 2019, +Corrigido caso de exceção de modificação concorrente dentro de módulo de incremento de progresso de mob em quests. +Corrigido caixa de diálogo com conteúdo extra, ao terminar uma quest, não sendo enviada ao jogador. +Corrigido retransmissão de pacotes de movimentos com sequência vazia crashando outros jogadores. +Refatorado checagem por pacotes de movimentos com sequência vazia, agora atuando no módulo abstrato. +Corrigido progresso de mobs em quests não atualizando o infoex devidamente ao jogador, levando à falta do balão de "quest completa". +Corrigido quest de 1o job de Cygnus permitindo retornar para estado que tenta concluir quest, permitindo assim múltiplas instâncias de conclusão da mesma. +Adicionado scripting atuante ao abrir Raise UI, permitindo assim utilizar ações elaboradas, tais como EXP de combate para Mimiana. +Corrigido pets não sendo despawnados assim que se dá o tempo de expiração. +Corrigido jogadores com "hide" controlando mobs em certas situações. +Corrigido análise de alerta de HP/MP lado-servidor não contando com os atributos de HP/MP de equipamentos e buffs. + +03 Outubro 2019, +Corrigido skill "Energy Charge" levando atualização de buff ao tocar em mobs, levando a casos onde o buff nos stats poderia inesperadamente ficar retido além do tempo de atuação previsto. +Substituído utilização de "Jackson annotations + SnakeYaml" por "YamlBeans", utilizando-se assim menos artefatos JARs no processo (anteriormente 5, agora somente 1). Nota: na transição, fora constatado que a utilização da tecnologia anterior era mais permissiva perante o arquivo de configurações, porém estrutura do novo arquivo foi normalizado e está agora funcional. +Refatorado inicialização de eventos ao iniciar o servidor, em busca de melhorar o tempo de startup. \ No newline at end of file diff --git a/nbproject/project.properties b/nbproject/project.properties index 0f9bb87365..4188fc88d4 100644 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -29,16 +29,12 @@ dist.javadoc.dir=${dist.dir}/javadoc endorsed.classpath= excludes= file.reference.HikariCP-java7-2.4.13.jar=cores/HikariCP-java7-2.4.13.jar -file.reference.jackson-annotations-2.9.9.jar=cores/jackson-annotations-2.9.9.jar -file.reference.jackson-core-2.9.9.jar=cores/jackson-core-2.9.9.jar -file.reference.jackson-databind-2.9.9.3.jar=cores/jackson-databind-2.9.9.3.jar -file.reference.jackson-dataformat-yaml-2.9.9.jar=cores/jackson-dataformat-yaml-2.9.9.jar file.reference.MapleSolaxia-src=src file.reference.mina-core-2.0.19.jar=cores/mina-core-2.0.19.jar file.reference.mysql-connector-java-bin.jar=cores/mysql-connector-java-bin.jar file.reference.slf4j-api-1.7.21.jar=cores/slf4j-api-1.7.21.jar file.reference.slf4j-jdk14-1.7.5.jar=cores/slf4j-jdk14-1.7.5.jar -file.reference.snakeyaml-1.25.jar=cores/snakeyaml-1.25.jar +file.reference.yamlbeans-1.13.jar=cores/yamlbeans-1.13.jar includes=** jar.archive.disabled=${jnlp.enabled} jar.compress=true @@ -49,11 +45,7 @@ javac.classpath=\ ${file.reference.HikariCP-java7-2.4.13.jar}:\ ${file.reference.mysql-connector-java-bin.jar}:\ ${file.reference.slf4j-jdk14-1.7.5.jar}:\ - ${file.reference.jackson-annotations-2.9.9.jar}:\ - ${file.reference.jackson-core-2.9.9.jar}:\ - ${file.reference.jackson-databind-2.9.9.3.jar}:\ - ${file.reference.jackson-dataformat-yaml-2.9.9.jar}:\ - ${file.reference.snakeyaml-1.25.jar} + ${file.reference.yamlbeans-1.13.jar} # Space-separated list of extra javac options javac.compilerargs= javac.deprecation=false diff --git a/scripts/event/BalrogBattle.js b/scripts/event/BalrogBattle.js index 499d793ec3..33c7422eab 100644 --- a/scripts/event/BalrogBattle.js +++ b/scripts/event/BalrogBattle.js @@ -244,8 +244,8 @@ function monsterKilled(mob, eim) { eim.showClearEffect(); eim.clearPQ(); - eim.dispatchUpdateQuestMobCount(bossMobId, entryMap); - eim.dispatchUpdateQuestMobCount(9101003, entryMap); // thanks Atoot for noticing quest not getting updated after boss kill + eim.dispatchRaiseQuestMobCount(bossMobId, entryMap); + eim.dispatchRaiseQuestMobCount(9101003, entryMap); // thanks Atoot for noticing quest not getting updated after boss kill mob.getMap().broadcastBalrogVictory(eim.getLeader().getName()); } else { if(count == 1) { diff --git a/scripts/event/BalrogBattle_Easy.js b/scripts/event/BalrogBattle_Easy.js index 031c31d859..a2b6c03f14 100644 --- a/scripts/event/BalrogBattle_Easy.js +++ b/scripts/event/BalrogBattle_Easy.js @@ -244,7 +244,7 @@ function monsterKilled(mob, eim) { eim.showClearEffect(); eim.clearPQ(); - eim.dispatchUpdateQuestMobCount(bossMobId, entryMap); + eim.dispatchRaiseQuestMobCount(bossMobId, entryMap); mob.getMap().broadcastBalrogVictory(eim.getLeader().getName()); } else { if(count == 1) { diff --git a/scripts/event/HorntailBattle.js b/scripts/event/HorntailBattle.js index f31c2cdb06..433d236241 100644 --- a/scripts/event/HorntailBattle.js +++ b/scripts/event/HorntailBattle.js @@ -214,7 +214,7 @@ function monsterKilled(mob, eim) { eim.showClearEffect(mob.getMap().getId()); eim.clearPQ(); - eim.dispatchUpdateQuestMobCount(8810018, 240060200); + eim.dispatchRaiseQuestMobCount(8810018, 240060200); mob.getMap().broadcastHorntailVictory(); } else if(isHorntailHead(mob)) { var killed = eim.getIntProperty("defeatedHead"); diff --git a/scripts/event/MK_PrimeMinister.js b/scripts/event/MK_PrimeMinister.js index d29be7e5ed..0ef72ad21d 100644 --- a/scripts/event/MK_PrimeMinister.js +++ b/scripts/event/MK_PrimeMinister.js @@ -52,7 +52,7 @@ function primeMinisterCheck(eim) { var pIter = map.getAllPlayers().iterator(); while (pIter.hasNext()) { var player = pIter.next(); - if (player.getQuestStatus(2333) == 1 && player.getAbstractPlayerInteraction().getQuestProgress(2333, mobId) == 0) { + if (player.getQuestStatus(2333) == 1 && player.getAbstractPlayerInteraction().getQuestProgressInt(2333, mobId) == 0) { return true; } } diff --git a/scripts/map/onUserEnter/130030000.js b/scripts/map/onUserEnter/130030000.js index 1d94337e2e..f789e5ab3b 100644 --- a/scripts/map/onUserEnter/130030000.js +++ b/scripts/map/onUserEnter/130030000.js @@ -21,5 +21,5 @@ */ function start(ms) { - ms.getPlayer().updateQuestInfo(20010, "1"); + ms.setQuestProgress(20010, 20022, 1); } \ No newline at end of file diff --git a/scripts/map/onUserEnter/130030001.js b/scripts/map/onUserEnter/130030001.js index 1d94337e2e..f789e5ab3b 100644 --- a/scripts/map/onUserEnter/130030001.js +++ b/scripts/map/onUserEnter/130030001.js @@ -21,5 +21,5 @@ */ function start(ms) { - ms.getPlayer().updateQuestInfo(20010, "1"); + ms.setQuestProgress(20010, 20022, 1); } \ No newline at end of file diff --git a/scripts/map/onUserEnter/910510000.js b/scripts/map/onUserEnter/910510000.js index c489ca085b..51e18daa4b 100644 --- a/scripts/map/onUserEnter/910510000.js +++ b/scripts/map/onUserEnter/910510000.js @@ -5,11 +5,11 @@ function start(ms){ var map = player.getMap(); if(player.isCygnus()) { - if(ms.isQuestStarted(20730) && ms.getQuestProgress(20730, 9300285) == 0) { + if(ms.isQuestStarted(20730) && ms.getQuestProgressInt(20730, 9300285) == 0) { map.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(9300285), new java.awt.Point(680, 258)); } } else { - if(ms.isQuestStarted(21731) && ms.getQuestProgress(21731, 9300344) == 0) { + if(ms.isQuestStarted(21731) && ms.getQuestProgressInt(21731, 9300344) == 0) { map.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(9300344), new java.awt.Point(680, 258)); } } diff --git a/scripts/map/onUserEnter/914000100.js b/scripts/map/onUserEnter/914000100.js index 6ec1755650..108f8c451c 100644 --- a/scripts/map/onUserEnter/914000100.js +++ b/scripts/map/onUserEnter/914000100.js @@ -21,5 +21,5 @@ */ function start(ms) { - ms.getPlayer().updateQuestInfo(21000, "1"); + ms.setQuestProgress(21000, 21002, 1); } \ No newline at end of file diff --git a/scripts/map/onUserEnter/925040100.js b/scripts/map/onUserEnter/925040100.js index 14f9c3dce8..738b9c75ac 100644 --- a/scripts/map/onUserEnter/925040100.js +++ b/scripts/map/onUserEnter/925040100.js @@ -4,7 +4,7 @@ function start(ms){ var player = ms.getPlayer(); var map = player.getMap(); - if(ms.isQuestStarted(21747) && ms.getQuestProgress(21747, 9300351) == 0) { + if(ms.isQuestStarted(21747) && ms.getQuestProgressInt(21747, 9300351) == 0) { map.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(9300351), new java.awt.Point(897, 51)); } } \ No newline at end of file diff --git a/scripts/npc/1012100.js b/scripts/npc/1012100.js index abebcb671a..5d44d1e5f1 100644 --- a/scripts/npc/1012100.js +++ b/scripts/npc/1012100.js @@ -34,7 +34,7 @@ spawnPnpcFee = 7000000; jobType = 3; function start() { - if (parseInt(cm.getJobId() / 100) == jobType && cm.canSpawnPlayerNpc(Packages.constants.GameConstants.getHallOfFameMapid(cm.getJob()))) { + if (parseInt(cm.getJobId() / 100) == jobType && cm.canSpawnPlayerNpc(Packages.constants.game.GameConstants.getHallOfFameMapid(cm.getJob()))) { spawnPnpc = true; var sendStr = "You have walked a long way to reach the power, wisdom and courage you hold today, haven't you? What do you say about having right now #ra NPC on the Hall of Fame holding the current image of your character#k? Do you like it?"; @@ -93,7 +93,7 @@ function action(mode, type, selection) { return; } - if(Packages.server.life.MaplePlayerNPC.spawnPlayerNPC(Packages.constants.GameConstants.getHallOfFameMapid(cm.getJob()), cm.getPlayer())) { + if(Packages.server.life.MaplePlayerNPC.spawnPlayerNPC(Packages.constants.game.GameConstants.getHallOfFameMapid(cm.getJob()), cm.getPlayer())) { cm.sendOk("There you go! Hope you will like it."); cm.gainMeso(-spawnPnpcFee); } else { diff --git a/scripts/npc/1022000.js b/scripts/npc/1022000.js index 4d4aaeae59..ccea9025d8 100644 --- a/scripts/npc/1022000.js +++ b/scripts/npc/1022000.js @@ -35,7 +35,7 @@ spawnPnpcFee = 7000000; jobType = 1; function start() { - if (parseInt(cm.getJobId() / 100) == jobType && cm.canSpawnPlayerNpc(Packages.constants.GameConstants.getHallOfFameMapid(cm.getJob()))) { + if (parseInt(cm.getJobId() / 100) == jobType && cm.canSpawnPlayerNpc(Packages.constants.game.GameConstants.getHallOfFameMapid(cm.getJob()))) { spawnPnpc = true; var sendStr = "You have walked a long way to reach the power, wisdom and courage you hold today, haven't you? What do you say about having right now #ra NPC on the Hall of Fame holding the current image of your character#k? Do you like it?"; @@ -94,7 +94,7 @@ function action(mode, type, selection) { return; } - if(Packages.server.life.MaplePlayerNPC.spawnPlayerNPC(Packages.constants.GameConstants.getHallOfFameMapid(cm.getJob()), cm.getPlayer())) { + if(Packages.server.life.MaplePlayerNPC.spawnPlayerNPC(Packages.constants.game.GameConstants.getHallOfFameMapid(cm.getJob()), cm.getPlayer())) { cm.sendOk("There you go! Hope you will like it."); cm.gainMeso(-spawnPnpcFee); } else { diff --git a/scripts/npc/1032001.js b/scripts/npc/1032001.js index 98bb35d84a..c10656286c 100644 --- a/scripts/npc/1032001.js +++ b/scripts/npc/1032001.js @@ -35,7 +35,7 @@ spawnPnpcFee = 7000000; jobType = 2; function start() { - if (parseInt(cm.getJobId() / 100) == jobType && cm.canSpawnPlayerNpc(Packages.constants.GameConstants.getHallOfFameMapid(cm.getJob()))) { + if (parseInt(cm.getJobId() / 100) == jobType && cm.canSpawnPlayerNpc(Packages.constants.game.GameConstants.getHallOfFameMapid(cm.getJob()))) { spawnPnpc = true; var sendStr = "You have walked a long way to reach the power, wisdom and courage you hold today, haven't you? What do you say about having right now #ra NPC on the Hall of Fame holding the current image of your character#k? Do you like it?"; @@ -94,7 +94,7 @@ function action(mode, type, selection) { return; } - if(Packages.server.life.MaplePlayerNPC.spawnPlayerNPC(Packages.constants.GameConstants.getHallOfFameMapid(cm.getJob()), cm.getPlayer())) { + if(Packages.server.life.MaplePlayerNPC.spawnPlayerNPC(Packages.constants.game.GameConstants.getHallOfFameMapid(cm.getJob()), cm.getPlayer())) { cm.sendOk("There you go! Hope you will like it."); cm.gainMeso(-spawnPnpcFee); } else { diff --git a/scripts/npc/1052001.js b/scripts/npc/1052001.js index a9ae74c161..9ab5b9f37d 100644 --- a/scripts/npc/1052001.js +++ b/scripts/npc/1052001.js @@ -34,7 +34,7 @@ spawnPnpcFee = 7000000; jobType = 4; function start() { - if (parseInt(cm.getJobId() / 100) == jobType && cm.canSpawnPlayerNpc(Packages.constants.GameConstants.getHallOfFameMapid(cm.getJob()))) { + if (parseInt(cm.getJobId() / 100) == jobType && cm.canSpawnPlayerNpc(Packages.constants.game.GameConstants.getHallOfFameMapid(cm.getJob()))) { spawnPnpc = true; var sendStr = "You have walked a long way to reach the power, wisdom and courage you hold today, haven't you? What do you say about having right now #ra NPC on the Hall of Fame holding the current image of your character#k? Do you like it?"; @@ -95,7 +95,7 @@ function action(mode, type, selection) { return; } - if(Packages.server.life.MaplePlayerNPC.spawnPlayerNPC(Packages.constants.GameConstants.getHallOfFameMapid(cm.getJob()), cm.getPlayer())) { + if(Packages.server.life.MaplePlayerNPC.spawnPlayerNPC(Packages.constants.game.GameConstants.getHallOfFameMapid(cm.getJob()), cm.getPlayer())) { cm.sendOk("There you go! Hope you will like it."); cm.gainMeso(-spawnPnpcFee); } else { diff --git a/scripts/npc/1063012.js b/scripts/npc/1063012.js index 54b0167de3..282cc42fe0 100644 --- a/scripts/npc/1063012.js +++ b/scripts/npc/1063012.js @@ -22,11 +22,11 @@ var status = -1; function activateShamanRock(slot,progress) { - var active = (progress >> slot) % 2; - if(!active) { - progress |= (1 << slot); + var ch = progress[slot]; + if(ch == '0') { + var nextProgress = progress.substr(0, slot) + '1' + progress.substr(slot + 1); - cm.updateQuest(2236, progress); + cm.setQuestProgress(2236, nextProgress); cm.gainItem(4032263, -1); cm.sendOk("The seal took it's place, repelling the evil in the area."); return 1; @@ -45,7 +45,11 @@ function start() { else if(map == 105070000) activateShamanRock(2,progress); else if(map == 105090000) { // workaround... TWO SAME NPC ID ON SAME MAP - if(!activateShamanRock(3,progress)) { + var npcOid = cm.getQuestProgressInt(2236, 1); + if (npcOid == 0) { + activateShamanRock(3,progress); + cm.setQuestProgress(2236, 1, cm.getNpcObjectId()); + } else if (cm.getNpcObjectId() != npcOid) { activateShamanRock(4,progress); } } diff --git a/scripts/npc/1063013.js b/scripts/npc/1063013.js index 54b0167de3..282cc42fe0 100644 --- a/scripts/npc/1063013.js +++ b/scripts/npc/1063013.js @@ -22,11 +22,11 @@ var status = -1; function activateShamanRock(slot,progress) { - var active = (progress >> slot) % 2; - if(!active) { - progress |= (1 << slot); + var ch = progress[slot]; + if(ch == '0') { + var nextProgress = progress.substr(0, slot) + '1' + progress.substr(slot + 1); - cm.updateQuest(2236, progress); + cm.setQuestProgress(2236, nextProgress); cm.gainItem(4032263, -1); cm.sendOk("The seal took it's place, repelling the evil in the area."); return 1; @@ -45,7 +45,11 @@ function start() { else if(map == 105070000) activateShamanRock(2,progress); else if(map == 105090000) { // workaround... TWO SAME NPC ID ON SAME MAP - if(!activateShamanRock(3,progress)) { + var npcOid = cm.getQuestProgressInt(2236, 1); + if (npcOid == 0) { + activateShamanRock(3,progress); + cm.setQuestProgress(2236, 1, cm.getNpcObjectId()); + } else if (cm.getNpcObjectId() != npcOid) { activateShamanRock(4,progress); } } diff --git a/scripts/npc/1090000.js b/scripts/npc/1090000.js index a15d3b3a3d..2255ae3b3c 100644 --- a/scripts/npc/1090000.js +++ b/scripts/npc/1090000.js @@ -39,8 +39,7 @@ function start() { if (cm.getEventInstance() != null) { // missing script for skill test found thanks to Lost(tm) advQuest = 5; // string visibility thanks to iPunchEm & Glvelturall cm.sendNext("Not bad at all. Let's discuss this outside!"); - cm.setQuestProgress(6330, 0, 1); - } else if (cm.getQuestProgress(6330, 0) == 0) { + } else if (cm.getQuestProgressInt(6330, 6331) == 0) { advQuest = 1; cm.sendNext("You're ready, right? Now try to withstand my attacks for 2 minutes. I won't go easy on you. Good luck, because you will need it."); } else { @@ -54,8 +53,7 @@ function start() { if (cm.getEventInstance() != null) { advQuest = 6; cm.sendNext("Not bad at all. Let's discuss this outside!"); - cm.setQuestProgress(6370, 0, 1); - } else if (cm.getQuestProgress(6370, 0) == 0) { + } else if (cm.getQuestProgressInt(6370, 6371) == 0) { advQuest = 2; cm.sendNext("You're ready, right? Now try to withstand my attacks for 2 minutes. I won't go easy on you. Good luck, because you will need it."); } else { @@ -65,7 +63,7 @@ function start() { cm.sendNext("Congratulations. You have managed to pass my test. I'll teach you a new skill called \"Battleship\".\r\n\r\n #s5221006# #b#q5221006##k"); } - } else if (parseInt(cm.getJobId() / 100) == jobType && cm.canSpawnPlayerNpc(Packages.constants.GameConstants.getHallOfFameMapid(cm.getJob()))) { + } else if (parseInt(cm.getJobId() / 100) == jobType && cm.canSpawnPlayerNpc(Packages.constants.game.GameConstants.getHallOfFameMapid(cm.getJob()))) { spawnPnpc = true; var sendStr = "You have walked a long way to reach the power, wisdom and courage you hold today, haven't you? What do you say about having right now #ra NPC on the Hall of Fame holding the current image of your character#k? Do you like it?"; @@ -126,6 +124,12 @@ function action(mode, type, selection) { cm.sendOk("Unlike most of the other skills you used as a Pirate, this one definitely is different. You can actually ride the 'Battleship' and attack enemies with it. Your DEF level will increase for the time you're on board, so that'll help you tremendously in combat situations. May you become the best Gunslinger out there..."); } } else { + if (advQuest < 6) { + cm.setQuestProgress(6330, 6331, 2); + } else { + cm.setQuestProgress(6370, 6371, 2); + } + cm.warp(120000101); } @@ -138,7 +142,7 @@ function action(mode, type, selection) { return; } - if(Packages.server.life.MaplePlayerNPC.spawnPlayerNPC(Packages.constants.GameConstants.getHallOfFameMapid(cm.getJob()), cm.getPlayer())) { + if(Packages.server.life.MaplePlayerNPC.spawnPlayerNPC(Packages.constants.game.GameConstants.getHallOfFameMapid(cm.getJob()), cm.getPlayer())) { cm.sendOk("There you go! Hope you will like it."); cm.gainMeso(-spawnPnpcFee); } else { diff --git a/scripts/npc/1092019.js b/scripts/npc/1092019.js index f0152d9b94..ecc9910a71 100644 --- a/scripts/npc/1092019.js +++ b/scripts/npc/1092019.js @@ -64,7 +64,7 @@ function action(mode, type, selection) { cm.sendOk("Who are you talking to me? If you're just bored, go bother somebody else."); cm.dispose(); } else { - seagullProgress = cm.getQuestProgress(6400, 0); + seagullProgress = cm.getQuestProgressInt(6400, 1); if (seagullProgress == 0) { seagullIdx = Math.floor(Math.random() * seagullQuestion.length); @@ -90,7 +90,7 @@ function action(mode, type, selection) { var answer = cm.getText(); if (answer == seagullAnswer[seagullIdx]) { cm.sendNext("What! I can't believe how incredibly smart you are! Incredible! In the seagull world, that kind of intellingence would give you a Ph.D. and then some. You're really amazing... I can't believe it... I simply can't believe it!"); - cm.setQuestProgress(6400, 0, 1); + cm.setQuestProgress(6400, 1, 1); cm.dispose(); } else { cm.sendOk("Hmm, that's not quite how I recall it. Try again!"); @@ -99,9 +99,11 @@ function action(mode, type, selection) { } else if (seagullProgress != 2) { cm.sendNextPrev("Anyway, only one of 9 Barts is the real Bart. You know that Pirates are known for the strength of their friendships and camaraderie with their fellow pirates. If you're a true pirate, you should be able to find your own mate with ease. Alright then, I'll send you to the room where Bart is."); } else { - cm.gainExp(1000000); - cm.teachSkill(5221003, 0, 10, -1); - cm.forceCompleteQuest(6400); + //cm.gainExp(1000000); + //cm.teachSkill(5221003, 0, 10, -1); + //cm.forceCompleteQuest(6400); + + cm.sendNextPrev("You have met all my challenges, and passed! Good job!"); cm.dispose(); } } else if (status == 3) { diff --git a/scripts/npc/1092090.js b/scripts/npc/1092090.js index 2dac576325..6b1cde8950 100644 --- a/scripts/npc/1092090.js +++ b/scripts/npc/1092090.js @@ -21,7 +21,7 @@ */ function start() { - if(cm.getQuestProgress(2180, 0) == 1) { + if(cm.getQuestProgressInt(2180, 1) == 1) { cm.sendNext("You have taken milk from this cow recently, check another cow."); cm.dispose(); return; @@ -32,19 +32,19 @@ function start() { cm.gainItem(4031847, -1); cm.gainItem(4031848, 1); - cm.setQuestProgress(2180, 0, 1); + cm.setQuestProgress(2180, 1, 1); } else if (cm.canHold(4031849, 1) && cm.haveItem(4031848)) { cm.sendNext("Now filling up the bottle with milk. The bottle is now 2/3 full of milk."); cm.gainItem(4031848, -1); cm.gainItem(4031849, 1); - cm.setQuestProgress(2180, 0, 1); + cm.setQuestProgress(2180, 1, 1); } else if (cm.canHold(4031850) && cm.haveItem(4031849)) { cm.sendNext("Now filling up the bottle with milk. The bottle is now completely full of milk."); cm.gainItem(4031849, -1); cm.gainItem(4031850, 1); - cm.setQuestProgress(2180, 0, 1); + cm.setQuestProgress(2180, 1, 1); } else { cm.sendNext("Your inventory is full, and there's no room for a milk bottle."); } diff --git a/scripts/npc/1092091.js b/scripts/npc/1092091.js index 5d5db97d54..ec40aff0a8 100644 --- a/scripts/npc/1092091.js +++ b/scripts/npc/1092091.js @@ -21,7 +21,7 @@ */ function start() { - if(cm.getQuestProgress(2180, 0) == 2) { + if(cm.getQuestProgressInt(2180, 1) == 2) { cm.sendNext("You have taken milk from this cow recently, check another cow."); cm.dispose(); return; @@ -32,19 +32,19 @@ function start() { cm.gainItem(4031847, -1); cm.gainItem(4031848, 1); - cm.setQuestProgress(2180, 0, 2); + cm.setQuestProgress(2180, 1, 2); } else if(cm.canHold(4031849) && cm.haveItem(4031848)){ cm.sendNext("Now filling up the bottle with milk. The bottle is now 2/3 full of milk."); cm.gainItem(4031848, -1); cm.gainItem(4031849, 1); - cm.setQuestProgress(2180, 0, 2); + cm.setQuestProgress(2180, 1, 2); } else if(cm.canHold(4031850) && cm.haveItem(4031849)){ cm.sendNext("Now filling up the bottle with milk. The bottle is now completely full of milk."); cm.gainItem(4031849, -1); cm.gainItem(4031850, 1); - cm.setQuestProgress(2180, 0, 2); + cm.setQuestProgress(2180, 1, 2); } else { cm.sendNext("Your inventory is full, and there's no room for a milk bottle."); } diff --git a/scripts/npc/1101001.js b/scripts/npc/1101001.js index e08c21fb28..138d871853 100644 --- a/scripts/npc/1101001.js +++ b/scripts/npc/1101001.js @@ -3,7 +3,7 @@ Map(s): Erev Description: 3rd job KoC Buff */ -importPackage(Packages.constants); +importPackage(Packages.constants.game); function start() { if (cm.getPlayer().isCygnus() && GameConstants.getJobBranch(cm.getJob()) > 2) { diff --git a/scripts/npc/1102003.js b/scripts/npc/1102003.js index 0433223b51..cdeacbd9e7 100644 --- a/scripts/npc/1102003.js +++ b/scripts/npc/1102003.js @@ -31,7 +31,7 @@ var maxJobType = 15; function start() { var jobType = parseInt(cm.getJobId() / 100); - if (jobType >= minJobType && jobType <= maxJobType && cm.canSpawnPlayerNpc(Packages.constants.GameConstants.getHallOfFameMapid(cm.getJob()))) { + if (jobType >= minJobType && jobType <= maxJobType && cm.canSpawnPlayerNpc(Packages.constants.game.GameConstants.getHallOfFameMapid(cm.getJob()))) { spawnPnpc = true; var sendStr = "You have walked a long way to reach the power, wisdom and courage you hold today, haven't you? What do you say about having right now #ra NPC on the Hall of Fame holding the current image of your character#k? Do you like it?"; @@ -62,7 +62,7 @@ function action(mode, type, selection) { return; } - if(Packages.server.life.MaplePlayerNPC.spawnPlayerNPC(Packages.constants.GameConstants.getHallOfFameMapid(cm.getJob()), cm.getPlayer())) { + if(Packages.server.life.MaplePlayerNPC.spawnPlayerNPC(Packages.constants.game.GameConstants.getHallOfFameMapid(cm.getJob()), cm.getPlayer())) { cm.sendOk("There you go! Hope you will like it."); cm.gainMeso(-spawnPnpcFee); } else { diff --git a/scripts/npc/1104201.js b/scripts/npc/1104201.js index 38b68df694..5a993b03bc 100644 --- a/scripts/npc/1104201.js +++ b/scripts/npc/1104201.js @@ -39,7 +39,7 @@ function action(mode, type, selection) { status--; if(status == 0) { - if (!(cm.isQuestCompleted(20407) || cm.isQuestStarted(20407) && cm.getQuestProgress(20407, 9001010) != 0) && cm.getMap().countMonster(9001010) == 0 && cm.getMap().getNPCById(1104002) == null) { + if (!(cm.isQuestCompleted(20407) || cm.isQuestStarted(20407) && cm.getQuestProgressInt(20407, 9001010) != 0) && cm.getMap().countMonster(9001010) == 0 && cm.getMap().getNPCById(1104002) == null) { cm.sendOk("... Hnngh... #b#h0##k, is that you...? #r#p1104002##k... She's already here... #b#h0##k, I'm truly sorry I can't help you right now in this state, just when a bigger threat appeared I could do nothing for my people.... Please I beg you, please defeat her, #b#h0##k!! ...."); cm.spawnNpc(1104002, new java.awt.Point(850, 0), cm.getMap()); } else { diff --git a/scripts/npc/1202010.js b/scripts/npc/1202010.js index da06e68e88..0978526cdf 100644 --- a/scripts/npc/1202010.js +++ b/scripts/npc/1202010.js @@ -5,7 +5,7 @@ var spawnPnpcFee = 7000000; var jobType = 21; function start() { - if (parseInt(cm.getJobId() / 100) == jobType && cm.canSpawnPlayerNpc(Packages.constants.GameConstants.getHallOfFameMapid(cm.getJob()))) { + if (parseInt(cm.getJobId() / 100) == jobType && cm.canSpawnPlayerNpc(Packages.constants.game.GameConstants.getHallOfFameMapid(cm.getJob()))) { spawnPnpc = true; var sendStr = "You have walked a long way to reach the power, wisdom and courage you hold today, haven't you? What do you say about having right now #ra NPC on the Hall of Fame holding the current image of your character#k? Do you like it?"; @@ -36,7 +36,7 @@ function action(mode, type, selection) { return; } - if(Packages.server.life.MaplePlayerNPC.spawnPlayerNPC(Packages.constants.GameConstants.getHallOfFameMapid(cm.getJob()), cm.getPlayer())) { + if(Packages.server.life.MaplePlayerNPC.spawnPlayerNPC(Packages.constants.game.GameConstants.getHallOfFameMapid(cm.getJob()), cm.getPlayer())) { cm.sendOk("There you go! Hope you will like it."); cm.gainMeso(-spawnPnpcFee); } else { diff --git a/scripts/npc/1209000.js b/scripts/npc/1209000.js index 29b94792ff..1856337261 100644 --- a/scripts/npc/1209000.js +++ b/scripts/npc/1209000.js @@ -46,7 +46,7 @@ function action(mode, type, selection) { } else if (status == 2) { cm.sendNext("The other heroes? They've left to fight the Black Mage. They're buying us time to escape. What? You want to fight with them? No! You can't! You're hurt. You must leave with us!"); } else if (status == 3) { - cm.updateQuest(21002, "1"); + //cm.setQuestProgress(21002, 1); cm.showIntro("Effect/Direction1.img/aranTutorial/Trio"); cm.dispose(); } diff --git a/scripts/npc/1300013.js b/scripts/npc/1300013.js index 29bd5ec7c8..56a7be723b 100644 --- a/scripts/npc/1300013.js +++ b/scripts/npc/1300013.js @@ -62,7 +62,7 @@ function action(mode, type, selection){ } } } else { - var questProgress = cm.getQuestProgress(2330, 3300005) + cm.getQuestProgress(2330, 3300006) + cm.getQuestProgress(2330, 3300007); //3 Yetis + var questProgress = cm.getQuestProgressInt(2330, 3300005) + cm.getQuestProgressInt(2330, 3300006) + cm.getQuestProgressInt(2330, 3300007); //3 Yetis if (!(cm.isQuestStarted(2330) && questProgress < 3)) { // thanks Vcoc for finding an exploit with boss entry through NPC cm.dispose(); return; diff --git a/scripts/npc/2012027.js b/scripts/npc/2012027.js index 7c43a161ba..84081ee49c 100644 --- a/scripts/npc/2012027.js +++ b/scripts/npc/2012027.js @@ -50,13 +50,13 @@ function action(mode, type, selection) { cm.getMap().broadcastMessage(MaplePacketCreator.playSound("orbis/" + harpSounds[cm.getNpc() - 2012027])); if(cm.isQuestStarted(3114)) { - var idx = cm.getQuestProgress(3114, 7777); + var idx = -1 * cm.getQuestProgressInt(3114); // infoEx without infoNumber, must use one progress only, critical hit! - if(idx != -1) { + if(idx > -1) { var nextNote = harpSong[idx]; if(harpNote != nextNote) { - cm.setQuestProgress(3114, 7777, 0); + cm.setQuestProgress(3114, 0); cm.getPlayer().announce(MaplePacketCreator.showEffect("quest/party/wrong_kor")); cm.getPlayer().announce(MaplePacketCreator.playSound("Party1/Failed")); @@ -70,7 +70,7 @@ function action(mode, type, selection) { if(idx == 45) { // finished lullaby cm.message("Twinkle, twinkle, little star, how I wonder what you are."); - cm.setQuestProgress(3114, 7777, -1); + cm.setQuestProgress(3114, 42); cm.getPlayer().announce(MaplePacketCreator.showEffect("quest/party/clear")); cm.getPlayer().announce(MaplePacketCreator.playSound("Party1/Clear")); @@ -88,7 +88,7 @@ function action(mode, type, selection) { } } - cm.setQuestProgress(3114, 7777, idx + 1); + cm.setQuestProgress(3114, -1 * (idx + 1)); } } } diff --git a/scripts/npc/2012028.js b/scripts/npc/2012028.js index 90e0006589..800c32ada3 100644 --- a/scripts/npc/2012028.js +++ b/scripts/npc/2012028.js @@ -50,13 +50,13 @@ function action(mode, type, selection) { cm.getMap().broadcastMessage(MaplePacketCreator.playSound("orbis/" + harpSounds[cm.getNpc() - 2012027])); if(cm.isQuestStarted(3114)) { - var idx = cm.getQuestProgress(3114, 7777); + var idx = -1 * cm.getQuestProgressInt(3114); - if(idx != -1) { + if(idx > -1) { var nextNote = harpSong[idx]; if(harpNote != nextNote) { - cm.setQuestProgress(3114, 7777, 0); + cm.setQuestProgress(3114, 0); cm.getPlayer().announce(MaplePacketCreator.showEffect("quest/party/wrong_kor")); cm.getPlayer().announce(MaplePacketCreator.playSound("Party1/Failed")); @@ -70,7 +70,7 @@ function action(mode, type, selection) { if(idx == 45) { // finished lullaby cm.message("Twinkle, twinkle, little star, how I wonder what you are."); - cm.setQuestProgress(3114, 7777, -1); + cm.setQuestProgress(3114, 42); cm.getPlayer().announce(MaplePacketCreator.showEffect("quest/party/clear")); cm.getPlayer().announce(MaplePacketCreator.playSound("Party1/Clear")); @@ -88,7 +88,7 @@ function action(mode, type, selection) { } } - cm.setQuestProgress(3114, 7777, idx + 1); + cm.setQuestProgress(3114, -1 * (idx + 1)); } } } diff --git a/scripts/npc/2012029.js b/scripts/npc/2012029.js index 41b10d0867..a21b84d4e7 100644 --- a/scripts/npc/2012029.js +++ b/scripts/npc/2012029.js @@ -50,13 +50,13 @@ function action(mode, type, selection) { cm.getMap().broadcastMessage(MaplePacketCreator.playSound("orbis/" + harpSounds[cm.getNpc() - 2012027])); if(cm.isQuestStarted(3114)) { - var idx = cm.getQuestProgress(3114, 7777); + var idx = -1 * cm.getQuestProgressInt(3114); - if(idx != -1) { + if(idx > -1) { var nextNote = harpSong[idx]; if(harpNote != nextNote) { - cm.setQuestProgress(3114, 7777, 0); + cm.setQuestProgress(3114, 0); cm.getPlayer().announce(MaplePacketCreator.showEffect("quest/party/wrong_kor")); cm.getPlayer().announce(MaplePacketCreator.playSound("Party1/Failed")); @@ -70,7 +70,7 @@ function action(mode, type, selection) { if(idx == 45) { // finished lullaby cm.message("Twinkle, twinkle, little star, how I wonder what you are."); - cm.setQuestProgress(3114, 7777, -1); + cm.setQuestProgress(3114, 42); cm.getPlayer().announce(MaplePacketCreator.showEffect("quest/party/clear")); cm.getPlayer().announce(MaplePacketCreator.playSound("Party1/Clear")); @@ -88,7 +88,7 @@ function action(mode, type, selection) { } } - cm.setQuestProgress(3114, 7777, idx + 1); + cm.setQuestProgress(3114, -1 * (idx + 1)); } } } diff --git a/scripts/npc/2012030.js b/scripts/npc/2012030.js index 3e9dfb80e9..e421c02582 100644 --- a/scripts/npc/2012030.js +++ b/scripts/npc/2012030.js @@ -50,13 +50,13 @@ function action(mode, type, selection) { cm.getMap().broadcastMessage(MaplePacketCreator.playSound("orbis/" + harpSounds[cm.getNpc() - 2012027])); if(cm.isQuestStarted(3114)) { - var idx = cm.getQuestProgress(3114, 7777); + var idx = -1 * cm.getQuestProgressInt(3114); - if(idx != -1) { + if(idx > -1) { var nextNote = harpSong[idx]; if(harpNote != nextNote) { - cm.setQuestProgress(3114, 7777, 0); + cm.setQuestProgress(3114, 0); cm.getPlayer().announce(MaplePacketCreator.showEffect("quest/party/wrong_kor")); cm.getPlayer().announce(MaplePacketCreator.playSound("Party1/Failed")); @@ -70,7 +70,7 @@ function action(mode, type, selection) { if(idx == 45) { // finished lullaby cm.message("Twinkle, twinkle, little star, how I wonder what you are."); - cm.setQuestProgress(3114, 7777, -1); + cm.setQuestProgress(3114, 42); cm.getPlayer().announce(MaplePacketCreator.showEffect("quest/party/clear")); cm.getPlayer().announce(MaplePacketCreator.playSound("Party1/Clear")); @@ -88,7 +88,7 @@ function action(mode, type, selection) { } } - cm.setQuestProgress(3114, 7777, idx + 1); + cm.setQuestProgress(3114, -1 * (idx + 1)); } } } diff --git a/scripts/npc/2012031.js b/scripts/npc/2012031.js index 4e8946e69a..6f30b9c151 100644 --- a/scripts/npc/2012031.js +++ b/scripts/npc/2012031.js @@ -50,13 +50,13 @@ function action(mode, type, selection) { cm.getMap().broadcastMessage(MaplePacketCreator.playSound("orbis/" + harpSounds[cm.getNpc() - 2012027])); if(cm.isQuestStarted(3114)) { - var idx = cm.getQuestProgress(3114, 7777); + var idx = -1 * cm.getQuestProgressInt(3114); - if(idx != -1) { + if(idx > -1) { var nextNote = harpSong[idx]; if(harpNote != nextNote) { - cm.setQuestProgress(3114, 7777, 0); + cm.setQuestProgress(3114, 0); cm.getPlayer().announce(MaplePacketCreator.showEffect("quest/party/wrong_kor")); cm.getPlayer().announce(MaplePacketCreator.playSound("Party1/Failed")); @@ -70,7 +70,7 @@ function action(mode, type, selection) { if(idx == 45) { // finished lullaby cm.message("Twinkle, twinkle, little star, how I wonder what you are."); - cm.setQuestProgress(3114, 7777, -1); + cm.setQuestProgress(3114, 42); cm.getPlayer().announce(MaplePacketCreator.showEffect("quest/party/clear")); cm.getPlayer().announce(MaplePacketCreator.playSound("Party1/Clear")); @@ -88,7 +88,7 @@ function action(mode, type, selection) { } } - cm.setQuestProgress(3114, 7777, idx + 1); + cm.setQuestProgress(3114, -1 * (idx + 1)); } } } diff --git a/scripts/npc/2012032.js b/scripts/npc/2012032.js index 949480f276..52e985a993 100644 --- a/scripts/npc/2012032.js +++ b/scripts/npc/2012032.js @@ -50,13 +50,13 @@ function action(mode, type, selection) { cm.getMap().broadcastMessage(MaplePacketCreator.playSound("orbis/" + harpSounds[cm.getNpc() - 2012027])); if(cm.isQuestStarted(3114)) { - var idx = cm.getQuestProgress(3114, 7777); + var idx = -1 * cm.getQuestProgressInt(3114); - if(idx != -1) { + if(idx > -1) { var nextNote = harpSong[idx]; if(harpNote != nextNote) { - cm.setQuestProgress(3114, 7777, 0); + cm.setQuestProgress(3114, 0); cm.getPlayer().announce(MaplePacketCreator.showEffect("quest/party/wrong_kor")); cm.getPlayer().announce(MaplePacketCreator.playSound("Party1/Failed")); @@ -70,7 +70,7 @@ function action(mode, type, selection) { if(idx == 45) { // finished lullaby cm.message("Twinkle, twinkle, little star, how I wonder what you are."); - cm.setQuestProgress(3114, 7777, -1); + cm.setQuestProgress(3114, 42); cm.getPlayer().announce(MaplePacketCreator.showEffect("quest/party/clear")); cm.getPlayer().announce(MaplePacketCreator.playSound("Party1/Clear")); @@ -88,7 +88,7 @@ function action(mode, type, selection) { } } - cm.setQuestProgress(3114, 7777, idx + 1); + cm.setQuestProgress(3114, -1 * (idx + 1)); } } } diff --git a/scripts/npc/2012033.js b/scripts/npc/2012033.js index 98c196d054..aa9ac0d73c 100644 --- a/scripts/npc/2012033.js +++ b/scripts/npc/2012033.js @@ -50,13 +50,13 @@ function action(mode, type, selection) { cm.getMap().broadcastMessage(MaplePacketCreator.playSound("orbis/" + harpSounds[cm.getNpc() - 2012027])); if(cm.isQuestStarted(3114)) { - var idx = cm.getQuestProgress(3114, 7777); + var idx = -1 * cm.getQuestProgressInt(3114); - if(idx != -1) { + if(idx > -1) { var nextNote = harpSong[idx]; if(harpNote != nextNote) { - cm.setQuestProgress(3114, 7777, 0); + cm.setQuestProgress(3114, 0); cm.getPlayer().announce(MaplePacketCreator.showEffect("quest/party/wrong_kor")); cm.getPlayer().announce(MaplePacketCreator.playSound("Party1/Failed")); @@ -70,7 +70,7 @@ function action(mode, type, selection) { if(idx == 45) { // finished lullaby cm.message("Twinkle, twinkle, little star, how I wonder what you are."); - cm.setQuestProgress(3114, 7777, -1); + cm.setQuestProgress(3114, 42); cm.getPlayer().announce(MaplePacketCreator.showEffect("quest/party/clear")); cm.getPlayer().announce(MaplePacketCreator.playSound("Party1/Clear")); @@ -88,7 +88,7 @@ function action(mode, type, selection) { } } - cm.setQuestProgress(3114, 7777, idx + 1); + cm.setQuestProgress(3114, -1 * (idx + 1)); } } } diff --git a/scripts/npc/2050014.js b/scripts/npc/2050014.js index 5a43f0112e..ea93a0b9f8 100644 --- a/scripts/npc/2050014.js +++ b/scripts/npc/2050014.js @@ -45,13 +45,13 @@ function action(mode, type, selection) { if(cm.isQuestStarted(3421)) { var meteoriteId = cm.getNpc() - 2050014; - var progress = cm.getQuestProgress(3421, 0); + var progress = cm.getQuestProgressInt(3421, 1); if((progress >> meteoriteId) % 2 == 0 || (progress == 63 && !cm.haveItem(4031117, 6))) { if (cm.canHold(4031117, 1)) { progress |= (1 << meteoriteId); cm.gainItem(4031117, 1); - cm.setQuestProgress(3421, 0, progress); + cm.setQuestProgress(3421, 1, progress); } else { cm.getPlayer().dropMessage(1, "Have a ETC slot available for this item."); } diff --git a/scripts/npc/2050015.js b/scripts/npc/2050015.js index 5a43f0112e..ea93a0b9f8 100644 --- a/scripts/npc/2050015.js +++ b/scripts/npc/2050015.js @@ -45,13 +45,13 @@ function action(mode, type, selection) { if(cm.isQuestStarted(3421)) { var meteoriteId = cm.getNpc() - 2050014; - var progress = cm.getQuestProgress(3421, 0); + var progress = cm.getQuestProgressInt(3421, 1); if((progress >> meteoriteId) % 2 == 0 || (progress == 63 && !cm.haveItem(4031117, 6))) { if (cm.canHold(4031117, 1)) { progress |= (1 << meteoriteId); cm.gainItem(4031117, 1); - cm.setQuestProgress(3421, 0, progress); + cm.setQuestProgress(3421, 1, progress); } else { cm.getPlayer().dropMessage(1, "Have a ETC slot available for this item."); } diff --git a/scripts/npc/2050016.js b/scripts/npc/2050016.js index 5a43f0112e..ea93a0b9f8 100644 --- a/scripts/npc/2050016.js +++ b/scripts/npc/2050016.js @@ -45,13 +45,13 @@ function action(mode, type, selection) { if(cm.isQuestStarted(3421)) { var meteoriteId = cm.getNpc() - 2050014; - var progress = cm.getQuestProgress(3421, 0); + var progress = cm.getQuestProgressInt(3421, 1); if((progress >> meteoriteId) % 2 == 0 || (progress == 63 && !cm.haveItem(4031117, 6))) { if (cm.canHold(4031117, 1)) { progress |= (1 << meteoriteId); cm.gainItem(4031117, 1); - cm.setQuestProgress(3421, 0, progress); + cm.setQuestProgress(3421, 1, progress); } else { cm.getPlayer().dropMessage(1, "Have a ETC slot available for this item."); } diff --git a/scripts/npc/2050017.js b/scripts/npc/2050017.js index 5a43f0112e..ea93a0b9f8 100644 --- a/scripts/npc/2050017.js +++ b/scripts/npc/2050017.js @@ -45,13 +45,13 @@ function action(mode, type, selection) { if(cm.isQuestStarted(3421)) { var meteoriteId = cm.getNpc() - 2050014; - var progress = cm.getQuestProgress(3421, 0); + var progress = cm.getQuestProgressInt(3421, 1); if((progress >> meteoriteId) % 2 == 0 || (progress == 63 && !cm.haveItem(4031117, 6))) { if (cm.canHold(4031117, 1)) { progress |= (1 << meteoriteId); cm.gainItem(4031117, 1); - cm.setQuestProgress(3421, 0, progress); + cm.setQuestProgress(3421, 1, progress); } else { cm.getPlayer().dropMessage(1, "Have a ETC slot available for this item."); } diff --git a/scripts/npc/2050018.js b/scripts/npc/2050018.js index 5a43f0112e..ea93a0b9f8 100644 --- a/scripts/npc/2050018.js +++ b/scripts/npc/2050018.js @@ -45,13 +45,13 @@ function action(mode, type, selection) { if(cm.isQuestStarted(3421)) { var meteoriteId = cm.getNpc() - 2050014; - var progress = cm.getQuestProgress(3421, 0); + var progress = cm.getQuestProgressInt(3421, 1); if((progress >> meteoriteId) % 2 == 0 || (progress == 63 && !cm.haveItem(4031117, 6))) { if (cm.canHold(4031117, 1)) { progress |= (1 << meteoriteId); cm.gainItem(4031117, 1); - cm.setQuestProgress(3421, 0, progress); + cm.setQuestProgress(3421, 1, progress); } else { cm.getPlayer().dropMessage(1, "Have a ETC slot available for this item."); } diff --git a/scripts/npc/2050019.js b/scripts/npc/2050019.js index 5a43f0112e..ea93a0b9f8 100644 --- a/scripts/npc/2050019.js +++ b/scripts/npc/2050019.js @@ -45,13 +45,13 @@ function action(mode, type, selection) { if(cm.isQuestStarted(3421)) { var meteoriteId = cm.getNpc() - 2050014; - var progress = cm.getQuestProgress(3421, 0); + var progress = cm.getQuestProgressInt(3421, 1); if((progress >> meteoriteId) % 2 == 0 || (progress == 63 && !cm.haveItem(4031117, 6))) { if (cm.canHold(4031117, 1)) { progress |= (1 << meteoriteId); cm.gainItem(4031117, 1); - cm.setQuestProgress(3421, 0, progress); + cm.setQuestProgress(3421, 1, progress); } else { cm.getPlayer().dropMessage(1, "Have a ETC slot available for this item."); } diff --git a/scripts/npc/2071012.js b/scripts/npc/2071012.js index c50775950a..c5d24d199a 100644 --- a/scripts/npc/2071012.js +++ b/scripts/npc/2071012.js @@ -23,7 +23,7 @@ function action(mode, type, selection) { status--; if(status == 0) { - if(cm.getQuestProgress(23647, 0) != 0) { + if(cm.getQuestProgressInt(23647, 1) != 0) { cm.dispose(); return; } @@ -39,7 +39,7 @@ function action(mode, type, selection) { cm.sendNext("Teehehee~ That's your reward for taking it from me, serves you well."); cm.gainItem(4031793, -1); cm.gainFame(-5); - cm.setQuestProgress(23647, 0, 1); + cm.setQuestProgress(23647, 1, 1); cm.dispose(); } diff --git a/scripts/npc/2081009.js b/scripts/npc/2081009.js index 553e5a8596..d49ae9513a 100644 --- a/scripts/npc/2081009.js +++ b/scripts/npc/2081009.js @@ -36,7 +36,7 @@ function action(mode, type, selection) { status++; if(status == 0) { - if(cm.isQuestStarted(6180)) { + if(cm.isQuestStarted(6180) && cm.getQuestProgressInt(6180, 9300096) < 200) { cm.sendYesNo("Pay attention: during the time you stay inside the training ground make sure you #bhave equipped your #t1092041##k, it is of the utmost importance. Are you ready to proceed to the training area?"); } @@ -47,10 +47,15 @@ function action(mode, type, selection) { } else if(status == 1) { - cm.warp(924000001, 0); - cm.sendOk("Have your shield equipped until the end of the quest, or else you will need to start all over again!"); - - cm.resetQuestProgress(6180,9300096); + if (cm.getPlayer().haveItemEquipped(1092041)) { + cm.sendNext("Have your shield equipped until the end of the quest, or else you will need to start all over again!"); + } else { + cm.sendOk("Please equip the #r#t1092041##k before entering the training ground."); + cm.dispose(); + } + } + else { + cm.warp(924000001, 0); cm.dispose(); } } diff --git a/scripts/npc/2091009.js b/scripts/npc/2091009.js index 2e6a02cb6e..c72fb2ca9b 100644 --- a/scripts/npc/2091009.js +++ b/scripts/npc/2091009.js @@ -27,10 +27,10 @@ function action(mode, type, selection){ return; } if(cm.getText() == "Actions speak louder than words"){ - if(cm.isQuestStarted(21747) && cm.getQuestProgress(21747, 9300351) == 0) + if(cm.isQuestStarted(21747) && cm.getQuestProgressInt(21747, 9300351) == 0) cm.warp(925040100, 0); else - cm.playerMessage(5, "Although you said the right answer, some mysterious forces is blocking the way in."); + cm.playerMessage(5, "Although you said the right answer, some mysterious forces are blocking the way in."); cm.dispose(); } diff --git a/scripts/npc/2101017.js b/scripts/npc/2101017.js index 03318dabce..035e2e0b94 100644 --- a/scripts/npc/2101017.js +++ b/scripts/npc/2101017.js @@ -115,7 +115,7 @@ function action(mode, type, selection) { status = 2; } } - } else if (Packages.constants.GameConstants.isAriantColiseumArena(cm.getPlayer().getMapId())) { + } else if (Packages.constants.game.GameConstants.isAriantColiseumArena(cm.getPlayer().getMapId())) { if (cm.getPlayer().getMapId() == 980010101) { exped = MapleExpeditionType.ARIANT; expedicao = cm.getExpedition(exped); diff --git a/scripts/npc/2103000.js b/scripts/npc/2103000.js index f64485569e..16cde87e59 100644 --- a/scripts/npc/2103000.js +++ b/scripts/npc/2103000.js @@ -40,9 +40,9 @@ function action(mode, type, selection) { else status--; if (status == 0 && mode == 1) { - if(cm.isQuestStarted(3900) && cm.getPlayer().getQuestInfo(3900) != 5) { + if(cm.isQuestStarted(3900) && cm.getQuestProgressInt(3900) != 5) { cm.sendOk("#b(You drink the water from the oasis and feel refreshed.)", 2); - cm.getPlayer().updateQuestInfo(3900, "5"); + cm.setQuestProgress(3900, 5); } else if(cm.isQuestCompleted(3938)) { if(cm.canHold(2210005)) { if(!cm.haveItem(2210005) && !isTigunMorphed(cm.getPlayer())) { diff --git a/scripts/npc/2103003.js b/scripts/npc/2103003.js index 9b8040167f..a5a382dfaa 100644 --- a/scripts/npc/2103003.js +++ b/scripts/npc/2103003.js @@ -43,11 +43,15 @@ function action(mode, type, selection) { if(status == 0) { if(cm.isQuestStarted(3929)) { - if(cm.getQuestProgress(3929, 0) != 1) { - if(cm.haveItem(4031580)) { - cm.gainItem(4031580, -1); - cm.setQuestProgress(3929, 0, 1); - } + var progress = cm.getQuestProgress(3929); + var slot = 0; + + var ch = progress[slot]; + if(ch == '2') { + var nextProgress = progress.substr(0, slot) + '3' + progress.substr(slot + 1); + + cm.gainItem(4031580, -1); + cm.setQuestProgress(3929, nextProgress); } } diff --git a/scripts/npc/2103004.js b/scripts/npc/2103004.js index 5891f00078..f78baaaa7e 100644 --- a/scripts/npc/2103004.js +++ b/scripts/npc/2103004.js @@ -43,11 +43,15 @@ function action(mode, type, selection) { if(status == 0) { if(cm.isQuestStarted(3929)) { - if(cm.getQuestProgress(3929, 2) != 1) { - if(cm.haveItem(4031580)) { - cm.gainItem(4031580, -1); - cm.setQuestProgress(3929, 2, 1); - } + var progress = cm.getQuestProgress(3929); + var slot = 2; + + var ch = progress[slot]; + if(ch == '2') { + var nextProgress = progress.substr(0, slot) + '3' + progress.substr(slot + 1); + + cm.gainItem(4031580, -1); + cm.setQuestProgress(3929, nextProgress); } } diff --git a/scripts/npc/2103005.js b/scripts/npc/2103005.js index 01dc956858..1f49150290 100644 --- a/scripts/npc/2103005.js +++ b/scripts/npc/2103005.js @@ -43,11 +43,15 @@ function action(mode, type, selection) { if(status == 0) { if(cm.isQuestStarted(3929)) { - if(cm.getQuestProgress(3929, 1) != 1) { - if(cm.haveItem(4031580)) { - cm.gainItem(4031580, -1); - cm.setQuestProgress(3929, 1, 1); - } + var progress = cm.getQuestProgress(3929); + var slot = 1; + + var ch = progress[slot]; + if(ch == '2') { + var nextProgress = progress.substr(0, slot) + '3' + progress.substr(slot + 1); + + cm.gainItem(4031580, -1); + cm.setQuestProgress(3929, nextProgress); } } diff --git a/scripts/npc/2103006.js b/scripts/npc/2103006.js index a25d62b4ac..d3bddd3a85 100644 --- a/scripts/npc/2103006.js +++ b/scripts/npc/2103006.js @@ -43,11 +43,15 @@ function action(mode, type, selection) { if(status == 0) { if(cm.isQuestStarted(3929)) { - if(cm.getQuestProgress(3929, 3) != 1) { - if(cm.haveItem(4031580)) { - cm.gainItem(4031580, -1); - cm.setQuestProgress(3929, 3, 1); - } + var progress = cm.getQuestProgress(3929); + var slot = 3; + + var ch = progress[slot]; + if(ch == '2') { + var nextProgress = progress.substr(0, slot) + '3' + progress.substr(slot + 1); + + cm.gainItem(4031580, -1); + cm.setQuestProgress(3929, nextProgress); } } diff --git a/scripts/npc/2103009.js b/scripts/npc/2103009.js index 12d3129e1a..c8f6c47787 100644 --- a/scripts/npc/2103009.js +++ b/scripts/npc/2103009.js @@ -43,11 +43,15 @@ function action(mode, type, selection) { if(status == 0) { if(cm.isQuestStarted(3926)) { - if(cm.getQuestProgress(3926, 0) != 1) { - if(cm.haveItem(4031579)) { - cm.gainItem(4031579, -1); - cm.setQuestProgress(3926, 0, 1); - } + var progress = cm.getQuestProgress(3926); + var slot = 0; + + var ch = progress[slot]; + if(ch == '2') { + var nextProgress = progress.substr(0, slot) + '3' + progress.substr(slot + 1); + + cm.gainItem(4031579, -1); + cm.setQuestProgress(3926, nextProgress); } } diff --git a/scripts/npc/2103010.js b/scripts/npc/2103010.js index 80f599e5bd..9fff919dea 100644 --- a/scripts/npc/2103010.js +++ b/scripts/npc/2103010.js @@ -43,11 +43,15 @@ function action(mode, type, selection) { if(status == 0) { if(cm.isQuestStarted(3926)) { - if(cm.getQuestProgress(3926, 2) != 1) { - if(cm.haveItem(4031579)) { - cm.gainItem(4031579, -1); - cm.setQuestProgress(3926, 2, 1); - } + var progress = cm.getQuestProgress(3926); + var slot = 2; + + var ch = progress[slot]; + if(ch == '2') { + var nextProgress = progress.substr(0, slot) + '3' + progress.substr(slot + 1); + + cm.gainItem(4031579, -1); + cm.setQuestProgress(3926, nextProgress); } } diff --git a/scripts/npc/2103011.js b/scripts/npc/2103011.js index fdbb1a86ee..9321a46dc6 100644 --- a/scripts/npc/2103011.js +++ b/scripts/npc/2103011.js @@ -43,11 +43,15 @@ function action(mode, type, selection) { if(status == 0) { if(cm.isQuestStarted(3926)) { - if(cm.getQuestProgress(3926, 1) != 1) { - if(cm.haveItem(4031579)) { - cm.gainItem(4031579, -1); - cm.setQuestProgress(3926, 1, 1); - } + var progress = cm.getQuestProgress(3926); + var slot = 1; + + var ch = progress[slot]; + if(ch == '2') { + var nextProgress = progress.substr(0, slot) + '3' + progress.substr(slot + 1); + + cm.gainItem(4031579, -1); + cm.setQuestProgress(3926, nextProgress); } } diff --git a/scripts/npc/2103012.js b/scripts/npc/2103012.js index 13a9f0bc9d..a4f3b17617 100644 --- a/scripts/npc/2103012.js +++ b/scripts/npc/2103012.js @@ -43,11 +43,15 @@ function action(mode, type, selection) { if(status == 0) { if(cm.isQuestStarted(3926)) { - if(cm.getQuestProgress(3926, 3) != 1) { - if(cm.haveItem(4031579)) { - cm.gainItem(4031579, -1); - cm.setQuestProgress(3926, 3, 1); - } + var progress = cm.getQuestProgress(3926); + var slot = 3; + + var ch = progress[slot]; + if(ch == '2') { + var nextProgress = progress.substr(0, slot) + '3' + progress.substr(slot + 1); + + cm.gainItem(4031579, -1); + cm.setQuestProgress(3926, nextProgress); } } diff --git a/scripts/npc/2103013.js b/scripts/npc/2103013.js index 78f339dc10..9eddad86c0 100644 --- a/scripts/npc/2103013.js +++ b/scripts/npc/2103013.js @@ -66,7 +66,7 @@ function action(mode, type, selection) { } else if (selection == 4) { cm.sendNext("Inside Pharaoh Yeti's Tomb, you can acquire a #e#b#t2022613##k#n by proving yourself capable of defeating the #bPharaoh Jr. Yeti#k, the Pharaoh's clone. Inside that box lies a very special treasure. It is the #e#b#t1132012##k#n.\r\n#i1132012:# #t1132012#\r\n\r\n And if you are somehow able to survive Hell Mode, you will receive the #e#b#t1132013##k#n.\r\n\r\n#i1132013:# #t1132013#\r\n\r\n Though, of course, Nett won't allow that to happen."); } else if (selection == 5) { - var progress = cm.getQuestProgress(29932); + var progress = cm.getQuestProgressInt(29932); if (progress >= 50000) cm.dispose(); else diff --git a/scripts/npc/2111011.js b/scripts/npc/2111011.js new file mode 100644 index 0000000000..8b8b43f8de --- /dev/null +++ b/scripts/npc/2111011.js @@ -0,0 +1,25 @@ +var status; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && type > 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + + if(status == 0) { + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/2111012.js b/scripts/npc/2111012.js new file mode 100644 index 0000000000..8b8b43f8de --- /dev/null +++ b/scripts/npc/2111012.js @@ -0,0 +1,25 @@ +var status; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && type > 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + + if(status == 0) { + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/2111013.js b/scripts/npc/2111013.js index 3d897e4788..ab3289b9ff 100644 --- a/scripts/npc/2111013.js +++ b/scripts/npc/2111013.js @@ -40,7 +40,17 @@ function action(mode, type, selection) { if(status == 0) { if(cm.isQuestStarted(3311)) { - cm.setQuestProgress(3311, 0, 1); + var slot = 2; + var progress = cm.getQuestProgressInt(3311); + + if (progress == 4) { + progress = 7; + } else { + progress = 5; + } + + cm.setQuestProgress(3311, progress); + cm.sendOk("This is a mug picture of Dr. De Lang. It seems he is adorning a locket with the emblem of the Alcadno academy, he is a retainer of the Alcadno society.", 2); } diff --git a/scripts/npc/2111014.js b/scripts/npc/2111014.js index 503554188a..cadbec00ea 100644 --- a/scripts/npc/2111014.js +++ b/scripts/npc/2111014.js @@ -40,7 +40,17 @@ function action(mode, type, selection) { if(status == 0) { if(cm.isQuestStarted(3311)) { - cm.setQuestProgress(3311, 1, 1); + var slot = 0; + var progress = cm.getQuestProgressInt(3311); + + if (progress == 4) { + progress = 7; + } else { + progress = 5; + } + + cm.setQuestProgress(3311, progress); + cm.sendOk("The diary of Dr. De Lang. A lot of formulas and pompous scientific texts can be found all way through the pages, but it is worth noting that in the last entry (3 weeks ago), it is written that he concluded the researches on an improvement on the blueprints for the Neo Huroids, thus making the last preparations to show it to the 'society'... No words after this...", 2); } else if(cm.isQuestStarted(3322) && !cm.haveItem(4031697, 1)) { if(cm.canHold(4031697, 1)) diff --git a/scripts/npc/2111016.js b/scripts/npc/2111016.js new file mode 100644 index 0000000000..8b8b43f8de --- /dev/null +++ b/scripts/npc/2111016.js @@ -0,0 +1,25 @@ +var status; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && type > 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + + if(status == 0) { + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/2111017.js b/scripts/npc/2111017.js index f5ac4961fd..26b4ef159a 100644 --- a/scripts/npc/2111017.js +++ b/scripts/npc/2111017.js @@ -40,15 +40,15 @@ function action(mode, type, selection) { if(status == 0) { if(cm.isQuestStarted(3339)) { - var progress = cm.getQuestProgress(3339, 0); + var progress = cm.getQuestProgressInt(23339, 1); if(progress == 3) { cm.sendGetText("The pipe reacts as the water starts flowing. A secret compartment with a keypad shows up. #bPassword#k!"); } else if(progress == 0) { - cm.setQuestProgress(3339, 0, 1); + cm.setQuestProgress(23339, 1, 1); cm.dispose(); } else if(progress < 3) { - cm.setQuestProgress(3339, 0, 0); + cm.setQuestProgress(23339, 1, 0); cm.dispose(); } else { cm.warp(261000001, 1); @@ -63,7 +63,7 @@ function action(mode, type, selection) { } } else if(status == 1) { if(cm.getText() == "my love Phyllia") { - cm.setQuestProgress(3339, 0, 4); + cm.setQuestProgress(23339, 1, 4); cm.warp(261000001, 1); cm.dispose(); } diff --git a/scripts/npc/2111018.js b/scripts/npc/2111018.js index baf03db33d..7bd135dd29 100644 --- a/scripts/npc/2111018.js +++ b/scripts/npc/2111018.js @@ -40,15 +40,15 @@ function action(mode, type, selection) { if(status == 0) { if(cm.isQuestStarted(3339)) { - var progress = cm.getQuestProgress(3339, 0); + var progress = cm.getQuestProgressInt(23339, 1); if(progress == 3) { cm.sendGetText("The pipe reacts as the water starts flowing. A secret compartment with a keypad shows up. #bPassword#k!"); } else if(progress == 2) { - cm.setQuestProgress(3339, 0, 3); + cm.setQuestProgress(23339, 1, 3); cm.sendGetText("The pipe reacts as the water starts flowing. A secret compartment with a keypad shows up. #bPassword#k!"); } else if(progress < 3) { - cm.setQuestProgress(3339, 0, 0); + cm.setQuestProgress(23339, 1, 0); cm.dispose(); } else { cm.warp(261000001, 1); @@ -63,7 +63,7 @@ function action(mode, type, selection) { } } else if(status == 1) { if(cm.getText() == "my love Phyllia") { - cm.setQuestProgress(3339, 0, 4); + cm.setQuestProgress(23339, 1, 4); cm.warp(261000001, 1); cm.dispose(); } diff --git a/scripts/npc/2111019.js b/scripts/npc/2111019.js index 71da66886d..fbceccde4c 100644 --- a/scripts/npc/2111019.js +++ b/scripts/npc/2111019.js @@ -40,15 +40,15 @@ function action(mode, type, selection) { if(status == 0) { if(cm.isQuestStarted(3339)) { - var progress = cm.getQuestProgress(3339, 0); + var progress = cm.getQuestProgressInt(23339, 1); if(progress == 3) { cm.sendGetText("The pipe reacts as the water starts flowing. A secret compartment with a keypad shows up. #bPassword#k!"); } else if(progress == 1) { - cm.setQuestProgress(3339, 0, 2); + cm.setQuestProgress(23339, 1, 2); cm.dispose(); } else if(progress < 3) { - cm.setQuestProgress(3339, 0, 0); + cm.setQuestProgress(23339, 1, 0); cm.dispose(); } else { cm.warp(261000001, 1); @@ -63,7 +63,7 @@ function action(mode, type, selection) { } } else if(status == 1) { if(cm.getText() == "my love Phyllia") { - cm.setQuestProgress(3339, 0, 4); + cm.setQuestProgress(23339, 1, 4); cm.warp(261000001, 1); cm.dispose(); } diff --git a/scripts/npc/2111020.js b/scripts/npc/2111020.js index f9f07e7b09..1695c57816 100644 --- a/scripts/npc/2111020.js +++ b/scripts/npc/2111020.js @@ -40,13 +40,13 @@ function action(mode, type, selection) { if(status == 0) { if(cm.isQuestStarted(3345)) { - var progress = cm.getQuestProgress(3345, 0); + var progress = cm.getQuestProgressInt(3345); if(progress == 0) { - cm.setQuestProgress(3345, 0, 1); + cm.setQuestProgress(3345, 1); cm.dispose(); } else if(progress < 4) { - cm.setQuestProgress(3345, 0, 0); + cm.setQuestProgress(3345, 0); cm.dispose(); } else { cm.dispose(); diff --git a/scripts/npc/2111021.js b/scripts/npc/2111021.js index 7b8336eb75..897ab66950 100644 --- a/scripts/npc/2111021.js +++ b/scripts/npc/2111021.js @@ -40,13 +40,13 @@ function action(mode, type, selection) { if(status == 0) { if(cm.isQuestStarted(3345)) { - var progress = cm.getQuestProgress(3345, 0); + var progress = cm.getQuestProgressInt(3345); if(progress == 1) { - cm.setQuestProgress(3345, 0, 2); + cm.setQuestProgress(3345, 2); cm.dispose(); } else if(progress < 4) { - cm.setQuestProgress(3345, 0, 0); + cm.setQuestProgress(3345, 0); cm.dispose(); } else { cm.dispose(); diff --git a/scripts/npc/2111022.js b/scripts/npc/2111022.js index a6cca05dc7..2984e6b756 100644 --- a/scripts/npc/2111022.js +++ b/scripts/npc/2111022.js @@ -40,13 +40,13 @@ function action(mode, type, selection) { if(status == 0) { if(cm.isQuestStarted(3345)) { - var progress = cm.getQuestProgress(3345, 0); + var progress = cm.getQuestProgressInt(3345); if(progress == 2) { - cm.setQuestProgress(3345, 0, 3); + cm.setQuestProgress(3345, 3); cm.dispose(); } else if(progress < 4) { - cm.setQuestProgress(3345, 0, 0); + cm.setQuestProgress(3345, 0); cm.dispose(); } else { cm.dispose(); diff --git a/scripts/npc/2111023.js b/scripts/npc/2111023.js index 0ea72a461e..6daefb0316 100644 --- a/scripts/npc/2111023.js +++ b/scripts/npc/2111023.js @@ -40,10 +40,10 @@ function action(mode, type, selection) { if(status == 0) { if(cm.isQuestStarted(3345)) { - var progress = cm.getQuestProgress(3345, 0); + var progress = cm.getQuestProgressInt(3345); if(progress == 3 && cm.haveItem(4031739, 1) && cm.haveItem(4031740, 1) && cm.haveItem(4031741, 1)) { - cm.setQuestProgress(3345, 0, 4); + cm.setQuestProgress(3345, 4); cm.gainItem(4031739, -1); cm.gainItem(4031740, -1); cm.gainItem(4031741, -1); @@ -51,7 +51,7 @@ function action(mode, type, selection) { cm.sendOk("(As you place the shards a light shines over the circle, repelling whatever omens were brewing inside the artifact.)", 2); cm.dispose(); } else if(progress < 4) { - cm.setQuestProgress(3345, 0, 0); + cm.setQuestProgress(3345, 0); cm.dispose(); } else { cm.dispose(); diff --git a/scripts/npc/2112016.js b/scripts/npc/2112016.js index d0f7d16d83..3106645572 100644 --- a/scripts/npc/2112016.js +++ b/scripts/npc/2112016.js @@ -26,15 +26,15 @@ function start() { if(cm.isQuestStarted(3367)) { - var c = cm.getQuestProgress(3367, 30); - if(c == 30) { + var c = cm.getQuestProgressInt(3367, 30); + if(c >= 30) { cm.sendNext("(All files have been organized. Report the found files to Yulete.)", 2); cm.dispose(); return; } var book = (cm.getNpcObjectId() % 30); - var prog = cm.getQuestProgress(3367, book); + var prog = cm.getQuestProgressInt(3367, book); if(prog == 0) { c++; @@ -45,7 +45,7 @@ function start() { return; } else { cm.gainItem(4031797, 1); - cm.setQuestProgress(3367, 31, cm.getQuestProgress(3367, 31) + 1); + cm.setQuestProgress(3367, 31, cm.getQuestProgressInt(3367, 31) + 1); } } diff --git a/scripts/npc/9201003.js b/scripts/npc/9201003.js index af2a3c6ecb..2f30233c03 100644 --- a/scripts/npc/9201003.js +++ b/scripts/npc/9201003.js @@ -63,7 +63,7 @@ function action(mode, type, selection) { cm.sendOk("Hello we're Mom and Dad..."); cm.dispose(); } else { - if (cm.getQuestProgress(100400, 1) == 0) { + if (cm.getQuestProgressInt(100400, 1) == 0) { cm.sendNext("Mom, dad, I have a request to do to both of you... I wanna know more about the path you've already been walking since always, the path of loving and caring for someone dear to me.", 2); } else { if(!hasProofOfLoves(cm.getPlayer())) { diff --git a/scripts/npc/9977777.js b/scripts/npc/9977777.js index 5654952e9f..6990389bcd 100644 --- a/scripts/npc/9977777.js +++ b/scripts/npc/9977777.js @@ -77,6 +77,7 @@ function writeFeatureTab_Quests() { addFeature("3rd job quiz with all 40-question pool available."); addFeature("Item raising functional."); addFeature("Cleared issue with player movement during NPC talk."); + addFeature("Reviewed usage of quest progress data as requirement."); } function writeFeatureTab_PlayerSocialNetwork() { diff --git a/scripts/npc/MagatiaPassword.js b/scripts/npc/MagatiaPassword.js index a6bd7bf9d4..eaab5b7a19 100644 --- a/scripts/npc/MagatiaPassword.js +++ b/scripts/npc/MagatiaPassword.js @@ -19,9 +19,10 @@ function action(mode, type, selection){ cm.sendGetText("The door reacts to the entry pass inserted. #bPassword#k!"); } else if(status == 1){ - if(cm.getText() == cm.getStringQuestProgress(3360, 0)){ - cm.setQuestProgress(3360, 1, 1); - cm.warp((cm.getMapId() == 261010000) ? 261020200 : 261010000, "secret00"); + if(cm.getText() == cm.getQuestProgress(3360)){ + cm.setQuestProgress(3360, 1); + cm.getPlayer().announce(Packages.tools.MaplePacketCreator.playPortalSound()); + cm.warp(261030000, "sp_" + ((cm.getMapId() == 261010000) ? "jenu" : "alca")); } else { cm.sendOk("#rWrong!"); diff --git a/scripts/npc/PupeteerPassword.js b/scripts/npc/PupeteerPassword.js index 462f8157fb..8d3ca92136 100644 --- a/scripts/npc/PupeteerPassword.js +++ b/scripts/npc/PupeteerPassword.js @@ -20,7 +20,7 @@ function action(mode, type, selection){ if(status == 0){ if(cm.isQuestStarted(21728)) { cm.sendOk("You search for any hints of the Puppeteer, but it seems a powerful force blocks the path... Better return to #b#p1061019##k."); - cm.setQuestProgress(21728, 0, 1); + cm.setQuestProgress(21728, 21761, 0); cm.dispose(); return; } @@ -29,12 +29,12 @@ function action(mode, type, selection){ } else if(status == 1){ if(cm.getText() == "Francis is a genius Puppeteer!"){ - if(cm.isQuestStarted(20730) && cm.getQuestProgress(20730, 9300285) == 0) + if(cm.isQuestStarted(20730) && cm.getQuestProgressInt(20730, 9300285) == 0) cm.warp(910510001, 1); - else if(cm.isQuestStarted(21731) && cm.getQuestProgress(21731, 9300346) == 0) + else if(cm.isQuestStarted(21731) && cm.getQuestProgressInt(21731, 9300346) == 0) cm.warp(910510001, 1); else - cm.playerMessage(5, "Although you said the right answer, some mysterious forces is blocking the way in."); + cm.playerMessage(5, "Although you said the right answer, some mysterious forces are blocking the way in."); cm.dispose(); } diff --git a/scripts/npc/cpqchallenge.js b/scripts/npc/cpqchallenge.js index 1be873d469..c55c990717 100644 --- a/scripts/npc/cpqchallenge.js +++ b/scripts/npc/cpqchallenge.js @@ -5,7 +5,7 @@ --------------------------------------------------------------------------------------------------- **/ -importPackage(Packages.constants); +importPackage(Packages.constants.game); var status = 0; var party; diff --git a/scripts/npc/cpqchallenge2.js b/scripts/npc/cpqchallenge2.js index 1be873d469..c55c990717 100644 --- a/scripts/npc/cpqchallenge2.js +++ b/scripts/npc/cpqchallenge2.js @@ -5,7 +5,7 @@ --------------------------------------------------------------------------------------------------- **/ -importPackage(Packages.constants); +importPackage(Packages.constants.game); var status = 0; var party; diff --git a/scripts/npc/credits.js b/scripts/npc/credits.js index d5ea8e323f..29db73a8fc 100644 --- a/scripts/npc/credits.js +++ b/scripts/npc/credits.js @@ -93,6 +93,9 @@ function writeServerStaff_OdinMS() { } function writeServerStaff_Contributors() { + addPerson("IxianMace", "Contributor"); + addPerson("Conrad", "Contributor"); + addPerson("inhyuk", "Contributor"); addPerson("Jayd", "Contributor"); addPerson("Dragohe4rt", "Contributor"); addPerson("Jvlaple", "Contributor"); diff --git a/scripts/npc/rank_user.js b/scripts/npc/rank_user.js index 323702e518..f958748535 100644 --- a/scripts/npc/rank_user.js +++ b/scripts/npc/rank_user.js @@ -21,7 +21,7 @@ * @Author Ronan * Player NPC Ranking System */ -importPackage(Packages.constants); +importPackage(Packages.constants.game); var status; diff --git a/scripts/portal/TD_MC_enterboss1.js b/scripts/portal/TD_MC_enterboss1.js index 0718c1730a..260a8cb2b4 100644 --- a/scripts/portal/TD_MC_enterboss1.js +++ b/scripts/portal/TD_MC_enterboss1.js @@ -1,5 +1,5 @@ function enter(pi) { - var questProgress = pi.getQuestProgress(2330, 3300005) + pi.getQuestProgress(2330, 3300006) + pi.getQuestProgress(2330, 3300007); //3 Yetis + var questProgress = pi.getQuestProgressInt(2330, 3300005) + pi.getQuestProgressInt(2330, 3300006) + pi.getQuestProgressInt(2330, 3300007); //3 Yetis if(pi.isQuestStarted(2330) && questProgress < 3){ pi.openNpc(1300013); diff --git a/scripts/portal/TD_neo_inTree.js b/scripts/portal/TD_neo_inTree.js index 382fab3263..0ee32c0ac8 100644 --- a/scripts/portal/TD_neo_inTree.js +++ b/scripts/portal/TD_neo_inTree.js @@ -10,7 +10,7 @@ function enter(pi) { for(var i = 0; i < quests.length; i++) { if (pi.isQuestActive(quests[i])) { - if(pi.getQuestProgress(quests[i], mobs[i]) != 0) { + if(pi.getQuestProgressInt(quests[i], mobs[i]) != 0) { pi.message("You already faced Nex. Complete your mission."); return false; } diff --git a/scripts/portal/enterInfo.js b/scripts/portal/enterInfo.js index 02a1b45dec..466f53f0cd 100644 --- a/scripts/portal/enterInfo.js +++ b/scripts/portal/enterInfo.js @@ -1,7 +1,8 @@ function enter(pi) { var mapobj = pi.getWarpMap(104000004); - if(pi.isQuestActive(21733) && pi.getQuestProgress(21733, 9300345) == 0 && mapobj.countMonsters() == 0) { + if(pi.isQuestActive(21733) && pi.getQuestProgressInt(21733, 9300345) == 0 && mapobj.countMonsters() == 0) { mapobj.spawnMonsterOnGroundBelow(Packages.server.life.MapleLifeFactory.getMonster(9300345), new java.awt.Point(0, 0)); + pi.setQuestProgress(21733, 21762, 2); } pi.playPortalSound(); diff --git a/scripts/portal/enterMCave.js b/scripts/portal/enterMCave.js index dc2052f0e5..e121cc1b5f 100644 --- a/scripts/portal/enterMCave.js +++ b/scripts/portal/enterMCave.js @@ -9,8 +9,7 @@ function enter(pi) { pi.playPortalSound(); pi.warp(i, "out00"); - pi.getPlayer().updateQuestInfo(21202, "0"); - //pi.getPlayer().announce(Packages.tools.MaplePacketCreator.questProgress(21203, "21203")); + pi.setQuestProgress(21202, 21203, 0); return true; } pi.message("The mirror is blank due to many players recalling their memories. Please wait and try again."); @@ -24,7 +23,7 @@ function enter(pi) { spawnMob(-210, 454, 9001013, map); pi.playPortalSound(); - pi.getPlayer().updateQuestInfo(21203, "1"); + pi.setQuestProgress(21303, 21203, 1); pi.warp(108010701, "out00"); return true; } diff --git a/scripts/portal/enterPort.js b/scripts/portal/enterPort.js index 58147bee61..e79056d85c 100644 --- a/scripts/portal/enterPort.js +++ b/scripts/portal/enterPort.js @@ -22,7 +22,7 @@ importPackage(Packages.server.life); function enter(pi) { - if(pi.isQuestStarted(21301) && pi.getQuestProgress(21301, 9001013) == 0) { + if(pi.isQuestStarted(21301) && pi.getQuestProgressInt(21301, 9001013) == 0) { if(pi.getPlayerCount(108010700) != 0) { pi.message("The portal is blocked from the other side. I wonder if someone is already fighting the Thief Crow?"); return false; diff --git a/scripts/portal/out_pepeking.js b/scripts/portal/out_pepeking.js index 5532f8eef0..67d59554f4 100644 --- a/scripts/portal/out_pepeking.js +++ b/scripts/portal/out_pepeking.js @@ -5,7 +5,7 @@ function enter(pi) { eim.dispose(); } - var questProgress = pi.getQuestProgress(2330, 3300005) + pi.getQuestProgress(2330, 3300006) + pi.getQuestProgress(2330, 3300007); //3 Yetis + var questProgress = pi.getQuestProgressInt(2330, 3300005) + pi.getQuestProgressInt(2330, 3300006) + pi.getQuestProgressInt(2330, 3300007); //3 Yetis if(questProgress == 3 && !pi.hasItem(4032388)) { if(pi.canHold(4032388)){ pi.getPlayer().message("You have aquired a key to the Wedding Hall. King Pepe must have dropped it."); diff --git a/scripts/portal/q3367in.js b/scripts/portal/q3367in.js index 05ec7966d1..9832335769 100644 --- a/scripts/portal/q3367in.js +++ b/scripts/portal/q3367in.js @@ -19,8 +19,11 @@ */ function enter(pi) { if(pi.isQuestStarted(3367)) { - if(pi.getQuestProgress(3367, 31) < pi.getItemQuantity(4031797)) { - pi.gainItem(4031797, pi.getQuestProgress(3367, 31) - pi.getItemQuantity(4031797)); + var booksDone = pi.getQuestProgressInt(3367, 31); + var booksInv = pi.getItemQuantity(4031797); + + if(booksInv < booksDone) { + pi.gainItem(4031797, booksDone - booksInv); } pi.playPortalSound(); pi.warp(926130102, 0); diff --git a/scripts/portal/s4mind_end.js b/scripts/portal/s4mind_end.js index 39007482c2..6b8343b7ae 100644 --- a/scripts/portal/s4mind_end.js +++ b/scripts/portal/s4mind_end.js @@ -23,7 +23,7 @@ function enter(pi) { return false; } else { if (pi.isQuestStarted(6410)) { - pi.setQuestProgress(6410, 0, 1); + pi.setQuestProgress(6410, 6411, "p2"); } pi.playPortalSound(); diff --git a/scripts/portal/secretDoor.js b/scripts/portal/secretDoor.js index 9748d0d367..392ec72f4d 100644 --- a/scripts/portal/secretDoor.js +++ b/scripts/portal/secretDoor.js @@ -30,7 +30,8 @@ function enter(pi) { if(pi.isQuestCompleted(3360)) { return doorCross(pi); } else if(pi.isQuestStarted(3360)) { - if(pi.getQuestProgress(3360, 1) == 0) { + var pw = pi.getQuestProgress(3360); + if(pw.length() > 1) { pi.openNpc(2111024, "MagatiaPassword"); return false; } else { diff --git a/scripts/quest/1021.js b/scripts/quest/1021.js index 143f404c80..b43519b843 100644 --- a/scripts/quest/1021.js +++ b/scripts/quest/1021.js @@ -43,7 +43,7 @@ function start(mode, type, selection) { status--; if (status == 0) - qm.sendNext("Hey, Man~ What's up? Haha! I am Roger who can teach you adorable new Maplers lots of information."); + qm.sendNext("Hey, " + (qm.getPlayer().getGender() == 0 ? "Man" : "Miss") + "~ What's up? Haha! I am Roger who can teach you adorable new Maplers lots of information."); else if (status == 1) qm.sendNextPrev("You are asking who made me do this? Ahahahaha!\r\nMyself! I wanted to do this and just be kind to you new travellers."); else if (status == 2) @@ -60,7 +60,7 @@ function start(mode, type, selection) { qm.forceStartQuest(); qm.sendNext("Surprised? If HP becomes 0, then you are in trouble. Now, I will give you #rRoger's Apple#k. Please take it. You will feel stronger. Open the Item window and double click to consume. Hey, it's very simple to open the Item window. Just press #bI#k on your keyboard."); } else if (status == 4) { - qm.sendNextPrev("Please take all Roger's Apples that I gave you. You will be able to see the HP bar increasing. Please talk to me again when you recover your HP 100%."); + qm.sendPrev("Please take all Roger's Apples that I gave you. You will be able to see the HP bar increasing. Please talk to me again when you recover your HP 100%."); } else if (status == 5) { qm.showInfo("UI/tutorial.img/28"); qm.dispose(); @@ -91,7 +91,7 @@ function end(mode, type, selection) { else if (status == 1) qm.sendNextPrev("Alright! Now that you have learned alot, I will give you a present. This is a must for your travel in Maple World, so thank me! Please use this under emergency cases!"); else if (status == 2) - qm.sendNextPrev("Okay, this is all I can teach you. I know it's sad but it is time to say good bye. Well take care if yourself and Good luck my friend!\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n#v2010000# 3 #t2010000#\r\n#v2010009# 3 #t2010009#\r\n\r\n#fUI/UIWindow.img/QuestIcon/8/0# 10 exp"); + qm.sendPrev("Okay, this is all I can teach you. I know it's sad but it is time to say good bye. Well take care if yourself and Good luck my friend!\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n#v2010000# 3 #t2010000#\r\n#v2010009# 3 #t2010009#\r\n\r\n#fUI/UIWindow.img/QuestIcon/8/0# 10 exp"); else if (status == 3) { if(qm.isQuestCompleted(1021)) qm.dropMessage(1,"Unknown Error"); diff --git a/scripts/quest/20010.js b/scripts/quest/20010.js index eb3d98ac80..e68d48f35f 100644 --- a/scripts/quest/20010.js +++ b/scripts/quest/20010.js @@ -5,6 +5,12 @@ function start(mode, type, selection) { qm.sendNext("Whoa, whoa! Are you really declining my offer? Well, you'll be able to #blevel-up quicker #kwith our help, so let me know if you change your mind. Even if you've declined a Quest, you can receive the Quest again if you just come and talk to me."); qm.dispose(); } else { + if(mode == 0 && type > 0) { + qm.sendNext("Whoa, whoa! Are you really declining my offer? Well, you'll be able to #blevel-up quicker #kwith our help, so let me know if you change your mind. Even if you've declined a Quest, you can receive the Quest again if you just come and talk to me."); + qm.dispose(); + return; + } + if (mode == 1) status++; else @@ -14,7 +20,7 @@ function start(mode, type, selection) { } else if (status == 1) { qm.sendNextPrev("If you want to officially become a part of Cygnus Knights, you must first meet the Empress. She's at the center of this island, accompained by Shinsoo. My brothers and I would like to share with you a few things that are considered #bBasic Knowledge#k in Maple World before you go. Would that be okay?"); } else if (status == 2) { - qm.sendOk("Oh, let me warn you that this is a Quest. You may have noticed that NPCs around Maple World occasionally ask you for various favors. A favor of that sort is called a #bQuest#k. You will receive reward items or EXP upon completing Quests, so I strongly suggest you diligently fulfill the favors of Maple NPCs."); + qm.sendNextPrev("Oh, let me warn you that this is a Quest. You may have noticed that NPCs around Maple World occasionally ask you for various favors. A favor of that sort is called a #bQuest#k. You will receive reward items or EXP upon completing Quests, so I strongly suggest you diligently fulfill the favors of Maple NPCs."); } else if (status == 3) { qm.sendAcceptDecline("Would you like to meet #bKizan#k, who can tell you about hunting? You can find Kizan by following the arrow to the left."); } else if (status == 4) { @@ -31,7 +37,7 @@ function end(mode, type, selection) { qm.dispose(); } else { if (status == 0) { - qm.sendNext("Are you the Noblesse my brother Kimu sent? Nice to meet you! I'm Kizan. I'll give you the reward Kimu asked me to give you. Remember, you can check your Inventory by pressing the #bI key#k. Red potions help you recover HP, and blue ones help recover MP. It's a good idea to learn how to use them beforehand so you'll be ready with them when you're in danger. \r\n\r\n#fUI/UIWindow.img/Quest/reward# \r\n\r\n#v2000020# #z2000020# \r\n#v2000021# #z2000021# \r\n\r\n#fUI/UIWindow.img/QuestIcon/8/0#15 exp"); + qm.sendOk("Are you the Noblesse my brother Kimu sent? Nice to meet you! I'm Kizan. I'll give you the reward Kimu asked me to give you. Remember, you can check your Inventory by pressing the #bI key#k. Red potions help you recover HP, and blue ones help recover MP. It's a good idea to learn how to use them beforehand so you'll be ready with them when you're in danger. \r\n\r\n#fUI/UIWindow.img/Quest/reward# \r\n\r\n#v2000020# #z2000020# \r\n#v2000021# #z2000021# \r\n\r\n#fUI/UIWindow.img/QuestIcon/8/0#15 exp"); } else if (status == 1) { if(qm.canHold(2000022) && qm.canHold(2000023)){ if(!qm.isQuestCompleted(21010)) { diff --git a/scripts/quest/20011.js b/scripts/quest/20011.js index 1153de5c31..be08d1c3fa 100644 --- a/scripts/quest/20011.js +++ b/scripts/quest/20011.js @@ -48,7 +48,7 @@ function end(mode, type, selection) { if (status == 0) { qm.sendNext("Ah, it seems like you've successfully hunted a #o100120#. Pretty simple, right? Regular Attacks may be easy to use, but they are pretty weak. Don't worry, though. #p1102006# will teach you how to use more powerful skills. Wait, let me give you a well-deserved quest reward before you go."); } else if (status == 1) { - qm.sendNextPrev("This equipment is for Noblesses. It's much cooler than what you're wearing right now, isn't it? Follow the arrows to your left to meet my younger brother #b#p1102006##k. How about you change into your new Noblesse outfit before you go? \r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0# \r\n#i1002869# #t1002869# - 1 \r\n#i1052177# #t1052177# - 1 \r\n\r\n#fUI/UIWindow.img/QuestIcon/8/0# 30 exp"); + qm.sendPrev("This equipment is for Noblesses. It's much cooler than what you're wearing right now, isn't it? Follow the arrows to your left to meet my younger brother #b#p1102006##k. How about you change into your new Noblesse outfit before you go? \r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0# \r\n#i1002869# #t1002869# - 1 \r\n#i1052177# #t1052177# - 1 \r\n\r\n#fUI/UIWindow.img/QuestIcon/8/0# 30 exp"); } else if (status == 2) { qm.gainItem(1002869, 1); qm.gainItem(1052177, 1); diff --git a/scripts/quest/20013.js b/scripts/quest/20013.js index 6efdb7a762..6742172b5e 100644 --- a/scripts/quest/20013.js +++ b/scripts/quest/20013.js @@ -52,7 +52,7 @@ function end(mode, type, selection) { if (status == 0) { qm.sendNext("Did you bring me a Building Stone and a Drape? Let's see. Ah, these are just what I need! They indeed are a #t4032267# and a #t4032268#! I'll make you a Chair right away."); } else if (status == 1) { - qm.sendNextPrev("Here it is, a #t3010060#. What do you think? Nifty, huh? You can #bquickly recover your HP by sitting in this Chair#k. It will be stored in the #bSet-up#k window in your Inventory, so confirm that you've received the chair and head over to #b#p1102008##k. You'll see him if you keep following the arrow to the left. \r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0# \r\n#i3010060# 1 #t3010060# \r\n#fUI/UIWindow.img/QuestIcon/8/0# 95 exp"); + qm.sendPrev("Here it is, a #t3010060#. What do you think? Nifty, huh? You can #bquickly recover your HP by sitting in this Chair#k. It will be stored in the #bSet-up#k window in your Inventory, so confirm that you've received the chair and head over to #b#p1102008##k. You'll see him if you keep following the arrow to the left. \r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0# \r\n#i3010060# 1 #t3010060# \r\n#fUI/UIWindow.img/QuestIcon/8/0# 95 exp"); } else if (status == 2) { qm.gainItem(4032267, -1); qm.gainItem(4032268, -1); diff --git a/scripts/quest/20020.js b/scripts/quest/20020.js new file mode 100644 index 0000000000..03e87a5f2f --- /dev/null +++ b/scripts/quest/20020.js @@ -0,0 +1,38 @@ +/* + NPC Name: Nineheart + Description: Quest - Cygnus movie Intro +*/ +var status = -1; + +function start(mode, type, selection) { + if (mode == -1) { + qm.sendOk("Talk to me after you have decided what you really want to do. Whatever you choose, you will not miss out or lose privileges, so don't take this too seriously..."); + qm.dispose(); + } else { + if(mode == 0 && type > 0 || selection == 1) { + qm.sendOk("Talk to me after you have decided what you really want to do. Whatever you choose, you will not miss out or lose privileges, so don't take this too seriously..."); + qm.dispose(); + return; + } + + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + qm.sendNext("I can tell you've worked really hard by seeing that you're already at Level 10. I think it's time now for you to break out as a Nobless and officially become the Knight-in-Training. Before doing that, however, I want to ask you one thing. Have you decided which Knight you'd want to beome?"); + } else if (status == 1) { + qm.sendNextPrev("There isn't a single path to becoming a Knight. In fact, there are five of them laid out for you. It's up to you to choose which path you'd like to take, but it should definitely be something you will not regret. That's why... I am offering to show you what you'll look like once you become a Knight."); + } else if (status == 2) { + qm.sendSimple("What do you think? Are you interested in seeing yourself as the leader of the Knights? If you have already decided what kind of Knight you'd like to become, then you won't necessarily have to look at it...\r\n\r\n#b#L0#Show me how I'd look like as the leader of the Knights.#l ..#b#L1#No, I'm okay."); + } else if (status == 3) { + qm.sendYesNo("Would you like to see for it yourself right now? A short clip will come out soon. Be prepared for what you are about to witness."); + } else if (status == 4) { + qm.forceStartQuest(); + qm.forceCompleteQuest(); + //qm.warp(913040100, 0); + qm.dispose(); + } + } +} diff --git a/scripts/quest/20101.js b/scripts/quest/20101.js index 5c4fb9ea9c..a53b48f168 100644 --- a/scripts/quest/20101.js +++ b/scripts/quest/20101.js @@ -6,6 +6,7 @@ importPackage(Packages.client); var status = -1; var jobType = 1; +var canTryFirstJob = true; function end(mode, type, selection) { if (mode == 0) { @@ -21,32 +22,35 @@ function end(mode, type, selection) { if (status == 0) { qm.sendYesNo("Have you made your decision? The decision will be final, so think carefully before deciding what to do. Are you sure you want to become a Dawn Warrior?"); } else if (status == 1) { - if(!qm.canGetFirstJob(jobType)) { - qm.sendOk("Train a bit more until you reach #blevel 10, " + qm.getFirstJobStatRequirement(jobType) + "#k and I can show you the way of the #rDawn Warrior#k."); - qm.dispose(); - return; + if (canTryFirstJob) { + canTryFirstJob = false; + if (qm.getPlayer().getJob().getId() != 1100) { + if(!qm.canGetFirstJob(jobType)) { + qm.sendOk("Train a bit more until you reach #blevel 10, " + qm.getFirstJobStatRequirement(jobType) + "#k and I can show you the way of the #rDawn Warrior#k."); + qm.dispose(); + return; + } + + if (!(qm.canHoldAll([1302077, 1142066]))) { + qm.sendOk("Make some room in your inventory and talk back to me."); + qm.dispose(); + return; + } + + qm.gainItem(1302077, 1); + qm.gainItem(1142066, 1); + qm.changeJob(MapleJob.DAWNWARRIOR1); + qm.getPlayer().resetStats(); + } + qm.forceCompleteQuest(); } - - if (!(qm.canHoldAll([1302077, 1142066]))) { - qm.sendOk("Make some room in your inventory and talk back to me."); - qm.dispose(); - return; - } - - qm.sendNext("I have just molded your body to make it perfect for a Dawn Warrior. If you wish to become more powerful, use Stat Window (S) to raise the appropriate stats. If you aren't sure what to raise, just click on #bAuto#k."); - if (qm.getPlayer().getJob().getId() != 1100) { - qm.gainItem(1302077, 1); - qm.gainItem(1142066, 1); - qm.changeJob(MapleJob.DAWNWARRIOR1); - qm.getPlayer().resetStats(); - } - qm.forceCompleteQuest(); + qm.sendNext("I have just molded your body to make it perfect for a Dawn Warrior. If you wish to become more powerful, use Stat Window (S) to raise the appropriate stats. If you aren't sure what to raise, just click on #bAuto#k."); } else if (status == 2) { qm.sendNextPrev("I have also expanded your inventory slot counts for your equipment and etc. inventory. Use those slots wisely and fill them up with items required for Knights to carry."); } else if (status == 3) { qm.sendNextPrev("I have also given you a hint of #bSP#k, so open the #bSkill Menu#k to acquire new skills. Of course, you can't raise them at all once, and there are some skills out there where you won't be able to acquire them unless you master the basic skills first."); } else if (status == 4) { - qm.sendNextPrev("Unlike your time as a Nobless, once you become the Dawn Warrior, you will lost a portion of your EXP when you run out of HP, okay?"); + qm.sendNextPrev("Unlike your time as a Noblesse, once you become the Dawn Warrior, you will lost a portion of your EXP when you run out of HP, okay?"); } else if (status == 5) { qm.sendNextPrev("Now... I want you to go out there and show the world how the Knights of Cygnus operate."); } else if (status == 6) { diff --git a/scripts/quest/20102.js b/scripts/quest/20102.js index 852b4d7337..fec8015c50 100644 --- a/scripts/quest/20102.js +++ b/scripts/quest/20102.js @@ -6,6 +6,7 @@ importPackage(Packages.client); var status = -1; var jobType = 2; +var canTryFirstJob = true; function end(mode, type, selection) { if (mode == 0) { @@ -21,32 +22,35 @@ function end(mode, type, selection) { if (status == 0) { qm.sendYesNo("Have you made your decision? The decision will be final, so think carefully before deciding what to do. Are you sure you want to become a Blaze Wizard?"); } else if (status == 1) { - if(!qm.canGetFirstJob(jobType)) { - qm.sendOk("Train a bit more until you reach #blevel 10, " + qm.getFirstJobStatRequirement(jobType) + "#k and I can show you the way of the #rBlaze Wizard#k."); - qm.dispose(); - return; + if (canTryFirstJob) { + canTryFirstJob = false; + if (qm.getPlayer().getJob().getId() != 1200) { + if(!qm.canGetFirstJob(jobType)) { + qm.sendOk("Train a bit more until you reach #blevel 10, " + qm.getFirstJobStatRequirement(jobType) + "#k and I can show you the way of the #rBlaze Wizard#k."); + qm.dispose(); + return; + } + + if (!(qm.canHoldAll([1372043, 1142066]))) { + qm.sendOk("Make some room in your inventory and talk back to me."); + qm.dispose(); + return; + } + + qm.gainItem(1372043, 1); + qm.gainItem(1142066, 1); + qm.changeJob(MapleJob.BLAZEWIZARD1); + qm.getPlayer().resetStats(); + } + qm.forceCompleteQuest(); } - - if (!(qm.canHoldAll([1372043, 1142066]))) { - qm.sendOk("Make some room in your inventory and talk back to me."); - qm.dispose(); - return; - } - - qm.sendNext("I have just molded your body to make it perfect for a Blaze Wizard. If you wish to become more powerful, use Stat Window (S) to raise the appropriate stats. If you aren't sure what to raise, just click on #bAuto#k."); - if (qm.getPlayer().getJob().getId() != 1200) { - qm.gainItem(1372043, 1); - qm.gainItem(1142066, 1); - qm.changeJob(MapleJob.BLAZEWIZARD1); - qm.getPlayer().resetStats(); - } - qm.forceCompleteQuest(); + qm.sendNext("I have just molded your body to make it perfect for a Blaze Wizard. If you wish to become more powerful, use Stat Window (S) to raise the appropriate stats. If you aren't sure what to raise, just click on #bAuto#k."); } else if (status == 2) { qm.sendNextPrev("I have also expanded your inventory slot counts for your equipment and etc. inventory. Use those slots wisely and fill them up with items required for Knights to carry."); } else if (status == 3) { qm.sendNextPrev("I have also given you a hint of #bSP#k, so open the #bSkill Menu#k to acquire new skills. Of course, you can't raise them at all once, and there are some skills out there where you won't be able to acquire them unless you master the basic skills first."); } else if (status == 4) { - qm.sendNextPrev("Unlike your time as a Nobless, once you become the Blaze Wizard, you will lost a portion of your EXP when you run out of HP, okay?"); + qm.sendNextPrev("Unlike your time as a Noblesse, once you become the Blaze Wizard, you will lost a portion of your EXP when you run out of HP, okay?"); } else if (status == 5) { qm.sendNextPrev("Now... I want you to go out there and show the world how the Knights of Cygnus operate."); } else if (status == 6) { diff --git a/scripts/quest/20103.js b/scripts/quest/20103.js index 2c119025c2..8aadf16618 100644 --- a/scripts/quest/20103.js +++ b/scripts/quest/20103.js @@ -6,6 +6,7 @@ importPackage(Packages.client); var status = -1; var jobType = 3; +var canTryFirstJob = true; function end(mode, type, selection) { if (mode == 0) { @@ -21,33 +22,36 @@ function end(mode, type, selection) { if (status == 0) { qm.sendYesNo("Have you made your decision? The decision will be final, so think carefully before deciding what to do. Are you sure you want to become a Wind Archer?"); } else if (status == 1) { - if(!qm.canGetFirstJob(jobType)) { - qm.sendOk("Train a bit more until you reach #blevel 10, " + qm.getFirstJobStatRequirement(jobType) + "#k and I can show you the way of the #rWind Archer#k."); - qm.dispose(); - return; + if (canTryFirstJob) { + canTryFirstJob = false; + if (qm.getPlayer().getJob().getId() != 1300) { + if(!qm.canGetFirstJob(jobType)) { + qm.sendOk("Train a bit more until you reach #blevel 10, " + qm.getFirstJobStatRequirement(jobType) + "#k and I can show you the way of the #rWind Archer#k."); + qm.dispose(); + return; + } + + if (!(qm.canHoldAll([1452051, 1142066]) && qm.canHold(2070000))) { + qm.sendOk("Make some room in your inventory and talk back to me."); + qm.dispose(); + return; + } + + qm.gainItem(2060000, 2000); + qm.gainItem(1452051, 1); + qm.gainItem(1142066, 1); + qm.changeJob(MapleJob.WINDARCHER1); + qm.getPlayer().resetStats(); + } + qm.forceCompleteQuest(); } - - if (!(qm.canHoldAll([1452051, 1142066]) && qm.canHold(2070000))) { - qm.sendOk("Make some room in your inventory and talk back to me."); - qm.dispose(); - return; - } - - qm.sendNext("I have just molded your body to make it perfect for a Wind Archer. If you wish to become more powerful, use Stat Window (S) to raise the appropriate stats. If you aren't sure what to raise, just click on #bAuto#k."); - if (qm.getPlayer().getJob().getId() != 1300) { - qm.gainItem(2060000, 2000); - qm.gainItem(1452051, 1); - qm.gainItem(1142066, 1); - qm.changeJob(MapleJob.WINDARCHER1); - qm.getPlayer().resetStats(); - } - qm.forceCompleteQuest(); + qm.sendNext("I have just molded your body to make it perfect for a Wind Archer. If you wish to become more powerful, use Stat Window (S) to raise the appropriate stats. If you aren't sure what to raise, just click on #bAuto#k."); } else if (status == 2) { qm.sendNextPrev("I have also expanded your inventory slot counts for your equipment and etc. inventory. Use those slots wisely and fill them up with items required for Knights to carry."); } else if (status == 3) { qm.sendNextPrev("I have also given you a hint of #bSP#k, so open the #bSkill Menu#k to acquire new skills. Of course, you can't raise them at all once, and there are some skills out there where you won't be able to acquire them unless you master the basic skills first."); } else if (status == 4) { - qm.sendNextPrev("Unlike your time as a Nobless, once you become the Wind Archer, you will lost a portion of your EXP when you run out of HP, okay?"); + qm.sendNextPrev("Unlike your time as a Noblesse, once you become the Wind Archer, you will lost a portion of your EXP when you run out of HP, okay?"); } else if (status == 5) { qm.sendNextPrev("Now... I want you to go out there and show the world how the Knights of Cygnus operate."); } else if (status == 6) { diff --git a/scripts/quest/20104.js b/scripts/quest/20104.js index 3957ff6101..2f4ee320c7 100644 --- a/scripts/quest/20104.js +++ b/scripts/quest/20104.js @@ -6,6 +6,7 @@ importPackage(Packages.client); var status = -1; var jobType = 4; +var canTryFirstJob = true; function end(mode, type, selection) { if (mode == 0) { @@ -21,33 +22,36 @@ function end(mode, type, selection) { if (status == 0) { qm.sendYesNo("Have you made your decision? The decision will be final, so think carefully before deciding what to do. Are you sure you want to become a Night Walker?"); } else if (status == 1) { - if(!qm.canGetFirstJob(jobType)) { - qm.sendOk("Train a bit more until you reach #blevel 10, " + qm.getFirstJobStatRequirement(jobType) + "#k and I can show you the way of the #rNight Walker#k."); - qm.dispose(); - return; + if (canTryFirstJob) { + canTryFirstJob = false; + if (qm.getPlayer().getJob().getId() != 1400) { + if(!qm.canGetFirstJob(jobType)) { + qm.sendOk("Train a bit more until you reach #blevel 10, " + qm.getFirstJobStatRequirement(jobType) + "#k and I can show you the way of the #rNight Walker#k."); + qm.dispose(); + return; + } + + if (!(qm.canHoldAll([1472061, 1142066]) && qm.canHold(2070000))) { + qm.sendOk("Make some room in your inventory and talk back to me."); + qm.dispose(); + return; + } + + qm.gainItem(1472061, 1); + qm.gainItem(2070000, 800); + qm.gainItem(1142066, 1); + qm.changeJob(MapleJob.NIGHTWALKER1); + qm.getPlayer().resetStats(); + } + qm.forceCompleteQuest(); } - - if (!(qm.canHoldAll([1472061, 1142066]) && qm.canHold(2070000))) { - qm.sendOk("Make some room in your inventory and talk back to me."); - qm.dispose(); - return; - } - - qm.sendNext("I have just molded your body to make it perfect for a Night Walker. If you wish to become more powerful, use Stat Window (S) to raise the appropriate stats. If you aren't sure what to raise, just click on #bAuto#k."); - if (qm.getPlayer().getJob().getId() != 1400) { - qm.gainItem(1472061, 1); - qm.gainItem(2070000, 800); - qm.gainItem(1142066, 1); - qm.changeJob(MapleJob.NIGHTWALKER1); - qm.getPlayer().resetStats(); - } - qm.forceCompleteQuest(); + qm.sendNext("I have just molded your body to make it perfect for a Night Walker. If you wish to become more powerful, use Stat Window (S) to raise the appropriate stats. If you aren't sure what to raise, just click on #bAuto#k."); } else if (status == 2) { qm.sendNextPrev("I have also expanded your inventory slot counts for your equipment and etc. inventory. Use those slots wisely and fill them up with items required for Knights to carry."); } else if (status == 3) { qm.sendNextPrev("I have also given you a hint of #bSP#k, so open the #bSkill Menu#k to acquire new skills. Of course, you can't raise them at all once, and there are some skills out there where you won't be able to acquire them unless you master the basic skills first."); } else if (status == 4) { - qm.sendNextPrev("Unlike your time as a Nobless, once you become the Night Walker, you will lost a portion of your EXP when you run out of HP, okay?"); + qm.sendNextPrev("Unlike your time as a Noblesse, once you become the Night Walker, you will lost a portion of your EXP when you run out of HP, okay?"); } else if (status == 5) { qm.sendNextPrev("Now... I want you to go out there and show the world how the Knights of Cygnus operate."); } else if (status == 6) { diff --git a/scripts/quest/20105.js b/scripts/quest/20105.js index 5d957edb9d..03e933f019 100644 --- a/scripts/quest/20105.js +++ b/scripts/quest/20105.js @@ -6,6 +6,7 @@ importPackage(Packages.client); var status = -1; var jobType = 5; +var canTryFirstJob = true; function end(mode, type, selection) { if (mode == 0) { @@ -21,32 +22,35 @@ function end(mode, type, selection) { if (status == 0) { qm.sendYesNo("Have you made your decision? The decision will be final, so think carefully before deciding what to do. Are you sure you want to become a Thunder Breaker?"); } else if (status == 1) { - if(!qm.canGetFirstJob(jobType)) { - qm.sendOk("Train a bit more until you reach #blevel 10, " + qm.getFirstJobStatRequirement(jobType) + "#k and I can show you the way of the #rThunder Breaker#k."); - qm.dispose(); - return; + if (canTryFirstJob) { + canTryFirstJob = false; + if (qm.getPlayer().getJob().getId() != 1500) { + if(!qm.canGetFirstJob(jobType)) { + qm.sendOk("Train a bit more until you reach #blevel 10, " + qm.getFirstJobStatRequirement(jobType) + "#k and I can show you the way of the #rThunder Breaker#k."); + qm.dispose(); + return; + } + + if (!(qm.canHoldAll([1482014, 1142066]))) { + qm.sendOk("Make some room in your inventory and talk back to me."); + qm.dispose(); + return; + } + + qm.gainItem(1482014, 1); + qm.gainItem(1142066, 1); + qm.getPlayer().changeJob(MapleJob.THUNDERBREAKER1); + qm.getPlayer().resetStats(); + } + qm.forceCompleteQuest(); } - - if (!(qm.canHoldAll([1482014, 1142066]))) { - qm.sendOk("Make some room in your inventory and talk back to me."); - qm.dispose(); - return; - } - - qm.sendNext("I have just molded your body to make it perfect for a Thunder Breaker. If you wish to become more powerful, use Stat Window (S) to raise the appropriate stats. If you aren't sure what to raise, just click on #bAuto#k."); - if (qm.getPlayer().getJob().getId() != 1500) { - qm.gainItem(1482014, 1); - qm.gainItem(1142066, 1); - qm.getPlayer().changeJob(MapleJob.THUNDERBREAKER1); - qm.getPlayer().resetStats(); - } - qm.forceCompleteQuest(); + qm.sendNext("I have just molded your body to make it perfect for a Thunder Breaker. If you wish to become more powerful, use Stat Window (S) to raise the appropriate stats. If you aren't sure what to raise, just click on #bAuto#k."); } else if (status == 2) { qm.sendNextPrev("I have also expanded your inventory slot counts for your equipment and etc. inventory. Use those slots wisely and fill them up with items required for Knights to carry."); } else if (status == 3) { qm.sendNextPrev("I have also given you a hint of #bSP#k, so open the #bSkill Menu#k to acquire new skills. Of course, you can't raise them at all once, and there are some skills out there where you won't be able to acquire them unless you master the basic skills first."); } else if (status == 4) { - qm.sendNextPrev("Unlike your time as a Nobless, once you become the Thunder Breaker, you will lost a portion of your EXP when you run out of HP, okay?"); + qm.sendNextPrev("Unlike your time as a Noblesse, once you become the Thunder Breaker, you will lost a portion of your EXP when you run out of HP, okay?"); } else if (status == 5) { qm.sendNextPrev("Now... I want you to go out there and show the world how the Knights of Cygnus operate."); } else if (status == 6) { diff --git a/scripts/quest/20514.js b/scripts/quest/20514.js new file mode 100644 index 0000000000..045fadc608 --- /dev/null +++ b/scripts/quest/20514.js @@ -0,0 +1,52 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2018 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +// @Author Ronan + +importPackage(Packages.constants.game); +importPackage(Packages.server); + +function raiseOpen() { + var chr = qm.getPlayer(); + var questStatus = chr.getQuestStatus(qm.getQuest()); + + if (questStatus == 0) { + qm.setQuestProgress(20515, 0, chr.getLevel()); + qm.setQuestProgress(20515, 1, chr.getExp()); + } else if (questStatus == 1) { // update mimiana progress... + var diffExp = chr.getExp() - qm.getQuestProgressInt(20515, 1); + + var initLevel = qm.getQuestProgressInt(20515, 0); + for (var i = initLevel; i < chr.getLevel(); i++) { + diffExp += ExpTable.getExpNeededForLevel(i); + } + + if (diffExp > 0) { // thanks IxianMace for noticing Mimiana egg not following progress by EXP + var consItem = MapleItemInformationProvider.getInstance().getQuestConsumablesInfo(4220137); + var exp = consItem.exp; + var grade = consItem.grade; + + qm.setQuestProgress(20514, 0, Math.min(diffExp, exp * grade)); + } + } + + qm.dispose(); +} + diff --git a/scripts/quest/2236.js b/scripts/quest/2236.js deleted file mode 100644 index 41e90b07a0..0000000000 --- a/scripts/quest/2236.js +++ /dev/null @@ -1,63 +0,0 @@ -/* =========================================================== - Ronan Lana - NPC Name: Chrishrama - Description: Quest - How to Shoo Away the Evil -============================================================= -Version 1.0 - Script Done.(20/3/2017) -============================================================= -*/ - -var status = -1; -var canStart; - -function start(mode, type, selection) { - status++; - if (mode != 1) { - if(type == 1 && mode == 0) - status -= 2; - else{ - qm.sendOk("If we don't place these Charms on the Shaman Rocks, evil might awaken..."); - canStart = false; - status = 0; - return; - } - } - if (status == 0) { - qm.sendAcceptDecline("I can feel the forces of evil. They're deep inside the dungeon and they're very, very powerful. If we want to drive the evil away from this place, we must place Charms on the Shaman Rocks inside the dungeon. Will you do that for me?"); - canStart = true; - } else if (status == 1) { - if (canStart) { - qm.sendOk("Take these Charms and place them on the Shaman Rocks in the dungeon. I'm giving you a total of 6 Charms."); - } else { - qm.dispose(); - } - } else { - qm.forceStartQuest(); - - if(qm.haveItem(4032263)) qm.gainItem(4032263, -6); - qm.gainItem(4032263, 6); - - qm.dispose(); - } -} - -function end(mode, type, selection) { - status++; - - if(status == 0) { - if(qm.getQuestProgress(2236) == 63) { //111111 - qm.sendOk("I, too, felt it. The force of the Shaman Rocks began to overpower the forces of evil. I think Sleepywood is safe now. The evil has been eliminated."); - qm.gainExp(60000); - qm.forceCompleteQuest(); - } - else { - if(qm.haveItem(4032263)) qm.gainItem(4032263, -6); - qm.gainItem(4032263, 6); - - qm.sendOk("Oh, not good. I still sense bad omens coming from the interior. Here, take these charms and seal them at the Shaman Rocks. We are counting on you."); - qm.updateQuest(2236, 0); - } - } else if (status == 1) { - qm.dispose(); - } -} \ No newline at end of file diff --git a/scripts/quest/2251.js b/scripts/quest/2251.js deleted file mode 100644 index e3e02b116f..0000000000 --- a/scripts/quest/2251.js +++ /dev/null @@ -1,38 +0,0 @@ -/* - Author: Kevin - Quest: Zombie Mushroom Signal 3 (2251) - NPC: The Rememberer (1061011) - Item: Recording Charm (4032399) -*/ - -var status = -1; - -function end(mode, type, selection) { - if (mode == -1) { - qm.dispose(); - } else { - if(mode == 0 && type > 0) { - qm.dispose(); - return; - } - - if (mode == 1) - status++; - else - status--; - - if (status == 0) { - if(!qm.haveItem(4032399, 20)) { - qm.sendOk("Please bring me 20 #b#t4032399##k... #i4032399#"); - } - else { - qm.gainItem(4032399, -20); - qm.sendOk("Oh, you brought 20 #b#t4032399##k! Thank you."); - qm.gainExp(8000); - qm.forceCompleteQuest(); - } - } else if (status == 1) { - qm.dispose(); - } - } -} \ No newline at end of file diff --git a/scripts/quest/2260.js b/scripts/quest/2260.js index 4c196cdf26..6a99207e6d 100644 --- a/scripts/quest/2260.js +++ b/scripts/quest/2260.js @@ -18,7 +18,7 @@ along with this program. If not, see . */ -importPackage(Packages.constants); +importPackage(Packages.constants.game); var status = -1; diff --git a/scripts/quest/3114.js b/scripts/quest/3114.js deleted file mode 100644 index 46883d9ee5..0000000000 --- a/scripts/quest/3114.js +++ /dev/null @@ -1,62 +0,0 @@ -/* - This file is part of the HeavenMS MapleStory Server - Copyleft (L) 2016 - 2018 RonanLana - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation version 3 as published by - the Free Software Foundation. You may not use, modify or distribute - this program under any other version of the GNU Affero General Public - License. - - 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 Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ - -var status = -1; - -function end(mode, type, selection) { - if (mode == -1) { - qm.dispose(); - } else { - if(mode == 0 && type > 0) { - qm.dispose(); - return; - } - - if (mode == 1) - status++; - else - status--; - - if (status == 0) { - if(qm.getQuestProgress(3114, 7777) != -1) { - if(!qm.haveItem(4161036, 1)) { - if(qm.canHold(4161036, 1)) { - qm.gainItem(4161036, 1); - qm.sendNext("Seems you lost a book with the notes to Little Star. Here is another one. Please play it for me.", 9); - } else { - qm.sendNext("Seems you lost a book with the notes to Little Star, but you don't have an ETC available. Please free some room.", 9); - } - } else { - qm.sendNext(".....", 9); - } - - qm.dispose(); - return; - } - - qm.sendNext("(Eliza seems to be in deep sleep.)", 3); - } else if (status == 1) { - qm.gainFame(20); - - qm.forceCompleteQuest(); - qm.dispose(); - } - } -} \ No newline at end of file diff --git a/scripts/quest/3311.js b/scripts/quest/3311.js deleted file mode 100644 index 572eb80bc4..0000000000 --- a/scripts/quest/3311.js +++ /dev/null @@ -1,49 +0,0 @@ -/* - This file is part of the HeavenMS MapleStory Server - Copyleft (L) 2016 - 2018 RonanLana - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation version 3 as published by - the Free Software Foundation. You may not use, modify or distribute - this program under any other version of the GNU Affero General Public - License. - - 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 Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ - -var status = -1; - -function end(mode, type, selection) { - if (mode == -1) { - qm.dispose(); - } else { - if(mode == 0 && type > 0) { - qm.dispose(); - return; - } - - if (mode == 1) - status++; - else - status--; - - if (status == 0) { - if(qm.getQuestProgress(3311, 0) == 1 && qm.getQuestProgress(3311, 1) == 1) { - qm.sendNext("Hmm, so the Alcadno doctor wrote something about researching some vanguardist Neo Huroid machine, that could beat by far the existing one, and was about to prepare the last steps of his rehearsal? We don't have a word about him for about three weeks now, something must have gone wrong..."); - qm.gainExp(60000); - qm.forceCompleteQuest(); - } else { - qm.sendNext("Found nothing yet? Please check out Dr. De Lang's house properly, something there may give out a clue about what is going on."); - } - } else if (status == 1) { - qm.dispose(); - } - } -} \ No newline at end of file diff --git a/scripts/quest/3360.js b/scripts/quest/3360.js index 1b1246c66b..78496c6381 100644 --- a/scripts/quest/3360.js +++ b/scripts/quest/3360.js @@ -24,6 +24,7 @@ Description: Quest - Verifying the password */ var status = -1; +var pass; function start(mode, type, selection) { if (mode == -1) { @@ -47,37 +48,16 @@ function start(mode, type, selection) { } else if (status == 1) { qm.sendAcceptDecline("All right, now, this key is very long and complex. I need you to memorize it very well. I won't say again, so you'd better write it down somewhere. Are you ready?"); } else if (status == 2) { - var pass = generateString(); + pass = generateString(); qm.sendOk("The key code is #b" + pass + "#k. Got that? Put the key into the door of the secret passage, and you will be able to walk around the passage freely."); - qm.forceStartQuest(); - qm.setStringQuestProgress(3360, 0, pass); } else if (status == 3) { + qm.forceStartQuest(); + qm.setQuestProgress(3360, pass); qm.dispose(); } } } -function end(mode, type, selection) { - if (mode == -1) { - qm.dispose(); - } else { - if (mode == 1) - status++; - else - status--; - if (status == 0) { - if(qm.getQuestProgress(3360, 1) == 0) { - qm.sendNext("What's up? You haven't opened the Secret Passage yet?"); - } else { - qm.forceCompleteQuest(); - qm.dispose(); - } - } else if (status == 1) { - qm.dispose(); - } - } -} - function generateString() { var thestring = ""; var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; diff --git a/scripts/quest/3523.js b/scripts/quest/3523.js index 46e47d819c..4f8ab2905d 100644 --- a/scripts/quest/3523.js +++ b/scripts/quest/3523.js @@ -41,7 +41,7 @@ function start(mode, type, selection) { if (status == 0) { qm.startQuest(); - //qm.getPlayer().updateQuestInfo(3507, "1"); + qm.setQuestProgress(3507, 7081, 1); // thanks resinate for pointing out uncompletable quest due to non-updated progress qm.completeQuest(); qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass."); } else if (status == 1) { diff --git a/scripts/quest/3524.js b/scripts/quest/3524.js index 47fe08adc4..4b740dd36b 100644 --- a/scripts/quest/3524.js +++ b/scripts/quest/3524.js @@ -41,7 +41,7 @@ function start(mode, type, selection) { if (status == 0) { qm.startQuest(); - //qm.getPlayer().updateQuestInfo(3507, "1"); + qm.setQuestProgress(3507, 7081, 1); qm.completeQuest(); qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass."); } else if (status == 1) { diff --git a/scripts/quest/3525.js b/scripts/quest/3525.js index 9ec196c5c2..97bbae92c7 100644 --- a/scripts/quest/3525.js +++ b/scripts/quest/3525.js @@ -41,7 +41,7 @@ function start(mode, type, selection) { if (status == 0) { qm.startQuest(); - //qm.getPlayer().updateQuestInfo(3507, "1"); + qm.setQuestProgress(3507, 7081, 1); qm.completeQuest(); qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass."); } else if (status == 1) { diff --git a/scripts/quest/3526.js b/scripts/quest/3526.js index 0e7a4d32b8..77b49a7ce1 100644 --- a/scripts/quest/3526.js +++ b/scripts/quest/3526.js @@ -41,7 +41,7 @@ function start(mode, type, selection) { if (status == 0) { qm.startQuest(); - //qm.getPlayer().updateQuestInfo(3507, "1"); + qm.setQuestProgress(3507, 7081, 1); qm.completeQuest(); qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass."); } else if (status == 1) { diff --git a/scripts/quest/3527.js b/scripts/quest/3527.js index 902ebb3f05..ce28f770f0 100644 --- a/scripts/quest/3527.js +++ b/scripts/quest/3527.js @@ -41,7 +41,7 @@ function start(mode, type, selection) { if (status == 0) { qm.startQuest(); - //qm.getPlayer().updateQuestInfo(3507, "1"); + qm.setQuestProgress(3507, 7081, 1); qm.completeQuest(); qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass."); } else if (status == 1) { diff --git a/scripts/quest/3529.js b/scripts/quest/3529.js index 7e2c07ba54..0c7d0eccef 100644 --- a/scripts/quest/3529.js +++ b/scripts/quest/3529.js @@ -36,8 +36,9 @@ function start(mode, type, selection) { if (status == 0) { qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass."); - } else if (status == 1) { + qm.setQuestProgress(3507, 7081, 1); qm.forceCompleteQuest(); + } else if (status == 1) { qm.dispose(); } } diff --git a/scripts/quest/3539.js b/scripts/quest/3539.js index 902ebb3f05..ce28f770f0 100644 --- a/scripts/quest/3539.js +++ b/scripts/quest/3539.js @@ -41,7 +41,7 @@ function start(mode, type, selection) { if (status == 0) { qm.startQuest(); - //qm.getPlayer().updateQuestInfo(3507, "1"); + qm.setQuestProgress(3507, 7081, 1); qm.completeQuest(); qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass."); } else if (status == 1) { diff --git a/scripts/quest/3926.js b/scripts/quest/3926.js deleted file mode 100644 index dce1ce974a..0000000000 --- a/scripts/quest/3926.js +++ /dev/null @@ -1,59 +0,0 @@ -/* - This file is part of the HeavenMS MapleStory Server - Copyleft (L) 2016 - 2018 RonanLana - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation version 3 as published by - the Free Software Foundation. You may not use, modify or distribute - this program under any other version of the GNU Affero General Public - License. - - 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 Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ -/* Screwing the Red Scorpions - */ - -var status = -1; - -function end(mode, type, selection) { - if (mode == -1) { - qm.dispose(); - } else { - if(mode == 0 && type > 0) { - qm.dispose(); - return; - } - - if (mode == 1) - status++; - else - status--; - - if (status == 0) { - var c = 0; - - for(var i = 0; i < 4; i++) { - if(qm.getQuestProgress(3926, i) == 1) { - c++; - } - } - - if(c == 4) { - qm.sendNext("You delivered all the jewels, well done!"); - qm.gainExp(6500); - qm.forceCompleteQuest(); - } else { - qm.sendNext("Have you brought all the jewels from the Red Scorpions? They have to be delivered to the Residential areas of the Sand Bandits."); - } - } else if (status == 1) { - qm.dispose(); - } - } -} diff --git a/scripts/quest/3927.js b/scripts/quest/3927.js deleted file mode 100644 index 5fb4319180..0000000000 --- a/scripts/quest/3927.js +++ /dev/null @@ -1,71 +0,0 @@ -/* - This file is part of the OdinMS Maple Story Server - Copyright (C) 2008 Patrick Huy - Matthias Butz - Jan Christian Meyer - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation version 3 as published by - the Free Software Foundation. You may not use, modify or distribute - this program under any other version of the GNU Affero General Public - License. - - 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 Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ -/* - Author : Ronan Lana -*/ - -var status = -1; - -function end(mode, type, selection) { - if (mode == -1) { - qm.dispose(); - } else { - if (mode == 0 && status == 0) { - qm.dispose(); - return; - } - - if (mode == 1) - status++; - else - status--; - - - if(qm.getQuestProgress(3927) == 0) { // didn't find the wall yet, eh? - qm.sendOk("Did you find the wall? Look closely, the wall is more near than you think!"); - qm.dispose(); - return; - } - - if (status == 0) { - qm.sendSimple("Did you find the wall?\r\n#L0##b I did, but... I have no idea what it's talking about.#l"); - } else if (status == 1) { - qm.sendSimple("What did it say?\r\n#L0##b 'If I had an iron hammer and a dagger, a bow and an arrow...'#l\r\n#L1# 'Byron S2 Sirin'#l\r\n#L2# 'Ahhh I forgot.'"); - } else if (status == 2) { - if(selection == 0) { - qm.sendOk("If I had an iron hammer and a dagger... a bow and an arrow... what does that mean? Do you want me to tell you? I don't know myself. It's something you should think about. If you need a clue... it would go something like... a weapon is just an item... until someone uses it...?"); - } else if(selection == 1) { - qm.sendOk("Man, Jiyur wrote on the wall again! Arrgh!!"); - qm.dispose(); - return; - } else { - qm.sendOk("What? You forgot? Do you remember where it was written?"); - qm.dispose(); - return; - } - } else if (status == 3) { - qm.gainExp(1000); - qm.forceCompleteQuest(); - qm.dispose(); - } - } -} \ No newline at end of file diff --git a/scripts/quest/3929.js b/scripts/quest/3929.js deleted file mode 100644 index 26b254eba3..0000000000 --- a/scripts/quest/3929.js +++ /dev/null @@ -1,70 +0,0 @@ -/* - This file is part of the HeavenMS MapleStory Server - Copyleft (L) 2016 - 2018 RonanLana - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation version 3 as published by - the Free Software Foundation. You may not use, modify or distribute - this program under any other version of the GNU Affero General Public - License. - - 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 Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ -/* Sejan's Test - Food delivery on Ariant - */ - -var status = -1; - -function end(mode, type, selection) { - if (mode == -1) { - qm.dispose(); - } else { - if(mode == 0 && type > 0) { - qm.dispose(); - return; - } - - if (mode == 1) - status++; - else - status--; - - if (status == 0) { - var c = 0; - - for(var i = 0; i < 4; i++) { - if(qm.getQuestProgress(3929, i) == 1) { - c++; - } - } - - if(c == 4) { - qm.sendNext("You delivered all the food, good."); - qm.gainExp(2000); - qm.forceCompleteQuest(); - } else { - var missed = (4 - qm.getItemQuantity(4031580)) - c; - if(missed > 0) { - if(qm.canHold(4031580, missed)) { - qm.gainItem(4031580, missed); - qm.sendNext("Hey, what are you trying to pull on? To pass my test you must deliver all the foods to the Residential areas."); - } else { - qm.sendNext("You don't completed the task, neither has slots available on the inventory to get the food. Free a slot on your ETC please."); - } - } else { - qm.sendNext("Hey, what are you trying to pull on? To pass my test you must to deliver all the foods to the Residential areas."); - } - } - } else if (status == 1) { - qm.dispose(); - } - } -} diff --git a/scripts/quest/6033.js b/scripts/quest/6033.js index 3362c48d8f..8016d8279b 100644 --- a/scripts/quest/6033.js +++ b/scripts/quest/6033.js @@ -41,8 +41,8 @@ function end(mode, type, selection) { if (status == 0) { qm.sendNext("Hm, so you claim to have brought the #b#t4260003##k? Ok, let's take a look into it."); } else if (status == 1) { - if(qm.getQuestProgress(6033) == 1 && qm.haveItem(4260003, 1)) { - qm.sendNext("You indeed have crafted a fine piece of Monster Crystal, I see. You passed! Now, I shall teach you the next steps of the Maker skill. Keep the monster crystal with you as well, it's your work."); + if(qm.getQuestProgressInt(6033) == 1 && qm.haveItem(4260003, 1)) { + qm.sendNextPrev("You indeed have crafted a fine piece of Monster Crystal, I see. You passed! Now, I shall teach you the next steps of the Maker skill. Keep the monster crystal with you as well, it's your work."); } else { qm.sendNext("Hey, what's wrong? I did tell you to make a monster crystal to pass my test, didn't I? Buying one or crafting before the start of the test is NOT part of the deal. Go craft me an #b#t4260003##k."); qm.dispose(); diff --git a/scripts/quest/6410.js b/scripts/quest/6410.js deleted file mode 100644 index cf9ae4054a..0000000000 --- a/scripts/quest/6410.js +++ /dev/null @@ -1,57 +0,0 @@ -/* - This file is part of the HeavenMS MapleStory Server - Copyleft (L) 2016 - 2018 RonanLana - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation version 3 as published by - the Free Software Foundation. You may not use, modify or distribute - this program under any other version of the GNU Affero General Public - License. - - 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 Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ -/* - Hypnotize skill quest - */ - -var status = -1; - -function end(mode, type, selection) { - if (mode == -1) { - qm.dispose(); - } else { - if(mode == 0 && type > 0) { - qm.dispose(); - return; - } - - if (mode == 1) - status++; - else - status--; - - if (status == 0) { - if (qm.getQuestProgress(6410, 0) == 0) { - qm.sendOk("You must save #r#p2095000##k first!"); - qm.dispose(); - } else { - qm.sendNext("Again, thank you so much for rescuing me. I don't know how to repay you for all this... both Shulynch and you are the nicest people I have encountered. If you approach the mobs the same way you approached me, they may all end up becoming friends with you, as well. Please never lose the kindness you have in you."); - } - } else if (status == 1) { - qm.sendNext("(Friends with the mobs... never lose the kindness.)\r\n\r\n #s5221009# #b#q5221009##k"); - } else if (status == 2) { - qm.gainExp(1200000); - qm.teachSkill(5221009, 0, 10, -1); - - qm.forceCompleteQuest(); - qm.dispose(); - } - } -} \ No newline at end of file diff --git a/scripts/reactor/1209000.js b/scripts/reactor/1209000.js index 4f830d783f..915458338b 100644 --- a/scripts/reactor/1209000.js +++ b/scripts/reactor/1209000.js @@ -24,6 +24,10 @@ */ function act() { // string visibility thanks to ProXAIMeRx & Glvelturall - if (rm.isQuestStarted(6400)) rm.setQuestProgress(6400, 0, 2); - rm.message("Real Bart has found. Return to Jonathan through portal."); + if (rm.isQuestStarted(6400)) { + rm.setQuestProgress(6400, 1, 2); + rm.setQuestProgress(6400, 6401, "q3"); + } + + rm.message("Real Bart has been found. Return to Jonathan through the portal."); } \ No newline at end of file diff --git a/src/client/MapleCharacter.java b/src/client/MapleCharacter.java index 3727d274df..43ad05aaeb 100644 --- a/src/client/MapleCharacter.java +++ b/src/client/MapleCharacter.java @@ -946,6 +946,11 @@ public class MapleCharacter extends AbstractMapleCharacterObject { for(MapleSummon ms: this.getSummonsValues()) { getMap().broadcastNONGMMessage(this, MaplePacketCreator.spawnSummon(ms, false), false); } + + for (MapleMapObject mo : this.getMap().getMonsters()) { + MapleMonster m = (MapleMonster) mo; + m.aggroUpdateController(); + } } else { this.hidden = true; announce(MaplePacketCreator.getGMEffect(0x10, (byte) 1)); @@ -3050,6 +3055,11 @@ public class MapleCharacter extends AbstractMapleCharacterObject { deletedCoupon = true; } } else { + MaplePet pet = item.getPet(); // thanks Lame for noticing pets not getting despawned after expiration time + if (pet != null) { + unequipPet(pet, true); + } + if (ItemConstants.isExpirablePet(item.getItemId())) { client.announce(MaplePacketCreator.itemExpired(item.getItemId())); toberemove.add(item); @@ -4711,19 +4721,23 @@ public class MapleCharacter extends AbstractMapleCharacterObject { return client.getAbstractPlayerInteraction(); } - public final List getCompletedQuests() { + private List getQuests() { synchronized (quests) { - List ret = new LinkedList<>(); - for (MapleQuestStatus q : quests.values()) { - if (q.getStatus().equals(MapleQuestStatus.Status.COMPLETED)) { - ret.add(q); - } - } - - return Collections.unmodifiableList(ret); + return new ArrayList<>(quests.values()); } } + public final List getCompletedQuests() { + List ret = new LinkedList<>(); + for (MapleQuestStatus qs : getQuests()) { + if (qs.getStatus().equals(MapleQuestStatus.Status.COMPLETED)) { + ret.add(qs); + } + } + + return Collections.unmodifiableList(ret); + } + public List getCrushRings() { Collections.sort(crushRings); return crushRings; @@ -5780,19 +5794,19 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } } - public final MapleQuestStatus getMapleQuestStatus(final int quest) { - synchronized (quests) { - MapleQuestStatus mqs = quests.get((short) quest); - return mqs; - } + public MapleQuestStatus getQuest(final int quest) { + return getQuest(MapleQuest.getInstance(quest)); } - + public MapleQuestStatus getQuest(MapleQuest quest) { synchronized (quests) { - if (!quests.containsKey(quest.getId())) { - return new MapleQuestStatus(quest, MapleQuestStatus.Status.NOT_STARTED); + short questid = quest.getId(); + MapleQuestStatus qs = quests.get(questid); + if (qs == null) { + qs = new MapleQuestStatus(quest, MapleQuestStatus.Status.NOT_STARTED); + quests.put(questid, qs); } - return quests.get(quest.getId()); + return qs; } } @@ -5928,32 +5942,15 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public final List getStartedQuests() { - synchronized (quests) { - List ret = new LinkedList<>(); - for (MapleQuestStatus q : quests.values()) { - if (q.getStatus().equals(MapleQuestStatus.Status.STARTED)) { - ret.add(q); - } + List ret = new LinkedList<>(); + for (MapleQuestStatus qs : getQuests()) { + if (qs.getStatus().equals(MapleQuestStatus.Status.STARTED)) { + ret.add(qs); } - return Collections.unmodifiableList(ret); } + return Collections.unmodifiableList(ret); } - - public final int getStartedQuestsSize() { - synchronized (quests) { - int i = 0; - for (MapleQuestStatus q : quests.values()) { - if (q.getStatus().equals(MapleQuestStatus.Status.STARTED)) { - if (q.getQuest().getInfoNumber() > 0) { - i++; - } - i++; - } - } - return i; - } - } - + public MapleStatEffect getStatForBuff(MapleBuffStat effect) { effLock.lock(); chrLock.lock(); @@ -7491,7 +7488,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public void reloadQuestExpirations() { - for(MapleQuestStatus mqs: quests.values()) { + for(MapleQuestStatus mqs: getQuests()) { if(mqs.getExpirationTime() > 0) { questTimeLimit2(mqs.getQuest(), mqs.getExpirationTime()); } @@ -7545,31 +7542,31 @@ public class MapleCharacter extends AbstractMapleCharacterObject { announce(MaplePacketCreator.sendYellowTip(m)); } - public void updateQuestMobCount(int id) { + public void raiseQuestMobCount(int id) { // It seems nexon uses monsters that don't exist in the WZ (except string) to merge multiple mobs together for these 3 monsters. // We also want to run mobKilled for both since there are some quest that don't use the updated ID... if (id == 1110100 || id == 1110130) { - updateQuestMobCount(9101000); + raiseQuestMobCount(9101000); } else if (id == 2230101 || id == 2230131) { - updateQuestMobCount(9101001); + raiseQuestMobCount(9101001); } else if (id == 1140100 || id == 1140130) { - updateQuestMobCount(9101002); + raiseQuestMobCount(9101002); } int lastQuestProcessed = 0; try { synchronized (quests) { - for (MapleQuestStatus q : quests.values()) { - lastQuestProcessed = q.getQuest().getId(); - if (q.getStatus() == MapleQuestStatus.Status.COMPLETED || q.getQuest().canComplete(this, null)) { + for (MapleQuestStatus qs : getQuests()) { + lastQuestProcessed = qs.getQuest().getId(); + if (qs.getStatus() == MapleQuestStatus.Status.COMPLETED || qs.getQuest().canComplete(this, null)) { continue; } - String progress = q.getProgress(id); - if (!progress.isEmpty() && Integer.parseInt(progress) >= q.getQuest().getMobAmountNeeded(id)) { - continue; - } - if (q.progress(id)) { - announceUpdateQuest(DelayedQuestUpdate.UPDATE, q, false); + + if (qs.progress(id)) { + announceUpdateQuest(DelayedQuestUpdate.UPDATE, qs, false); + if (qs.getInfoNumber() > 0) { + announceUpdateQuest(DelayedQuestUpdate.UPDATE, qs, true); + } } } } @@ -8692,36 +8689,33 @@ public class MapleCharacter extends AbstractMapleCharacterObject { psf = con.prepareStatement("INSERT INTO medalmaps VALUES (DEFAULT, ?, ?, ?)"); ps.setInt(1, id); - synchronized (quests) { - for (MapleQuestStatus q : quests.values()) { - ps.setInt(2, q.getQuest().getId()); - ps.setInt(3, q.getStatus().getId()); - ps.setInt(4, (int) (q.getCompletionTime() / 1000)); - ps.setLong(5, q.getExpirationTime()); - ps.setInt(6, q.getForfeited()); - ps.setInt(7, q.getCompleted()); - ps.executeUpdate(); - try (ResultSet rs = ps.getGeneratedKeys()) { - rs.next(); - for (int mob : q.getProgress().keySet()) { - pse.setInt(1, id); - pse.setInt(2, rs.getInt(1)); - pse.setInt(3, mob); - pse.setString(4, q.getProgress(mob)); - pse.addBatch(); - } - for (int i = 0; i < q.getMedalMaps().size(); i++) { - psf.setInt(1, id); - psf.setInt(2, rs.getInt(1)); - psf.setInt(3, q.getMedalMaps().get(i)); - psf.addBatch(); - } - pse.executeBatch(); - psf.executeBatch(); + for (MapleQuestStatus qs : getQuests()) { + ps.setInt(2, qs.getQuest().getId()); + ps.setInt(3, qs.getStatus().getId()); + ps.setInt(4, (int) (qs.getCompletionTime() / 1000)); + ps.setLong(5, qs.getExpirationTime()); + ps.setInt(6, qs.getForfeited()); + ps.setInt(7, qs.getCompleted()); + ps.executeUpdate(); + try (ResultSet rs = ps.getGeneratedKeys()) { + rs.next(); + for (int mob : qs.getProgress().keySet()) { + pse.setInt(1, id); + pse.setInt(2, rs.getInt(1)); + pse.setInt(3, mob); + pse.setString(4, qs.getProgress(mob)); + pse.addBatch(); } + for (int i = 0; i < qs.getMedalMaps().size(); i++) { + psf.setInt(1, id); + psf.setInt(2, rs.getInt(1)); + psf.setInt(3, qs.getMedalMaps().get(i)); + psf.addBatch(); + } + pse.executeBatch(); + psf.executeBatch(); } } - } psf.close(); ps.close(); @@ -9149,7 +9143,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { MapleKeyBinding autohpPot = this.getKeymap().get(91); if (autohpPot != null) { int autohpItemid = autohpPot.getAction(); - if (((float) this.getHp()) / this.getMaxHp() <= this.getAutopotHpAlert()) { // try within user settings... thanks Lame, Optimist, Stealth2800 + if (((float) this.getHp()) / this.getCurrentMaxHp() <= this.getAutopotHpAlert()) { // try within user settings... thanks Lame, Optimist, Stealth2800 Item autohpItem = this.getInventory(MapleInventoryType.USE).findById(autohpItemid); if (autohpItem != null) { PetAutopotProcessor.runAutopotAction(client, autohpItem.getPosition(), autohpItemid); @@ -9162,7 +9156,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { MapleKeyBinding autompPot = this.getKeymap().get(92); if (autompPot != null) { int autompItemid = autompPot.getAction(); - if (((float) this.getMp()) / this.getMaxMp() <= this.getAutopotMpAlert()) { + if (((float) this.getMp()) / this.getCurrentMaxMp() <= this.getAutopotMpAlert()) { Item autompItem = this.getInventory(MapleInventoryType.USE).findById(autompItemid); if (autompItem != null) { PetAutopotProcessor.runAutopotAction(client, autompItem.getPosition(), autompItemid); @@ -9845,26 +9839,23 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } } } - - public String getQuestInfo(int quest) { - MapleQuestStatus qs = getQuest(MapleQuest.getInstance(quest)); - return qs.getInfo(); - } - - public void updateQuestInfo(int quest, String info) { - MapleQuest q = MapleQuest.getInstance(quest); + + public void setQuestProgress(int id, int infoNumber, String progress) { + MapleQuest q = MapleQuest.getInstance(id); MapleQuestStatus qs = getQuest(q); - qs.setInfo(info); - - synchronized (quests) { - quests.put(q.getId(), qs); + + if (qs.getInfoNumber() == infoNumber && infoNumber > 0) { + MapleQuest iq = MapleQuest.getInstance(infoNumber); + MapleQuestStatus iqs = getQuest(iq); + iqs.setProgress(0, progress); + } else { + qs.setProgress(infoNumber, progress); // quest progress is thoroughly a string match, infoNumber is actually another questid } announceUpdateQuest(DelayedQuestUpdate.UPDATE, qs, false); - if (qs.getQuest().getInfoNumber() > 0) { + if (qs.getInfoNumber() > 0) { announceUpdateQuest(DelayedQuestUpdate.UPDATE, qs, true); } - announce(MaplePacketCreator.updateQuestInfo((short) qs.getQuest().getId(), qs.getNpc())); } public void awardQuestPoint(int awardedPoints) { @@ -9886,15 +9877,15 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public enum DelayedQuestUpdate { // quest updates allow player actions during NPC talk... - UPDATE, FORFEIT, COMPLETE + UPDATE, FORFEIT, COMPLETE, INFO } - private void announceUpdateQuestInternal(Pair questUpdate) { + private void announceUpdateQuestInternal(MapleCharacter chr, Pair questUpdate) { Object[] objs = questUpdate.getRight(); switch (questUpdate.getLeft()) { case UPDATE: - announce(MaplePacketCreator.updateQuest((MapleQuestStatus) objs[0], (Boolean) objs[1])); + announce(MaplePacketCreator.updateQuest(chr, (MapleQuestStatus) objs[0], (Boolean) objs[1])); break; case FORFEIT: @@ -9904,6 +9895,11 @@ public class MapleCharacter extends AbstractMapleCharacterObject { case COMPLETE: announce(MaplePacketCreator.completeQuest((Short) objs[0], (Long) objs[1])); break; + + case INFO: + MapleQuestStatus qs = (MapleQuestStatus) objs[0]; + announce(MaplePacketCreator.updateQuestInfo(qs.getQuest().getId(), qs.getNpc())); + break; } } @@ -9915,7 +9911,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { npcUpdateQuests.add(p); } } else { - announceUpdateQuestInternal(p); + announceUpdateQuestInternal(this, p); } } @@ -9928,49 +9924,52 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } for (Pair q : qmQuestUpdateList) { - announceUpdateQuestInternal(q); + announceUpdateQuestInternal(this, q); } } - public void updateQuest(MapleQuestStatus quest) { + public void updateQuestStatus(MapleQuestStatus qs) { synchronized (quests) { - quests.put(quest.getQuestID(), quest); + quests.put(qs.getQuestID(), qs); } - if (quest.getStatus().equals(MapleQuestStatus.Status.STARTED)) { - announceUpdateQuest(DelayedQuestUpdate.UPDATE, quest, false); - if (quest.getQuest().getInfoNumber() > 0) { - announceUpdateQuest(DelayedQuestUpdate.UPDATE, quest, true); + if (qs.getStatus().equals(MapleQuestStatus.Status.STARTED)) { + announceUpdateQuest(DelayedQuestUpdate.UPDATE, qs, false); + if (qs.getInfoNumber() > 0) { + announceUpdateQuest(DelayedQuestUpdate.UPDATE, qs, true); } - announce(MaplePacketCreator.updateQuestInfo((short) quest.getQuest().getId(), quest.getNpc())); - } else if (quest.getStatus().equals(MapleQuestStatus.Status.COMPLETED)) { - MapleQuest mquest = quest.getQuest(); + announceUpdateQuest(DelayedQuestUpdate.INFO, qs); + } else if (qs.getStatus().equals(MapleQuestStatus.Status.COMPLETED)) { + MapleQuest mquest = qs.getQuest(); short questid = mquest.getId(); if (!mquest.isSameDayRepeatable() && !MapleQuest.isExploitableQuest(questid)) { awardQuestPoint(YamlConfig.config.server.QUEST_POINT_PER_QUEST_COMPLETE); } - quest.setCompleted(quest.getCompleted() + 1); // count quest completed Jayd's idea + qs.setCompleted(qs.getCompleted() + 1); // count quest completed Jayd's idea - announceUpdateQuest(DelayedQuestUpdate.COMPLETE, questid, quest.getCompletionTime()); - } else if (quest.getStatus().equals(MapleQuestStatus.Status.NOT_STARTED)) { - announceUpdateQuest(DelayedQuestUpdate.UPDATE, quest, false); - if (quest.getQuest().getInfoNumber() > 0) { - announceUpdateQuest(DelayedQuestUpdate.UPDATE, quest, true); + announceUpdateQuest(DelayedQuestUpdate.COMPLETE, questid, qs.getCompletionTime()); + announceUpdateQuest(DelayedQuestUpdate.INFO, qs); + } else if (qs.getStatus().equals(MapleQuestStatus.Status.NOT_STARTED)) { + announceUpdateQuest(DelayedQuestUpdate.UPDATE, qs, false); + if (qs.getInfoNumber() > 0) { + announceUpdateQuest(DelayedQuestUpdate.UPDATE, qs, true); } } } - + private void expireQuest(MapleQuest quest) { - if(getQuestStatus(quest.getId()) == MapleQuestStatus.Status.COMPLETED.getId()) { + MapleQuestStatus mqs = getQuest(quest); + if(mqs.getStatus().equals(MapleQuestStatus.Status.COMPLETED)) { return; } - if(System.currentTimeMillis() < getMapleQuestStatus(quest.getId()).getExpirationTime()) { + + if(System.currentTimeMillis() < mqs.getExpirationTime()) { return; } announce(MaplePacketCreator.questExpire(quest.getId())); MapleQuestStatus newStatus = new MapleQuestStatus(quest, MapleQuestStatus.Status.NOT_STARTED); - newStatus.setForfeited(getQuest(quest).getForfeited() + 1); - updateQuest(newStatus); + newStatus.setForfeited(mqs.getForfeited() + 1); + updateQuestStatus(newStatus); } public void cancelQuestExpirationTask() { @@ -11016,7 +11015,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } try (PreparedStatement ps = con.prepareStatement("UPDATE characters SET world = ?, meso = ?, guildid = ?, guildrank = ? WHERE id = ?")) { ps.setInt(1, newWorld); - ps.setInt(2, Math.min(mesos, 1000000)); //might want a limit in YamlConfig.config.server.for this + ps.setInt(2, Math.min(mesos, 1000000)); // might want a limit in "YamlConfig.config.server" for this ps.setInt(3, 0); ps.setInt(4, 5); ps.setInt(5, characterId); diff --git a/src/client/MapleClient.java b/src/client/MapleClient.java index a3ea8f6986..887f225e9e 100644 --- a/src/client/MapleClient.java +++ b/src/client/MapleClient.java @@ -1002,7 +1002,7 @@ public class MapleClient { if (quest.getTimeLimit() > 0) { MapleQuestStatus newStatus = new MapleQuestStatus(quest, MapleQuestStatus.Status.NOT_STARTED); newStatus.setForfeited(player.getQuest(quest).getForfeited() + 1); - player.updateQuest(newStatus); + player.updateQuestStatus(newStatus); } } if (guild != null) { diff --git a/src/client/MapleQuestStatus.java b/src/client/MapleQuestStatus.java index 9e0ccc9dd1..e7ce741d57 100644 --- a/src/client/MapleQuestStatus.java +++ b/src/client/MapleQuestStatus.java @@ -151,14 +151,20 @@ public class MapleQuestStatus { } public boolean progress(int id) { - if (progress.get(id) != null) { - int current = Integer.parseInt(progress.get(id)); - String str = StringUtil.getLeftPaddedStr(Integer.toString(current + 1), '0', 3); - progress.put(id, str); - //this.setUpdated(); - return true; + String currentStr = progress.get(id); + if (currentStr == null) { + return false; } - return false; + + int current = Integer.parseInt(currentStr); + if (current >= this.getQuest().getMobAmountNeeded(id)) { + return false; + } + + String str = StringUtil.getLeftPaddedStr(Integer.toString(++current), '0', 3); + progress.put(id, str); + //this.setUpdated(); + return true; } public void setProgress(int id, String pr) { @@ -169,15 +175,14 @@ public class MapleQuestStatus { public boolean madeProgress() { return progress.size() > 0; } - - public Integer getAnyProgressKey() { - if (!progress.isEmpty()) return progress.entrySet().iterator().next().getKey(); - return 0; - } public String getProgress(int id) { - if (progress.get(id) == null) return ""; - return progress.get(id); + String ret = progress.get(id); + if (ret == null) { + return ""; + } else { + return ret; + } } public void resetProgress(int id) { @@ -193,6 +198,27 @@ public class MapleQuestStatus { public Map getProgress() { return Collections.unmodifiableMap(progress); } + + public short getInfoNumber() { + MapleQuest q = this.getQuest(); + Status s = this.getStatus(); + + return q.getInfoNumber(s); + } + + public String getInfoEx(int index) { + MapleQuest q = this.getQuest(); + Status s = this.getStatus(); + + return q.getInfoEx(s, index); + } + + public List getInfoEx() { + MapleQuest q = this.getQuest(); + Status s = this.getStatus(); + + return q.getInfoEx(s); + } public long getCompletionTime() { return completionTime; @@ -217,18 +243,6 @@ public class MapleQuestStatus { public int getCompleted() { return completed; } - - public String getInfo() { - if(!progress.containsKey(0) && !getMedalMaps().isEmpty()) { - return Integer.toString(getMedalProgress()); - } - return getProgress(0); - } - - public void setInfo(String newInfo) { - progress.put(0, newInfo); - //this.setUpdated(); - } public void setForfeited(int forfeited) { if (forfeited >= this.forfeited) { @@ -254,11 +268,11 @@ public class MapleQuestStatus { return customData; } - public String getQuestData() { + public String getProgressData() { StringBuilder str = new StringBuilder(); for (String ps : progress.values()) { str.append(ps); } return str.toString(); } -} \ No newline at end of file +} diff --git a/src/client/command/commands/gm5/SetCommand.java b/src/client/command/commands/gm5/SetCommand.java index 53ee949184..898e8f6b7b 100644 --- a/src/client/command/commands/gm5/SetCommand.java +++ b/src/client/command/commands/gm5/SetCommand.java @@ -25,7 +25,7 @@ package client.command.commands.gm5; import client.command.Command; import client.MapleClient; -import config.YamlConfig; +import constants.net.ServerConstants; public class SetCommand extends Command { { @@ -35,7 +35,7 @@ public class SetCommand extends Command { @Override public void execute(MapleClient c, String[] params) { for (int i = 0; i < params.length; i++) { - YamlConfig.config.server.DEBUG_VALUES[i] = Integer.parseInt(params[i]); + ServerConstants.DEBUG_VALUES[i] = Integer.parseInt(params[i]); } } } diff --git a/src/config/ServerConfig.java b/src/config/ServerConfig.java index 18343598d6..ccc0a8f7c8 100644 --- a/src/config/ServerConfig.java +++ b/src/config/ServerConfig.java @@ -301,6 +301,4 @@ public class ServerConfig { //Event End Timestamp public long EVENT_END_TIMESTAMP; - //Debug Variables - public int DEBUG_VALUES[]; } diff --git a/src/config/YamlConfig.java b/src/config/YamlConfig.java index 0af88cad37..c8adc338d1 100644 --- a/src/config/YamlConfig.java +++ b/src/config/YamlConfig.java @@ -1,10 +1,9 @@ package config; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; +import com.esotericsoftware.yamlbeans.YamlReader; -import java.io.File; import java.io.FileNotFoundException; +import java.io.FileReader; import java.io.IOException; import java.util.List; @@ -12,13 +11,16 @@ import java.util.List; public class YamlConfig { public static final YamlConfig config = fromFile("config.yaml"); + public List worlds; public ServerConfig server; public static YamlConfig fromFile(String filename) { - ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); try { - return mapper.readValue(new File(filename), YamlConfig.class); + YamlReader reader = new YamlReader(new FileReader(filename)); + YamlConfig config = reader.read(YamlConfig.class); + reader.close(); + return config; } catch (FileNotFoundException e) { String message = "Could not read config file " + filename + ": " + e.getMessage(); throw new RuntimeException(message); diff --git a/src/constants/net/ServerConstants.java b/src/constants/net/ServerConstants.java index f151bc3f31..869a135f5d 100644 --- a/src/constants/net/ServerConstants.java +++ b/src/constants/net/ServerConstants.java @@ -1,313 +1,16 @@ package constants.net; public class ServerConstants { + //Server Version public static short VERSION = 83; //Java Configuration public static final boolean JAVA_8 = getJavaVersion() >= 8; //Max amount of times a party leader is allowed to persist on the Party Search before entry expiration (thus needing to manually restart the Party Search to be able to search for members). - - //Login Configuration - public static final int WLDLIST_SIZE = 21; //Max possible worlds on the server. - public static final int CHANNEL_SIZE = 20; //Max possible channels per world (which is 20, based on the channel list on login phase). - public static final int CHANNEL_LOAD = 100; //Max players per channel (limit actually used to calculate the World server capacity). - public static final int CHANNEL_LOCKS = 20; //Total number of structure management locks each channel has. - public static final long RESPAWN_INTERVAL = 10 * 1000; //10 seconds, 10000. - public static final long PURGING_INTERVAL = 5 * 60 * 1000; - public static final long RANKING_INTERVAL = 60 * 60 * 1000; //60 minutes, 3600000. - public static final long COUPON_INTERVAL = 60 * 60 * 1000; //60 minutes, 3600000. - public static final long UPDATE_INTERVAL = 777; //Dictates the frequency on which the "centralized server time" is updated. - - public static final boolean ENABLE_PIC = false; //Pick true/false to enable or disable Pic. Delete character requires PIC available. - public static final boolean ENABLE_PIN = false; //Pick true/false to enable or disable Pin. - - public static final int BYPASS_PIC_EXPIRATION = 20; //Enables PIC bypass, which will remain active for that account by that client machine for N minutes. Set 0 to disable. - public static final int BYPASS_PIN_EXPIRATION = 15; //Enables PIN bypass, which will remain active for that account by that client machine for N minutes. Set 0 to disable. - - public static final boolean AUTOMATIC_REGISTER = true; //Automatically register players when they login with a nonexistent username. - public static final boolean BCRYPT_MIGRATION = true; //Performs a migration from old SHA-1 and SHA-512 password to bcrypt. - public static final boolean COLLECTIVE_CHARSLOT = false; //Available character slots are contabilized globally rather than per world server. - public static final boolean DETERRED_MULTICLIENT = false; //Enables detection of multi-client and suspicious remote IP on the login system. - - //Besides blocking logging in with several client sessions on the same machine, this also blocks suspicious login attempts for players that tries to login on an account using several diferent remote addresses. - - //Multiclient Coordinator Configuration - public static final int MAX_ALLOWED_ACCOUNT_HWID = 4; //Allows up to N concurrent HWID's for an account. HWID's remains linked to an account longer the more times it's used to login. - public static final int MAX_ACCOUNT_LOGIN_ATTEMPT = 15; //After N tries on an account, login on that account gets disabled for a short period. - public static final int LOGIN_ATTEMPT_DURATION = 120; //Period in seconds the login attempt remains registered on the system. - - //Ip Configuration - public static String HOST; - public static boolean LOCALSERVER; - - //Other Configuration - public static boolean SHUTDOWNHOOK; - - //Server Flags - public static final boolean USE_CUSTOM_KEYSET = true; //Enables auto-setup of the HeavenMS's custom keybindings when creating characters. - public static final boolean USE_DEBUG = false; //Will enable some text prints on the client, oriented for debugging purposes. - public static final boolean USE_DEBUG_SHOW_INFO_EQPEXP = false; //Prints on the cmd all equip exp gain info. - public static boolean USE_DEBUG_SHOW_RCVD_PACKET = false; //Prints on the cmd all received packet ids. - public static boolean USE_DEBUG_SHOW_RCVD_MVLIFE = false; //Prints on the cmd all received move life content. - public static final boolean USE_DEBUG_SHOW_PACKET = false; - public static boolean USE_SUPPLY_RATE_COUPONS = true; //Allows rate coupons to be sold through the Cash Shop. - public static final boolean USE_IP_VALIDATION = true; //Enables IP checking when logging in. - - public static final boolean USE_MAXRANGE = true; //Will send and receive packets from all events on a map, rather than those of only view range. - public static final boolean USE_MAXRANGE_ECHO_OF_HERO = true; - public static final boolean USE_MTS = false; - public static final boolean USE_CPQ = true; //Renders the CPQ available or not. - public static final boolean USE_AUTOHIDE_GM = false; //When enabled, GMs are automatically hidden when joining. Thanks to Steven Deblois (steven1152). - public static final boolean USE_BUYBACK_SYSTEM = true; //Enables the HeavenMS-builtin buyback system, to be used by dead players when clicking the MTS button. - public static final boolean USE_FIXED_RATIO_HPMP_UPDATE = true; //Enables the HeavenMS-builtin HPMP update based on the current pool to max pool ratio. - public static final boolean USE_FAMILY_SYSTEM = true; - public static final boolean USE_DUEY = true; - public static final boolean USE_RANDOMIZE_HPMP_GAIN = true; //Enables randomizing on MaxHP/MaxMP gains and INT accounting for the MaxMP gain on level up. - public static final boolean USE_STORAGE_ITEM_SORT = true; //Enables storage "Arrange Items" feature. - public static final boolean USE_ITEM_SORT = true; //Enables inventory "Item Sort/Merge" feature. - public static final boolean USE_ITEM_SORT_BY_NAME = false; //Item sorting based on name rather than id. - public static final boolean USE_PARTY_FOR_STARTERS = true; //Players level 10 or below can create/invite other players on the given level range. - public static final boolean USE_AUTOASSIGN_STARTERS_AP = false; //Beginners level 10 or below have their AP autoassigned (they can't choose to levelup a stat). Set true ONLY if the localhost doesn't support AP assigning for beginners level 10 or below. - public static final boolean USE_AUTOASSIGN_SECONDARY_CAP = true;//Prevents AP autoassign from spending on secondary stats after the player class' cap (defined on the autoassign handler) has been reached. - public static final boolean USE_STARTING_AP_4 = true; //Use early-GMS 4/4/4/4 starting stats. To overcome AP shortage, this gives 4AP/5AP at 1st/2nd job advancements. - public static final boolean USE_AUTOBAN = false; //Commands the server to detect infractors automatically. - public static final boolean USE_AUTOBAN_LOG = true; //Log autoban related messages. Still logs even with USE_AUTOBAN disabled. - public static final boolean USE_AUTOSAVE = true; //Enables server autosaving feature (saves characters to DB each 1 hour). - public static final boolean USE_SERVER_AUTOASSIGNER = true; //HeavenMS-builtin autoassigner, uses algorithm based on distributing AP accordingly with required secondary stat on equipments. - public static final boolean USE_REFRESH_RANK_MOVE = true; - public static final boolean USE_ENFORCE_ADMIN_ACCOUNT = false; //Forces accounts having GM characters to be treated as a "GM account" by the client (localhost). Some of the GM account perks is the ability to FLY, but unable to TRADE. - public static final boolean USE_ENFORCE_NOVICE_EXPRATE = false; //Hardsets experience rate 1x for beginners level 10 or under. Ideal for roaming on novice areas without caring too much about losing some stats. - public static final boolean USE_ENFORCE_HPMP_SWAP = false; //Forces players to reuse stats (via AP Resetting) located on HP/MP pool only inside the HP/MP stats. - public static final boolean USE_ENFORCE_MOB_LEVEL_RANGE = true; //Players N levels below the killed mob will gain no experience from defeating it. - public static final boolean USE_ENFORCE_JOB_LEVEL_RANGE = false;//Caps the player level on the minimum required to advance their current jobs. - public static final boolean USE_ENFORCE_JOB_SP_RANGE = false; //Caps the player SP level on the total obtainable by their current jobs. After changing jobs, missing SP will be retrieved. - public static final boolean USE_ENFORCE_ITEM_SUGGESTION = false;//Forces the Owl of Minerva and the Cash Shop to always display the defined item array instead of those featured by the players. - public static final boolean USE_ENFORCE_UNMERCHABLE_CASH = true;//Forces players to not sell CASH items via merchants, drops of it disappears. - public static final boolean USE_ENFORCE_UNMERCHABLE_PET = true; //Forces players to not sell pets via merchants, drops of it disappears. (since non-named pets gets dirty name and other possible DB-related issues) - public static final boolean USE_ENFORCE_MERCHANT_SAVE = true; //Forces automatic DB save on merchant owners, at every item movement on shop. - public static final boolean USE_ENFORCE_MDOOR_POSITION = false; //Forces mystic door to be spawned near spawnpoints. - public static final boolean USE_SPAWN_CLEAN_MDOOR = false; //Makes mystic doors to be spawned without deploy animation. This clears disconnecting issues that may happen when trying to cancel doors a couple seconds after deployment. - public static final boolean USE_SPAWN_LOOT_ON_ANIMATION = false;//Makes loot appear some time after the mob has been killed (following the mob death animation, instead of instantly). - public static final boolean USE_SPAWN_RELEVANT_LOOT = true; //Forces to only spawn loots that are collectable by the player or any of their party members. - public static final boolean USE_ERASE_PERMIT_ON_OPENSHOP = true;//Forces "shop permit" item to be consumed when player deploy his/her player shop. - public static final boolean USE_ERASE_UNTRADEABLE_DROP = true; //Forces flagged untradeable items to disappear when dropped. - public static final boolean USE_ERASE_PET_ON_EXPIRATION = false;//Forces pets to be removed from inventory when expire time comes, rather than converting it to a doll. - public static final boolean USE_BUFF_MOST_SIGNIFICANT = true; //When applying buffs, the player will stick with the highest stat boost among the listed, rather than overwriting stats. - public static final boolean USE_BUFF_EVERLASTING = false; //Every applied buff on players holds expiration time so high it'd be considered permanent. Suggestion thanks to Vcoc. - public static final boolean USE_MULTIPLE_SAME_EQUIP_DROP = true;//Enables multiple drops by mobs of the same equipment, number of possible drops based on the quantities provided at the drop data. - public static final boolean USE_BANISHABLE_TOWN_SCROLL = true; //Enables town scrolls to act as if it's a "player banish", rendering the antibanish scroll effect available. - public static final boolean USE_ENABLE_FULL_RESPAWN = true; //At respawn task, always respawn missing mobs when they're available. Spawn count doesn't depend on how many players are currently there. - public static final boolean USE_ENABLE_CHAT_LOG = false; //Write in-game chat to log - public static final boolean USE_REBIRTH_SYSTEM = false; //Flag to enable/disable rebirth system - public static final boolean USE_MAP_OWNERSHIP_SYSTEM = true; //Flag to enable/disable map ownership system - public static final boolean USE_FISHING_SYSTEM = true; //Flag to enable/disable custom fishing system - public static final boolean USE_NPCS_SCRIPTABLE = true; //Flag to enable/disable serverside predefined script NPCs. - - //Events/PQs Configuration - public static final boolean USE_OLD_GMS_STYLED_PQ_NPCS = true; //Enables PQ NPCs with similar behaviour to old GMS style, that skips info about the PQs and immediately tries to register the party in. - public static final boolean USE_ENABLE_SOLO_EXPEDITIONS = true; //Enables start expeditions with any number of players. This will also bypass all the Zakum prequest. - public static final boolean USE_ENABLE_DAILY_EXPEDITIONS = false;//Enables daily entry limitations in expeditions. - public static final boolean USE_ENABLE_RECALL_EVENT = false; //Enables a disconnected player to reaccess the last event instance they were in before logging out. Recall only works if the event isn't cleared or disposed yet. Suggestion thanks to Alisson (Goukken). - - //Announcement Configuration - public static final boolean USE_ANNOUNCE_SHOPITEMSOLD = false; //Automatic message sent to owner when an item from the Player Shop or Hired Merchant is sold. - public static final boolean USE_ANNOUNCE_CHANGEJOB = false; //Automatic message sent to acquantainces when changing jobs. - - //Cash Shop Configuration - public static final boolean USE_JOINT_CASHSHOP_INVENTORY = true;//Enables usage of a same cash shop inventory for explorers, cygnus and legends. Items from exclusive cash shop inventories won't show up on the shared inventory, though. - public static final boolean USE_CLEAR_OUTDATED_COUPONS = true; //Enables deletion of older code coupon registry from the DB, freeing so-long irrelevant data. - public static final boolean ALLOW_CASHSHOP_NAME_CHANGE = true; //Allows players to buy name changes in the cash shop. - public static final boolean ALLOW_CASHSHOP_WORLD_TRANSFER =true;//Allows players to buy world transfers in the cash shop. - - //Maker Configuration - public static final boolean USE_MAKER_PERMISSIVE_ATKUP = true; //Allows players to use attack-based strengthening gems on non-weapon items. - public static final boolean USE_MAKER_FEE_HEURISTICS = true; //Apply compiled values for stimulants and reagents into the Maker fee calculations (max error revolves around 50k mesos). Set false to use basic constant values instead (results are never higher than requested by the client-side). - - //Custom Configuration - public static final boolean USE_ENABLE_CUSTOM_NPC_SCRIPT = true;//Enables usage of custom HeavenMS NPC scripts (Agent E, Coco, etc). Will not disable Abdula (it's actually useful for the gameplay) or quests. - public static final boolean USE_STARTER_MERGE = false; //Allows any players to use the Equipment Merge custom mechanic (as opposed to the high-level, Maker lv3 requisites). - - //Commands Configuration - public static final boolean BLOCK_GENERATE_CASH_ITEM = false; //Prevents creation of cash items with the item/drop command. - public static final boolean USE_WHOLE_SERVER_RANKING = false; //Enables a ranking pool made from every character registered on the server for the "ranks" command, instead of separated by worlds. - - //Server Rates And Experience - public static final int EXP_RATE = 10; //NOTE: World-specific rates within "world.ini" OVERRIDES the default rates from here. - public static final int MESO_RATE = 10; - public static final int DROP_RATE = 10; - public static final int BOSS_DROP_RATE = 10; //NOTE: Boss drop rate OVERRIDES common drop rate, for bosses-only. - public static final int QUEST_RATE = 5; //Multiplier for Exp & Meso gains when completing a quest. Only available when USE_QUEST_RATE is true. Stacks with server Exp & Meso rates. - public static final int FISHING_RATE = 10; //Multiplier for success likelihood on meso thrown during fishing. - public static final int TRAVEL_RATE = 10; //Means of transportation rides/departs using 1/N of the default time. - - public static final double EQUIP_EXP_RATE = 1.0; //Rate for equipment exp gain, grows linearly. Set 1.0 for default (about 100~200 same-level range mobs killed to pass equip from level 1 to 2). - public static final double PQ_BONUS_EXP_RATE = 0.5; //Rate for the PQ exp reward. - - public static final byte EXP_SPLIT_LEVEL_INTERVAL = 5; //Non-contributing players must be within N level between the mob to receive EXP. - public static final byte EXP_SPLIT_LEECH_INTERVAL = 5; //Non-contributing players must be within N level between any contributing party member to receive EXP. - public static final float EXP_SPLIT_MVP_MOD = 0.2f; - public static final float EXP_SPLIT_COMMON_MOD = 0.8f; - public static final float PARTY_BONUS_EXP_RATE = 1.0f; //Rate for the party exp bonus reward. - - //Miscellaneous Configuration - public static String TIMEZONE = "GMT-3"; - public static boolean USE_DISPLAY_NUMBERS_WITH_COMMA = true; //Enforce comma on displayed strings (use this when USE_UNITPRICE_WITH_COMMA is active and you still want to display comma-separated values). - public static boolean USE_UNITPRICE_WITH_COMMA = true; //Set this accordingly with the layout of the unitPrices on Item.wz XML's, whether it's using commas or dots to represent fractions. - public static final byte MAX_MONITORED_BUFFSTATS = 5; //Limits accounting for "dormant" buff effects, that should take place when stronger stat buffs expires. - public static final int MAX_AP = 32767; //Max AP allotted on the auto-assigner. - public static final int MAX_EVENT_LEVELS = 8; //Event has different levels of rewarding system. - public static final long BLOCK_NPC_RACE_CONDT = (long)(0.5 * 1000); //Time the player client must wait before reopening a conversation with an NPC. - public static final long PET_LOOT_UPON_ATTACK = (long)(0.7 * 1000); //Time the pet must wait before trying to pick items up. - public static final int TOT_MOB_QUEST_REQUIREMENT = 77; //Overwrites old 999-mobs requirement for the ToT questline with new requirement value, set 0 for default. - public static final int MOB_REACTOR_REFRESH_TIME = 30 * 1000; //Overwrites refresh time for those reactors oriented to inflict damage to bosses (Ice Queen, Riche), set 0 for default. - public static final int PARTY_SEARCH_REENTRY_LIMIT = 10; //Max amount of times a party leader is allowed to persist on the Party Search before entry expiration (thus needing to manually restart the Party Search to be able to search for members). - public static final int NAME_CHANGE_COOLDOWN = 30*24*60*60*1000; //Cooldown for name changes, default (GMS) is 30 days. - public static final int WORLD_TRANSFER_COOLDOWN=NAME_CHANGE_COOLDOWN;//Cooldown for world tranfers, default is same as name change (30 days). - public static final boolean INSTANT_NAME_CHANGE = false; //Whether or not to wait for server restart to apply name changes. Does on reconnect otherwise (requires queries on every login). - - //Dangling Items/Locks Configuration - public static final int ITEM_EXPIRE_TIME = 3 * 60 * 1000; //Time before items start disappearing. Recommended to be set up to 3 minutes. - public static final int KITE_EXPIRE_TIME = 60 * 60 * 1000; //Time before kites (cash item) disappears. - public static final int ITEM_MONITOR_TIME = 5 * 60 * 1000; //Interval between item monitoring tasks on maps, which checks for dangling (null) item objects on the map item history. - public static final int LOCK_MONITOR_TIME = 30 * 1000; //Waiting time for a lock to be released. If it reaches timeout, a critical server deadlock has made present. - - //Map Monitor Configuration - public static final int ITEM_EXPIRE_CHECK = 10 * 1000; //Interval between item expiring tasks on maps, which checks and makes disappear expired items. - public static final int ITEM_LIMIT_ON_MAP = 200; //Max number of items allowed on a map. - public static final int MAP_VISITED_SIZE = 5; //Max length for last mapids visited by a player. This is used to recover and update drops on these maps accordingly with player actions. - public static final int MAP_DAMAGE_OVERTIME_INTERVAL = 5000;//Interval in milliseconds between map environment damage (e.g. El Nath and Aqua Road surrondings). - - //Channel Mob Disease Monitor Configuration - public static final int MOB_STATUS_MONITOR_PROC = 200; //Frequency in milliseconds between each proc on the mob disease monitor schedule. - public static final int MOB_STATUS_MONITOR_LIFE = 84; //Idle proc count the mob disease monitor is allowed to be there before closing it due to inactivity. - public static final int MOB_STATUS_AGGRO_PERSISTENCE = 2; //Idle proc count on aggro update for a mob to keep following the current controller, given him/her is the leading damage dealer. - public static final int MOB_STATUS_AGGRO_INTERVAL = 5000; //Interval in milliseconds between aggro logistics update. - - //Some Gameplay Enhancing Configurations - //Scroll Configuration - public static final boolean USE_PERFECT_GM_SCROLL = true; //Scrolls from GMs never uses up slots nor fails. - public static final boolean USE_PERFECT_SCROLLING = true; //Scrolls doesn't use slots upon failure. - public static final boolean USE_ENHANCED_CHSCROLL = true; //Equips even more powerful with chaos upgrade. - public static final boolean USE_ENHANCED_CRAFTING = true; //Apply chaos scroll on every equip crafted. - public static final boolean USE_ENHANCED_CLNSLATE = true; //Clean slates can be applied to recover successfully used slots as well. - public static final int SCROLL_CHANCE_ROLLS = 10; //Number of rolls for success on a scroll, set 1 for default. - public static final int CHSCROLL_STAT_ROLLS = 3; //Number of rolls of stat upgrade on a successfully applied chaos scroll, set 1 for default. - public static final int CHSCROLL_STAT_RANGE = 6; //Stat upgrade range (-N, N) on chaos scrolls. - - //Beginner Skills Configuration - public static final boolean USE_ULTRA_NIMBLE_FEET = true; //Massive speed & jump upgrade. - public static final boolean USE_ULTRA_RECOVERY = true; //Massive recovery amounts overtime. - public static final boolean USE_ULTRA_THREE_SNAILS = true; //Massive damage on shell toss. - - //Other Skills Configuration - public static final boolean USE_FULL_ARAN_SKILLSET = false; //Enables starter availability to all Aran job skills. Suggestion thanks to Masterrulax. - public static final boolean USE_FAST_REUSE_HERO_WILL = true;//Greatly reduce cooldown on Hero's Will. - public static final boolean USE_ANTI_IMMUNITY_CRASH = true; //Crash skills additionally removes the mob's invincibility buffs. Suggestion thanks to Celestial. - public static final boolean USE_UNDISPEL_HOLY_SHIELD = true;//Holy shield buff also prevents players from suffering dispel from mobs. - public static final boolean USE_FULL_HOLY_SYMBOL = true; //Holy symbol doesn't require EXP sharers to work in full. - - //Character Configuration - public static final boolean USE_ADD_SLOTS_BY_LEVEL = true; //Slots are added each 20 levels. - public static final boolean USE_ADD_RATES_BY_LEVEL = true; //Rates are added each 20 levels. - public static final boolean USE_STACK_COUPON_RATES = false; //Multiple coupons effects builds up together. - public static final boolean USE_PERFECT_PITCH = true; //For lvl 30 or above, each lvlup grants player 1 perfect pitch. - - //Quest Configuration - public static final boolean USE_QUEST_RATE = false; //Exp/Meso gained by quests uses fixed server exp/meso rate times quest rate as multiplier, instead of player rates. - - //Quest Points Configuration - public static final int QUEST_POINT_REPEATABLE_INTERVAL = 24;//Minimum interval between repeatable quest completions for quest points to be awarded. - public static final int QUEST_POINT_REQUIREMENT = 16; //Exchange factor between N quest points to +1 fame, set 0 to disable the entire quest point mechanism. - public static final int QUEST_POINT_PER_QUEST_COMPLETE = 4; //Each completed quest awards N quest points, set 0 to disable. - public static final int QUEST_POINT_PER_EVENT_CLEAR = 1; //Each completed event instance awards N quest points, set 0 to disable. - - //Guild Configuration - public static final int CREATE_GUILD_MIN_PARTNERS = 6; //Minimum number of members on Guild Headquarters to establish a new guild. - public static final int CREATE_GUILD_COST = 1500000; - public static final int CHANGE_EMBLEM_COST = 5000000; - public static final int EXPAND_GUILD_BASE_COST = 500000; - public static final int EXPAND_GUILD_TIER_COST = 1000000; - public static final int EXPAND_GUILD_MAX_COST = 5000000; - - //Family Configuration - public static final int FAMILY_REP_PER_KILL = 4; //Amount of rep gained per monster kill. - public static final int FAMILY_REP_PER_BOSS_KILL = 20; //Amount of rep gained per boss kill. - public static final int FAMILY_REP_PER_LEVELUP = 200; //Amount of rep gained upon leveling up. - public static final int FAMILY_MAX_GENERATIONS = 1000; //Maximum depth of family tree. (Distance from leader to farthest junior) - - //Equipment Configuration - public static final boolean USE_EQUIPMNT_LVLUP_SLOTS = true;//Equips can upgrade slots at level up. - public static final boolean USE_EQUIPMNT_LVLUP_POWER = true;//Enable more powerful stat upgrades at equip level up. - public static final boolean USE_EQUIPMNT_LVLUP_CASH = true; //Enable equip leveling up on cash equipments as well. - public static final boolean USE_SPIKES_AVOID_BANISH = true; //Shoes equipped with spikes prevents mobs from banishing wearer. - public static final int MAX_EQUIPMNT_LVLUP_STAT_UP = 10000; //Max stat upgrade an equipment can have on a levelup. - public static final int MAX_EQUIPMNT_STAT = 32767; //Max stat on an equipment by leveling up. - public static final int USE_EQUIPMNT_LVLUP = 7; //All equips lvlup at max level of N, set 1 to disable. - - //Map-Chair Configuration - public static final boolean USE_CHAIR_EXTRAHEAL = true; //Enable map chairs to further recover player's HP and MP (player must have the Chair Mastery skill). - public static final byte CHAIR_EXTRA_HEAL_MULTIPLIER = 10; //Due to only being able to be send up-to-255 heal values, values being actually updated is the one displayed times this. - public static final int CHAIR_EXTRA_HEAL_MAX_DELAY = 21; //Players are expected to recover fully after using this skill for N seconds. - - //Player NPC Configuration - public static final int PLAYERNPC_INITIAL_X = 262; //Map frame width for putting PlayerNPCs. - public static final int PLAYERNPC_INITIAL_Y = 262; //Map frame height for putting PlayerNPCs. - public static final int PLAYERNPC_AREA_X = 320; //Initial width gap between PlayerNPCs. - public static final int PLAYERNPC_AREA_Y = 160; //Initial height gap between PlayerNPCs. - public static final int PLAYERNPC_AREA_STEPS = 4; //Max number of times gap is shortened to comport PlayerNPCs. - public static final boolean PLAYERNPC_ORGANIZE_AREA = true; //Automatically rearranges PlayerNPCs on the map if there is no space set the new NPC. Current distance gap between NPCs is decreased to solve this issue. - public static final boolean PLAYERNPC_AUTODEPLOY = true; //Makes PlayerNPC automatically deployed on the Hall of Fame at the instant one reaches max level. If false, eligible players must talk to 1st job instructor to deploy a NPC. - - //Pet Auto-Pot Configuration - public static final boolean USE_COMPULSORY_AUTOPOT = true; //Pets will consume as many potions as needed to fulfill the AUTOHP/MP ratio threshold. - public static final boolean USE_EQUIPS_ON_AUTOPOT = true; //Player MaxHP and MaxMP check values on autopot handler will be updated by the HP/MP bonuses on equipped items. - public static final double PET_AUTOHP_RATIO = 0.99; //Will automatically consume potions until given ratio of the MaxHP/MaxMP is reached. - public static final double PET_AUTOMP_RATIO = 0.99; - - //Pet & Mount Configuration - public static final byte PET_EXHAUST_COUNT = 3; //Number of proc counts (1 per minute) on the exhaust schedule for fullness. - public static final byte MOUNT_EXHAUST_COUNT = 1; //Number of proc counts (1 per minute) on the exhaust schedule for tiredness. - - //Pet Hunger Configuration - public static final boolean PETS_NEVER_HUNGRY = false; //If true, pets and mounts will never grow hungry. - public static final boolean GM_PETS_NEVER_HUNGRY = true; //If true, pets and mounts owned by GMs will never grow hungry. - - //Event Configuration - public static final int EVENT_MAX_GUILD_QUEUE = 10; //Max number of guilds in queue for GPQ. - public static final long EVENT_LOBBY_DELAY = 10; //Cooldown duration in seconds before reopening an event lobby. - - //Dojo Configuration - public static final boolean USE_FAST_DOJO_UPGRADE = true; //Reduced Dojo training points amount required for a belt upgrade. - public static final boolean USE_DEADLY_DOJO = false; //Should bosses really use 1HP,1MP attacks in dojo? - public static final int DOJO_ENERGY_ATK = 100; //Dojo energy gain when deal attack - public static final int DOJO_ENERGY_DMG = 20; //Dojo energy gain when recv attack - - //Wedding Configuration - public static final int WEDDING_RESERVATION_DELAY = 3; //Minimum idle slots before processing a wedding reservation. - public static final int WEDDING_RESERVATION_TIMEOUT = 10; //Limit time in minutes for the couple to show up before cancelling the wedding reservation. - public static final int WEDDING_RESERVATION_INTERVAL = 60; //Time between wedding starts in minutes. - public static final int WEDDING_BLESS_EXP = 30000; //Exp gained per bless count. - public static final int WEDDING_GIFT_LIMIT = 1; //Max number of gifts per person to same wishlist on marriage instances. - public static final boolean WEDDING_BLESSER_SHOWFX = true; //Pops bubble sprite effect on players blessing the couple. Setting this false shows the blessing effect on the couple instead. - - //Buyback Configuration - public static final boolean USE_BUYBACK_WITH_MESOS = true; //Enables usage of either mesos or NX for the buyback fee. - public static final float BUYBACK_FEE = 77.70f; //Sets the base amount needed to buyback (level 30 or under will use the base value). - public static final float BUYBACK_LEVEL_STACK_FEE = 85.47f; //Sets the level-stacking portion of the amount needed to buyback (fee will sum up linearly until level 120, when it reaches the peak). - public static final int BUYBACK_MESO_MULTIPLIER = 1000; //Sets a multiplier for the fee when using meso as the charge unit. - public static final int BUYBACK_RETURN_MINUTES = 1; //Sets the maximum amount of time the player can wait before decide to buyback. - public static final int BUYBACK_COOLDOWN_MINUTES = 7; //Sets the time the player must wait before using buyback again. - - // Login timeout by shavit - public static long TIMEOUT_DURATION = 3600000L; // Kicks clients who don't send any packet to the game server in due time (in millisseconds). - - //Event End Timestamp - public static final long EVENT_END_TIMESTAMP = 1428897600000L; - //Debug Variables public static int DEBUG_VALUES[] = new int[10]; // Field designed for packet testing purposes - + // https://github.com/openstreetmap/josm/blob/a3a6e8a6b657cf4c5b4c64ea14d6e87be6280d65/src/org/openstreetmap/josm/tools/Utils.java#L1566-L1585 /** * Returns the Java version as an int value. diff --git a/src/constants/skills/FPWizard.java b/src/constants/skills/FPWizard.java index 2025c05924..b62b90208c 100644 --- a/src/constants/skills/FPWizard.java +++ b/src/constants/skills/FPWizard.java @@ -29,5 +29,6 @@ public class FPWizard { public static final int MP_EATER = 2100000; public static final int MEDITATION = 2101001; public static final int SLOW = 2101003; + public static final int FIRE_ARROW = 2101004; public static final int POISON_BREATH = 2101005; } diff --git a/src/net/server/Server.java b/src/net/server/Server.java index bc7023394c..9ca9dfdf39 100644 --- a/src/net/server/Server.java +++ b/src/net/server/Server.java @@ -862,7 +862,7 @@ public class Server { } applyAllNameChanges(); //name changes can be missed by INSTANT_NAME_CHANGE applyAllWorldTransfers(); - MaplePet.clearMissingPetsFromDb(); + //MaplePet.clearMissingPetsFromDb(); // thanks Optimist for noticing this taking too long to run MapleCashidGenerator.loadExistentCashIdsFromDb(); IoBuffer.setUseDirectBuffer(false); @@ -877,17 +877,17 @@ public class Server { disconnectIdlesOnLoginTask(); long timeLeft = getTimeLeftForNextHour(); - tMan.register(new CharacterDiseaseTask(), ServerConstants.UPDATE_INTERVAL, ServerConstants.UPDATE_INTERVAL); + tMan.register(new CharacterDiseaseTask(), YamlConfig.config.server.UPDATE_INTERVAL, YamlConfig.config.server.UPDATE_INTERVAL); tMan.register(new ReleaseLockTask(), 2 * 60 * 1000, 2 * 60 * 1000); - tMan.register(new CouponTask(), ServerConstants.COUPON_INTERVAL, timeLeft); + tMan.register(new CouponTask(), YamlConfig.config.server.COUPON_INTERVAL, timeLeft); tMan.register(new RankingCommandTask(), 5 * 60 * 1000, 5 * 60 * 1000); - tMan.register(new RankingLoginTask(), ServerConstants.RANKING_INTERVAL, timeLeft); + tMan.register(new RankingLoginTask(), YamlConfig.config.server.RANKING_INTERVAL, timeLeft); tMan.register(new LoginCoordinatorTask(), 60 * 60 * 1000, timeLeft); tMan.register(new EventRecallCoordinatorTask(), 60 * 60 * 1000, timeLeft); tMan.register(new LoginStorageTask(), 2 * 60 * 1000, 2 * 60 * 1000); tMan.register(new DueyFredrickTask(), 60 * 60 * 1000, timeLeft); tMan.register(new InvitationTask(), 30 * 1000, 30 * 1000); - tMan.register(new RespawnTask(), ServerConstants.RESPAWN_INTERVAL, ServerConstants.RESPAWN_INTERVAL); + tMan.register(new RespawnTask(), YamlConfig.config.server.RESPAWN_INTERVAL, YamlConfig.config.server.RESPAWN_INTERVAL); timeLeft = getTimeLeftForNextDay(); MapleExpeditionBossLog.resetBossLogTable(); @@ -952,6 +952,10 @@ public class Server { MapleSkillbookInformationProvider.getInstance(); OpcodeConstants.generateOpcodeNames(); CommandsExecutor.getInstance(); + + for (Channel ch : this.getAllChannels()) { + ch.reloadEventScriptManager(); + } } public static void main(String args[]) { diff --git a/src/net/server/channel/Channel.java b/src/net/server/channel/Channel.java index 3ee7013f8b..13542c73b2 100644 --- a/src/net/server/channel/Channel.java +++ b/src/net/server/channel/Channel.java @@ -21,13 +21,6 @@ along with this program. If not, see . */ package net.server.channel; -import net.server.channel.task.FaceExpressionScheduler; -import net.server.channel.task.MobMistScheduler; -import net.server.channel.task.OverallScheduler; -import net.server.channel.task.MobAnimationScheduler; -import net.server.channel.task.MobStatusScheduler; -import net.server.channel.task.MobClearSkillScheduler; -import net.server.channel.task.EventScheduler; import java.io.File; import java.net.InetSocketAddress; import java.util.ArrayList; @@ -57,6 +50,7 @@ import net.mina.MapleCodecFactory; import net.server.PlayerStorage; import net.server.Server; +import net.server.channel.task.*; import net.server.world.World; import net.server.world.MapleParty; @@ -84,7 +78,6 @@ import tools.MaplePacketCreator; import tools.Pair; import client.MapleCharacter; import client.status.MonsterStatusEffect; -import constants.net.ServerConstants; import server.maps.MapleMiniDungeonInfo; public final class Channel { @@ -148,7 +141,6 @@ public final class Channel { this.ongoingStartTime = startTime + 10000; // rude approach to a world's last channel boot time, placeholder for the 1st wedding reservation ever this.mapManager = new MapleMapManager(null, world, channel); try { - eventSM = new EventScriptManager(this, getEvents()); port = 7575 + this.channel - 1; port += (world * 100); ip = YamlConfig.config.server.HOST + ":" + port; @@ -163,7 +155,14 @@ public final class Channel { for (MapleExpeditionType exped : MapleExpeditionType.values()) { expedType.add(exped); } - eventSM.init(); + + if (Server.getInstance().isOnline()) { // postpone event loading to improve boot time... thanks Riizade, daronhudson for noticing slow startup times + eventSM = new EventScriptManager(this, getEvents()); + eventSM.init(); + } else { + String[] ev = {}; + eventSM = new EventScriptManager(null, ev); + } dojoStage = new int[20]; dojoFinishTime = new long[20]; @@ -493,6 +492,11 @@ public final class Channel { return getPlayerStorage().getCharacterByName(name) != null; } + public boolean isActive() { + EventScriptManager esm = this.getEventSM(); + return esm != null && esm.isActive(); + } + public boolean finishedShutdown() { return finishedShutdown; } diff --git a/src/net/server/channel/handlers/AbstractDealDamageHandler.java b/src/net/server/channel/handlers/AbstractDealDamageHandler.java index dd9124d1a5..cee5019ea5 100644 --- a/src/net/server/channel/handlers/AbstractDealDamageHandler.java +++ b/src/net/server/channel/handlers/AbstractDealDamageHandler.java @@ -163,9 +163,11 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl int mobCount = attackEffect.getMobCount(); if (attack.skill != Cleric.HEAL) { if (player.isAlive()) { - if(attack.skill == NightWalker.POISON_BOMB) {// Poison Bomb + if(attack.skill == Aran.BODY_PRESSURE || attack.skill == Marauder.ENERGY_CHARGE || attack.skill == ThunderBreaker.ENERGY_CHARGE) { // thanks IxianMace for noticing Energy Charge skills refreshing on touch, leading to misleading buff applies + // prevent touch dmg skills refreshing + } else if(attack.skill == NightWalker.POISON_BOMB) {// Poison Bomb attackEffect.applyTo(player, new Point(attack.position.x, attack.position.y)); - } else if(attack.skill != Aran.BODY_PRESSURE) {// prevent BP refreshing + } else { attackEffect.applyTo(player); if (attack.skill == DawnWarrior.FINAL_ATTACK || attack.skill == Page.FINAL_ATTACK_BW || attack.skill == Page.FINAL_ATTACK_SWORD || attack.skill == Fighter.FINAL_ATTACK_SWORD diff --git a/src/net/server/channel/handlers/AbstractMovementPacketHandler.java b/src/net/server/channel/handlers/AbstractMovementPacketHandler.java index ed9cd86812..621946e15d 100644 --- a/src/net/server/channel/handlers/AbstractMovementPacketHandler.java +++ b/src/net/server/channel/handlers/AbstractMovementPacketHandler.java @@ -34,10 +34,11 @@ import server.movement.LifeMovementFragment; import server.movement.RelativeLifeMovement; import server.movement.TeleportMovement; import tools.data.input.LittleEndianAccessor; +import tools.exceptions.EmptyMovementException; public abstract class AbstractMovementPacketHandler extends AbstractMaplePacketHandler { - protected List parseMovement(LittleEndianAccessor lea) { + protected List parseMovement(LittleEndianAccessor lea) throws EmptyMovementException { List res = new ArrayList<>(); byte numCommands = lea.readByte(); for (byte i = 0; i < numCommands; i++) { @@ -138,15 +139,20 @@ public abstract class AbstractMovementPacketHandler extends AbstractMaplePacketH } default: System.out.println("Unhandled Case:" + command); - return null; + throw new EmptyMovementException(lea); } } + + if (res.isEmpty()) { + throw new EmptyMovementException(lea); + } return res; } - protected void updatePosition(LittleEndianAccessor lea, AnimatedMapleMapObject target, int yOffset) { + protected void updatePosition(LittleEndianAccessor lea, AnimatedMapleMapObject target, int yOffset) throws EmptyMovementException { byte numCommands = lea.readByte(); + if (numCommands < 1) throw new EmptyMovementException(lea); for (byte i = 0; i < numCommands; i++) { byte command = lea.readByte(); switch (command) { @@ -233,6 +239,5 @@ public abstract class AbstractMovementPacketHandler extends AbstractMaplePacketH return; } } - return; } } diff --git a/src/net/server/channel/handlers/BBSOperationHandler.java b/src/net/server/channel/handlers/BBSOperationHandler.java index 020fa8ba0f..0e9e67cf20 100644 --- a/src/net/server/channel/handlers/BBSOperationHandler.java +++ b/src/net/server/channel/handlers/BBSOperationHandler.java @@ -149,8 +149,8 @@ public final class BBSOperationHandler extends AbstractMaplePacketHandler { } private static void editBBSThread(MapleClient client, String title, String text, int icon, int localthreadid) { - MapleCharacter c = client.getPlayer(); - if (c.getGuildId() < 1) { + MapleCharacter chr = client.getPlayer(); + if (chr.getGuildId() < 1) { return; } try { @@ -160,10 +160,10 @@ public final class BBSOperationHandler extends AbstractMaplePacketHandler { ps.setLong(2, currentServerTime()); ps.setInt(3, icon); ps.setString(4, text); - ps.setInt(5, c.getGuildId()); + ps.setInt(5, chr.getGuildId()); ps.setInt(6, localthreadid); - ps.setInt(7, c.getId()); - ps.setBoolean(8, c.getGuildRank() < 3); + ps.setInt(7, chr.getId()); + ps.setBoolean(8, chr.getGuildRank() < 3); ps.execute(); } con.close(); @@ -174,8 +174,8 @@ public final class BBSOperationHandler extends AbstractMaplePacketHandler { } private static void newBBSThread(MapleClient client, String title, String text, int icon, boolean bNotice) { - MapleCharacter c = client.getPlayer(); - if (c.getGuildId() <= 0) { + MapleCharacter chr = client.getPlayer(); + if (chr.getGuildId() <= 0) { return; } int nextId = 0; @@ -184,7 +184,7 @@ public final class BBSOperationHandler extends AbstractMaplePacketHandler { PreparedStatement ps; if (!bNotice) { ps = con.prepareStatement("SELECT MAX(localthreadid) AS lastLocalId FROM bbs_threads WHERE guildid = ?"); - ps.setInt(1, c.getGuildId()); + ps.setInt(1, chr.getGuildId()); try (ResultSet rs = ps.executeQuery()) { rs.next(); nextId = rs.getInt("lastLocalId") + 1; @@ -192,12 +192,12 @@ public final class BBSOperationHandler extends AbstractMaplePacketHandler { ps.close(); } ps = con.prepareStatement("INSERT INTO bbs_threads " + "(`postercid`, `name`, `timestamp`, `icon`, `startpost`, " + "`guildid`, `localthreadid`) " + "VALUES(?, ?, ?, ?, ?, ?, ?)"); - ps.setInt(1, c.getId()); + ps.setInt(1, chr.getId()); ps.setString(2, title); ps.setLong(3, currentServerTime()); ps.setInt(4, icon); ps.setString(5, text); - ps.setInt(6, c.getGuildId()); + ps.setInt(6, chr.getGuildId()); ps.setInt(7, nextId); ps.execute(); ps.close(); diff --git a/src/net/server/channel/handlers/MagicDamageHandler.java b/src/net/server/channel/handlers/MagicDamageHandler.java index 1065f4eeb3..3a8e812b64 100644 --- a/src/net/server/channel/handlers/MagicDamageHandler.java +++ b/src/net/server/channel/handlers/MagicDamageHandler.java @@ -30,7 +30,6 @@ import client.MapleCharacter; import client.MapleClient; import client.Skill; import client.SkillFactory; -import constants.net.ServerConstants; import constants.skills.Bishop; import constants.skills.Evan; import constants.skills.FPArchMage; @@ -63,13 +62,9 @@ public final class MagicDamageHandler extends AbstractDealDamageHandler { c.announce(MaplePacketCreator.getEnergy("energy", chr.getDojoEnergy())); } - byte[] packet; - if ((attack.skill == Evan.FIRE_BREATH || attack.skill == Evan.ICE_BREATH || attack.skill == FPArchMage.BIG_BANG || attack.skill == ILArchMage.BIG_BANG || attack.skill == Bishop.BIG_BANG)) { - packet = MaplePacketCreator.magicAttack(chr, attack.skill, attack.skilllevel, attack.stance, attack.numAttackedAndDamage, attack.allDamage, attack.charge, attack.speed, attack.direction, attack.display); - } else { - packet = MaplePacketCreator.closeRangeAttack(chr, attack.skill, attack.skilllevel, attack.stance, attack.numAttackedAndDamage, attack.allDamage, attack.speed, attack.direction, attack.display); - } - + int charge = (attack.skill == Evan.FIRE_BREATH || attack.skill == Evan.ICE_BREATH || attack.skill == FPArchMage.BIG_BANG || attack.skill == ILArchMage.BIG_BANG || attack.skill == Bishop.BIG_BANG) ? attack.charge : -1; + byte[] packet = MaplePacketCreator.magicAttack(chr, attack.skill, attack.skilllevel, attack.stance, attack.numAttackedAndDamage, attack.allDamage, charge, attack.speed, attack.direction, attack.display); + chr.getMap().broadcastMessage(chr, packet, false, true); MapleStatEffect effect = attack.getAttackEffect(chr, null); Skill skill = SkillFactory.getSkill(attack.skill); diff --git a/src/net/server/channel/handlers/MoveDragonHandler.java b/src/net/server/channel/handlers/MoveDragonHandler.java index 0b8bb9f099..d66e0abac0 100644 --- a/src/net/server/channel/handlers/MoveDragonHandler.java +++ b/src/net/server/channel/handlers/MoveDragonHandler.java @@ -28,6 +28,7 @@ import client.MapleClient; import server.maps.MapleDragon; import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; +import tools.exceptions.EmptyMovementException; public class MoveDragonHandler extends AbstractMovementPacketHandler { @@ -35,19 +36,20 @@ public class MoveDragonHandler extends AbstractMovementPacketHandler { public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { final MapleCharacter chr = c.getPlayer(); final Point startPos = new Point(slea.readShort(), slea.readShort()); - long movementDataStart = slea.getPosition(); final MapleDragon dragon = chr.getDragon(); if (dragon != null) { - updatePosition(slea, dragon, 0); - long movementDataLength = slea.getPosition() - movementDataStart; //how many bytes were read by updatePosition - if (movementDataLength > 0) { + try { + long movementDataStart = slea.getPosition(); + updatePosition(slea, dragon, 0); + long movementDataLength = slea.getPosition() - movementDataStart; //how many bytes were read by updatePosition slea.seek(movementDataStart); + if (chr.isHidden()) { chr.getMap().broadcastGMMessage(chr, MaplePacketCreator.moveDragon(dragon, startPos, slea, movementDataLength)); } else { chr.getMap().broadcastMessage(chr, MaplePacketCreator.moveDragon(dragon, startPos, slea, movementDataLength), dragon.getPosition()); } - } + } catch (EmptyMovementException e) {} } } } \ No newline at end of file diff --git a/src/net/server/channel/handlers/MoveLifeHandler.java b/src/net/server/channel/handlers/MoveLifeHandler.java index a3d1053ac0..3097dffbfc 100644 --- a/src/net/server/channel/handlers/MoveLifeHandler.java +++ b/src/net/server/channel/handlers/MoveLifeHandler.java @@ -41,6 +41,7 @@ import tools.MaplePacketCreator; import tools.Pair; import tools.Randomizer; import tools.data.input.SeekableLittleEndianAccessor; +import tools.exceptions.EmptyMovementException; /** * @author Danny (Leifde) @@ -142,11 +143,7 @@ public final class MoveLifeHandler extends AbstractMovementPacketHandler { short start_y = slea.readShort(); // hmm... Point startPos = new Point(start_x, start_y - 2); Point serverStartPos = new Point(monster.getPosition()); - long movementDataStart = slea.getPosition(); - updatePosition(slea, monster, -2); // Thanks Doodle and ZERO傑洛 for noticing sponge-based bosses moving out of stage in case of no-offset applied - long movementDataLength = slea.getPosition() - movementDataStart; //how many bytes were read by updatePosition - Boolean aggro = monster.aggroMoveLifeUpdate(player); if (aggro == null) return; @@ -156,15 +153,21 @@ public final class MoveLifeHandler extends AbstractMovementPacketHandler { c.announce(MaplePacketCreator.moveMonsterResponse(objectid, moveid, mobMp, aggro)); } - if (movementDataLength > 0) { - if (YamlConfig.config.server.USE_DEBUG_SHOW_RCVD_MVLIFE) { - System.out.println((isSkill ? "SKILL " : (isAttack ? "ATTCK " : " ")) + "castPos: " + castPos + " rawAct: " + rawActivity + " opt: " + pOption + " skillID: " + useSkillId + " skillLV: " + useSkillLevel + " " + "allowSkill: " + nextMovementCouldBeSkill + " mobMp: " + mobMp); - } - slea.seek(movementDataStart); - map.broadcastMessage(player, MaplePacketCreator.moveMonster(objectid, nextMovementCouldBeSkill, rawActivity, useSkillId, useSkillLevel, pOption, startPos, slea, movementDataLength), serverStartPos); - //updatePosition(res, monster, -2); //does this need to be done after the packet is broadcast? - map.moveMonster(monster, monster.getPosition()); - } + + try { + long movementDataStart = slea.getPosition(); + updatePosition(slea, monster, -2); // Thanks Doodle and ZERO傑洛 for noticing sponge-based bosses moving out of stage in case of no-offset applied + long movementDataLength = slea.getPosition() - movementDataStart; //how many bytes were read by updatePosition + slea.seek(movementDataStart); + + if (YamlConfig.config.server.USE_DEBUG_SHOW_RCVD_MVLIFE) { + System.out.println((isSkill ? "SKILL " : (isAttack ? "ATTCK " : " ")) + "castPos: " + castPos + " rawAct: " + rawActivity + " opt: " + pOption + " skillID: " + useSkillId + " skillLV: " + useSkillLevel + " " + "allowSkill: " + nextMovementCouldBeSkill + " mobMp: " + mobMp); + } + + map.broadcastMessage(player, MaplePacketCreator.moveMonster(objectid, nextMovementCouldBeSkill, rawActivity, useSkillId, useSkillLevel, pOption, startPos, slea, movementDataLength), serverStartPos); + //updatePosition(res, monster, -2); //does this need to be done after the packet is broadcast? + map.moveMonster(monster, monster.getPosition()); + } catch (EmptyMovementException e) {} if (banishPlayers != null) { for (MapleCharacter chr : banishPlayers) { diff --git a/src/net/server/channel/handlers/MovePetHandler.java b/src/net/server/channel/handlers/MovePetHandler.java index dd62570498..fd8b120ab7 100644 --- a/src/net/server/channel/handlers/MovePetHandler.java +++ b/src/net/server/channel/handlers/MovePetHandler.java @@ -27,6 +27,7 @@ import client.MapleClient; import server.movement.LifeMovementFragment; import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; +import tools.exceptions.EmptyMovementException; public final class MovePetHandler extends AbstractMovementPacketHandler { @Override @@ -34,8 +35,11 @@ public final class MovePetHandler extends AbstractMovementPacketHandler { int petId = slea.readInt(); slea.readLong(); // Point startPos = StreamUtil.readShortPoint(slea); - List res = parseMovement(slea); - if (res == null || res.isEmpty()) { + List res; + + try { + res = parseMovement(slea); + } catch (EmptyMovementException e) { return; } MapleCharacter player = c.getPlayer(); diff --git a/src/net/server/channel/handlers/MovePlayerHandler.java b/src/net/server/channel/handlers/MovePlayerHandler.java index 2a572003bd..85fc546951 100644 --- a/src/net/server/channel/handlers/MovePlayerHandler.java +++ b/src/net/server/channel/handlers/MovePlayerHandler.java @@ -24,22 +24,24 @@ package net.server.channel.handlers; import client.MapleClient; import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; +import tools.exceptions.EmptyMovementException; public final class MovePlayerHandler extends AbstractMovementPacketHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { slea.skip(9); - long movementDataStart = slea.getPosition(); - updatePosition(slea, c.getPlayer(), 0); - long movementDataLength = slea.getPosition() - movementDataStart; //how many bytes were read by updatePosition - if (movementDataLength > 0) { - slea.seek(movementDataStart); + try { // thanks Sa for noticing empty movement sequences crashing players + long movementDataStart = slea.getPosition(); + updatePosition(slea, c.getPlayer(), 0); + long movementDataLength = slea.getPosition() - movementDataStart; //how many bytes were read by updatePosition + slea.seek(movementDataStart); + c.getPlayer().getMap().movePlayer(c.getPlayer(), c.getPlayer().getPosition()); if (c.getPlayer().isHidden()) { c.getPlayer().getMap().broadcastGMMessage(c.getPlayer(), MaplePacketCreator.movePlayer(c.getPlayer().getId(), slea, movementDataLength), false); } else { c.getPlayer().getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.movePlayer(c.getPlayer().getId(), slea, movementDataLength), false); } - } + } catch (EmptyMovementException e) {} } } diff --git a/src/net/server/channel/handlers/MoveSummonHandler.java b/src/net/server/channel/handlers/MoveSummonHandler.java index 911ffd2ce8..a6cf0a4420 100644 --- a/src/net/server/channel/handlers/MoveSummonHandler.java +++ b/src/net/server/channel/handlers/MoveSummonHandler.java @@ -29,6 +29,7 @@ import client.MapleClient; import server.maps.MapleSummon; import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; +import tools.exceptions.EmptyMovementException; public final class MoveSummonHandler extends AbstractMovementPacketHandler { @Override @@ -45,11 +46,14 @@ public final class MoveSummonHandler extends AbstractMovementPacketHandler { } } if (summon != null) { - long movementDataStart = slea.getPosition(); - updatePosition(slea, summon, 0); - long movementDataLength = slea.getPosition() - movementDataStart; //how many bytes were read by updatePosition - slea.seek(movementDataStart); - player.getMap().broadcastMessage(player, MaplePacketCreator.moveSummon(player.getId(), oid, startPos, slea, movementDataLength), summon.getPosition()); + try { + long movementDataStart = slea.getPosition(); + updatePosition(slea, summon, 0); + long movementDataLength = slea.getPosition() - movementDataStart; //how many bytes were read by updatePosition + slea.seek(movementDataStart); + + player.getMap().broadcastMessage(player, MaplePacketCreator.moveSummon(player.getId(), oid, startPos, slea, movementDataLength), summon.getPosition()); + } catch (EmptyMovementException e) {} } } } diff --git a/src/net/server/channel/handlers/PetAutoPotHandler.java b/src/net/server/channel/handlers/PetAutoPotHandler.java index f1ea8a7518..1e20797d52 100644 --- a/src/net/server/channel/handlers/PetAutoPotHandler.java +++ b/src/net/server/channel/handlers/PetAutoPotHandler.java @@ -43,12 +43,12 @@ public final class PetAutoPotHandler extends AbstractMaplePacketHandler { MapleStatEffect stat = MapleItemInformationProvider.getInstance().getItemEffect(itemId); if (stat.getHp() > 0 || stat.getHpRate() > 0.0) { float estimatedHp = ((float) chr.getHp()) / chr.getMaxHp(); - chr.setAutopotHpAlert(estimatedHp); + chr.setAutopotHpAlert(estimatedHp + 0.05f); } if (stat.getMp() > 0 || stat.getMpRate() > 0.0) { float estimatedMp = ((float) chr.getMp()) / chr.getMaxMp(); - chr.setAutopotMpAlert(estimatedMp); + chr.setAutopotMpAlert(estimatedMp + 0.05f); } PetAutopotProcessor.runAutopotAction(c, slot, itemId); diff --git a/src/net/server/channel/handlers/PlayerLoggedinHandler.java b/src/net/server/channel/handlers/PlayerLoggedinHandler.java index 379ffeb5ab..34b43627c8 100644 --- a/src/net/server/channel/handlers/PlayerLoggedinHandler.java +++ b/src/net/server/channel/handlers/PlayerLoggedinHandler.java @@ -116,13 +116,16 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { } Channel cserv = wserv.getChannel(c.getChannel()); - if(cserv == null) { + if(cserv == null || !cserv.isActive()) { c.setChannel(1); cserv = wserv.getChannel(c.getChannel()); if(cserv == null) { c.disconnect(true, false); return; + } else if (!cserv.isActive()) { + c.announce(MaplePacketCreator.getAfterLoginError(7)); + return; } } diff --git a/src/net/server/channel/handlers/PlayerMapTransitionHandler.java b/src/net/server/channel/handlers/PlayerMapTransitionHandler.java index 13a02d3cc3..0828593921 100644 --- a/src/net/server/channel/handlers/PlayerMapTransitionHandler.java +++ b/src/net/server/channel/handlers/PlayerMapTransitionHandler.java @@ -51,19 +51,21 @@ public final class PlayerMapTransitionHandler extends AbstractMaplePacketHandler chr.announce(MaplePacketCreator.giveBuff(1, beaconid, stat)); } - for (MapleMapObject mo : chr.getMap().getMonsters()) { // thanks BHB, IxianMace, Jefe for noticing several issues regarding mob statuses (such as freeze) - MapleMonster m = (MapleMonster) mo; - if (m.getSpawnEffect() == 0 || m.getHp() < m.getMaxHp()) { // avoid effect-spawning mobs - if (m.getController() == chr) { - c.announce(MaplePacketCreator.stopControllingMonster(m.getObjectId())); - m.sendDestroyData(c); - m.aggroRedirectController(); - } else { - m.sendDestroyData(c); - } + if (!chr.isHidden()) { // thanks Lame for noticing hidden characters controlling mobs + for (MapleMapObject mo : chr.getMap().getMonsters()) { // thanks BHB, IxianMace, Jefe for noticing several issues regarding mob statuses (such as freeze) + MapleMonster m = (MapleMonster) mo; + if (m.getSpawnEffect() == 0 || m.getHp() < m.getMaxHp()) { // avoid effect-spawning mobs + if (m.getController() == chr) { + c.announce(MaplePacketCreator.stopControllingMonster(m.getObjectId())); + m.sendDestroyData(c); + m.aggroRedirectController(); + } else { + m.sendDestroyData(c); + } - m.aggroSwitchController(chr, false); - m.sendSpawnData(c); + m.aggroSwitchController(chr, false); + m.sendSpawnData(c); + } } } } diff --git a/src/net/server/channel/handlers/RaiseIncExpHandler.java b/src/net/server/channel/handlers/RaiseIncExpHandler.java index 68261b42c0..89c3dd3c2a 100644 --- a/src/net/server/channel/handlers/RaiseIncExpHandler.java +++ b/src/net/server/channel/handlers/RaiseIncExpHandler.java @@ -2,13 +2,17 @@ package net.server.channel.handlers; import java.util.Map; +import client.MapleCharacter; import client.MapleClient; +import client.MapleQuestStatus; import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; import net.AbstractMaplePacketHandler; import client.inventory.manipulator.MapleInventoryManipulator; import server.MapleItemInformationProvider; import server.MapleItemInformationProvider.QuestConsItem; +import server.quest.MapleQuest; +import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; /** @@ -22,7 +26,7 @@ public class RaiseIncExpHandler extends AbstractMaplePacketHandler { public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { byte inventorytype = slea.readByte();//nItemIT short slot = slea.readShort();//nSlotPosition - int itemid = slea.readInt();//nItemID + int itemid = slea.readInt();//nItemID if (c.tryacquireClient()) { try { @@ -32,15 +36,22 @@ public class RaiseIncExpHandler extends AbstractMaplePacketHandler { return; } - int questid = consItem.questid; + int infoNumber = consItem.questid; Map consumables = consItem.items; - + + MapleCharacter chr = c.getPlayer(); + MapleQuest quest = MapleQuest.getInstanceFromInfoNumber(infoNumber); + if (!chr.getQuest(quest).getStatus().equals(MapleQuestStatus.Status.STARTED)) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + int consId; - MapleInventory inv = c.getPlayer().getInventory(MapleInventoryType.getByType(inventorytype)); + MapleInventory inv = chr.getInventory(MapleInventoryType.getByType(inventorytype)); inv.lockInventory(); try { consId = inv.getItem(slot).getItemId(); - if (!consumables.containsKey(consId) || !c.getPlayer().haveItem(consId)) { + if (!consumables.containsKey(consId) || !chr.haveItem(consId)) { return; } @@ -48,9 +59,12 @@ public class RaiseIncExpHandler extends AbstractMaplePacketHandler { } finally { inv.unlockInventory(); } - - int nextValue = Math.min(consumables.get(consId) + Integer.parseInt(c.getPlayer().getQuestInfo(questid)), consItem.exp * consItem.grade); - c.getPlayer().updateQuestInfo(questid, "" + nextValue); + + int questid = quest.getId(); + int nextValue = Math.min(consumables.get(consId) + c.getAbstractPlayerInteraction().getQuestProgressInt(questid, infoNumber), consItem.exp * consItem.grade); + c.getAbstractPlayerInteraction().setQuestProgress(questid, infoNumber, nextValue); + + c.announce(MaplePacketCreator.enableActions()); } finally { c.releaseClient(); } diff --git a/src/net/server/channel/handlers/RaiseUIStateHandler.java b/src/net/server/channel/handlers/RaiseUIStateHandler.java index e0d602d941..287de88347 100644 --- a/src/net/server/channel/handlers/RaiseUIStateHandler.java +++ b/src/net/server/channel/handlers/RaiseUIStateHandler.java @@ -1,9 +1,11 @@ package net.server.channel.handlers; import client.MapleCharacter.DelayedQuestUpdate; +import client.MapleCharacter; import client.MapleClient; import client.MapleQuestStatus; import net.AbstractMaplePacketHandler; +import scripting.quest.QuestScriptManager; import server.quest.MapleQuest; import tools.data.input.SeekableLittleEndianAccessor; @@ -15,19 +17,21 @@ public class RaiseUIStateHandler extends AbstractMaplePacketHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { - int questid = slea.readShort(); + int infoNumber = slea.readShort(); if (c.tryacquireClient()) { try { - MapleQuest quest = MapleQuest.getInstance(questid); - MapleQuestStatus mqs = c.getPlayer().getQuest(quest); + MapleCharacter chr = c.getPlayer(); + MapleQuest quest = MapleQuest.getInstanceFromInfoNumber(infoNumber); + MapleQuestStatus mqs = chr.getQuest(quest); + + QuestScriptManager.getInstance().raiseOpen(c, (short) infoNumber, mqs.getNpc()); + if (mqs.getStatus() == MapleQuestStatus.Status.NOT_STARTED) { - quest.forceStart(c.getPlayer(), 22000); - c.getPlayer().updateQuestInfo(quest.getId(), "0"); + quest.forceStart(chr, 22000); + c.getAbstractPlayerInteraction().setQuestProgress(quest.getId(), infoNumber, 0); } else if (mqs.getStatus() == MapleQuestStatus.Status.STARTED) { - c.getPlayer().announceUpdateQuest(DelayedQuestUpdate.UPDATE, mqs, false); - } else { - //c.announce(MaplePacketCreator.updateQuestInfo(mqs.getQuestID(), 22000, "0")); + chr.announceUpdateQuest(DelayedQuestUpdate.UPDATE, mqs, mqs.getInfoNumber() > 0); } } finally { c.releaseClient(); diff --git a/src/net/server/guild/MapleGuildCharacter.java b/src/net/server/guild/MapleGuildCharacter.java index 41e12ca42b..aff55becba 100644 --- a/src/net/server/guild/MapleGuildCharacter.java +++ b/src/net/server/guild/MapleGuildCharacter.java @@ -35,22 +35,22 @@ public class MapleGuildCharacter { private boolean online; private String name; - public MapleGuildCharacter(MapleCharacter c) { - this.character = c; - this.name = c.getName(); - this.level = c.getLevel(); - this.id = c.getId(); - this.channel = c.getClient().getChannel(); - this.world = c.getWorld(); - this.jobid = c.getJob().getId(); - this.guildrank = c.getGuildRank(); - this.guildid = c.getGuildId(); + public MapleGuildCharacter(MapleCharacter chr) { + this.character = chr; + this.name = chr.getName(); + this.level = chr.getLevel(); + this.id = chr.getId(); + this.channel = chr.getClient().getChannel(); + this.world = chr.getWorld(); + this.jobid = chr.getJob().getId(); + this.guildrank = chr.getGuildRank(); + this.guildid = chr.getGuildId(); this.online = true; - this.allianceRank = c.getAllianceRank(); + this.allianceRank = chr.getAllianceRank(); } - public MapleGuildCharacter(MapleCharacter c, int _id, int _lv, String _name, int _channel, int _world, int _job, int _rank, int _gid, boolean _on, int _allianceRank) { - this.character = c; + public MapleGuildCharacter(MapleCharacter chr, int _id, int _lv, String _name, int _channel, int _world, int _job, int _rank, int _gid, boolean _on, int _allianceRank) { + this.character = chr; this.level = _lv; this.id = _id; this.name = _name; diff --git a/src/net/server/handlers/login/CharlistRequestHandler.java b/src/net/server/handlers/login/CharlistRequestHandler.java index 72f29c06ca..547156edfd 100644 --- a/src/net/server/handlers/login/CharlistRequestHandler.java +++ b/src/net/server/handlers/login/CharlistRequestHandler.java @@ -24,6 +24,7 @@ package net.server.handlers.login; import client.MapleClient; import net.AbstractMaplePacketHandler; import net.server.Server; +import net.server.channel.Channel; import net.server.world.World; import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; @@ -42,7 +43,8 @@ public final class CharlistRequestHandler extends AbstractMaplePacketHandler { } int channel = slea.readByte() + 1; - if(wserv.getChannel(channel) == null) { + Channel ch = wserv.getChannel(channel); + if(ch == null || !ch.isActive()) { c.announce(MaplePacketCreator.getServerStatus(2)); return; } diff --git a/src/net/server/world/World.java b/src/net/server/world/World.java index b46b42a884..6847f5ca7d 100644 --- a/src/net/server/world/World.java +++ b/src/net/server/world/World.java @@ -212,7 +212,7 @@ public class World { merchantSchedule = tman.register(new HiredMerchantTask(this), 10 * 60 * 1000, 10 * 60 * 1000); timedMapObjectsSchedule = tman.register(new TimedMapObjectTask(this), 60 * 1000, 60 * 1000); charactersSchedule = tman.register(new CharacterAutosaverTask(this), 60 * 60 * 1000, 60 * 60 * 1000); - marriagesSchedule = tman.register(new WeddingReservationTask(this), ServerConstants.WEDDING_RESERVATION_INTERVAL * 60 * 1000, ServerConstants.WEDDING_RESERVATION_INTERVAL * 60 * 1000); + marriagesSchedule = tman.register(new WeddingReservationTask(this), YamlConfig.config.server.WEDDING_RESERVATION_INTERVAL * 60 * 1000, YamlConfig.config.server.WEDDING_RESERVATION_INTERVAL * 60 * 1000); mapOwnershipSchedule = tman.register(new MapOwnershipTask(this), 20 * 1000, 20 * 1000); fishingSchedule = tman.register(new FishingTask(this), 10 * 1000, 10 * 1000); partySearchSchedule = tman.register(new PartySearchTask(this), 10 * 1000, 10 * 1000); @@ -730,14 +730,14 @@ public class World { } public void sendPacket(List targetIds, final byte[] packet, int exception) { - MapleCharacter c; + MapleCharacter chr; for (int i : targetIds) { if (i == exception) { continue; } - c = getPlayerStorage().getCharacterById(i); - if (c != null) { - c.getClient().announce(packet); + chr = getPlayerStorage().getCharacterById(i); + if (chr != null) { + chr.getClient().announce(packet); } } } diff --git a/src/scripting/AbstractPlayerInteraction.java b/src/scripting/AbstractPlayerInteraction.java index 7ea9a0ec04..b7528f8fc3 100644 --- a/src/scripting/AbstractPlayerInteraction.java +++ b/src/scripting/AbstractPlayerInteraction.java @@ -365,28 +365,7 @@ public class AbstractPlayerInteraction { NPCScriptManager.getInstance().start(c, npcid, script, null); } - public void updateQuest(int questid, int data) { - MapleQuestStatus status = c.getPlayer().getQuest(MapleQuest.getInstance(questid)); - updateQuest(questid, status.getAnyProgressKey(), data); - } - - public void updateQuest(int questid, String data) { - MapleQuestStatus status = c.getPlayer().getQuest(MapleQuest.getInstance(questid)); - updateQuest(questid, status.getAnyProgressKey(), data); - } - - public void updateQuest(int questid, int pid, int data) { - updateQuest(questid, pid, String.valueOf(data)); - } - - public void updateQuest(int questid, int pid, String data) { - MapleQuestStatus status = c.getPlayer().getQuest(MapleQuest.getInstance(questid)); - status.setStatus(MapleQuestStatus.Status.STARTED); - status.setProgress(pid, data);//override old if exists - c.getPlayer().updateQuest(status); - } - - public int getQuestStatus(int id) { + public int getQuestStatus(int id) { return c.getPlayer().getQuest(MapleQuest.getInstance(id)).getStatus().getId(); } @@ -394,75 +373,93 @@ public class AbstractPlayerInteraction { return c.getPlayer().getQuest(MapleQuest.getInstance(id)).getStatus(); } - public boolean isQuestCompleted(int quest) { + public boolean isQuestCompleted(int id) { try { - return getQuestStat(quest) == MapleQuestStatus.Status.COMPLETED; + return getQuestStat(id) == MapleQuestStatus.Status.COMPLETED; } catch (NullPointerException e) { e.printStackTrace(); return false; } } - public boolean isQuestActive(int quest) { - return isQuestStarted(quest); + public boolean isQuestActive(int id) { + return isQuestStarted(id); } - public boolean isQuestStarted(int quest) { + public boolean isQuestStarted(int id) { try { - return getQuestStat(quest) == MapleQuestStatus.Status.STARTED; + return getQuestStat(id) == MapleQuestStatus.Status.STARTED; } catch (NullPointerException e) { e.printStackTrace(); return false; } } - public void setQuestProgress(int qid, int progress) { - MapleQuestStatus status = c.getPlayer().getQuest(MapleQuest.getInstance(qid)); - status.setProgress(status.getAnyProgressKey(), String.valueOf(progress)); + public void setQuestProgress(int id, String progress) { + setQuestProgress(id, 0, progress); } - public void setQuestProgress(int qid, int pid, int progress) { - MapleQuestStatus status = c.getPlayer().getQuest(MapleQuest.getInstance(qid)); - status.setProgress(pid, String.valueOf(progress)); - } - - public void setStringQuestProgress(int qid, int pid, String progress) { - MapleQuestStatus status = c.getPlayer().getQuest(MapleQuest.getInstance(qid)); - status.setProgress(pid, progress); + public void setQuestProgress(int id, int progress) { + setQuestProgress(id, 0, "" + progress); } - public int getQuestProgress(int qid) { - MapleQuestStatus status = c.getPlayer().getQuest(MapleQuest.getInstance(qid)); - String progress = status.getProgress(status.getAnyProgressKey()); - - if (progress.isEmpty()) { + public void setQuestProgress(int id, int infoNumber, int progress) { + setQuestProgress(id, infoNumber, "" + progress); + } + + public void setQuestProgress(int id, int infoNumber, String progress) { + c.getPlayer().setQuestProgress(id, infoNumber, progress); + } + + public String getQuestProgress(int id) { + return getQuestProgress(id, 0); + } + + public String getQuestProgress(int id, int infoNumber) { + MapleQuestStatus qs = getPlayer().getQuest(MapleQuest.getInstance(id)); + + if (qs.getInfoNumber() == infoNumber && infoNumber > 0) { + qs = getPlayer().getQuest(MapleQuest.getInstance(infoNumber)); + infoNumber = 0; + } + + if (qs != null) { + return qs.getProgress(infoNumber); + } else { + return ""; + } + } + + public int getQuestProgressInt(int id) { + try { + return Integer.valueOf(getQuestProgress(id)); + } catch (NumberFormatException nfe) { return 0; } - return Integer.parseInt(progress); } - public int getQuestProgress(int qid, int pid) { - if (getPlayer().getQuest(MapleQuest.getInstance(qid)).getProgress(pid).isEmpty()) { - return 0; + public int getQuestProgressInt(int id, int infoNumber) { + try { + return Integer.valueOf(getQuestProgress(id, infoNumber)); + } catch (NumberFormatException nfe) { + return 0; } - return Integer.parseInt(getPlayer().getQuest(MapleQuest.getInstance(qid)).getProgress(pid)); - } + } - public String getStringQuestProgress(int qid, int pid) { - if (getPlayer().getQuest(MapleQuest.getInstance(qid)).getProgress(pid).isEmpty()) { - return ""; + public void resetAllQuestProgress(int id) { + MapleQuestStatus qs = getPlayer().getQuest(MapleQuest.getInstance(id)); + if (qs != null) { + qs.resetAllProgress(); + getPlayer().announceUpdateQuest(DelayedQuestUpdate.UPDATE, qs, false); } - return getPlayer().getQuest(MapleQuest.getInstance(qid)).getProgress(pid); } - public void resetAllQuestProgress(int qid) { - getPlayer().getQuest(MapleQuest.getInstance(qid)).resetAllProgress(); - getPlayer().announceUpdateQuest(DelayedQuestUpdate.UPDATE, getPlayer().getQuest(MapleQuest.getInstance(qid)), false); - } - - public void resetQuestProgress(int qid, int pid) { - getPlayer().getQuest(MapleQuest.getInstance(qid)).resetProgress(pid); - getPlayer().announceUpdateQuest(DelayedQuestUpdate.UPDATE, getPlayer().getQuest(MapleQuest.getInstance(qid)), false); + public void resetQuestProgress(int id, int infoNumber) { + MapleQuestStatus qs = getPlayer().getQuest(MapleQuest.getInstance(id)); + if (qs != null) { + qs.resetProgress(infoNumber); + getPlayer().announceUpdateQuest(DelayedQuestUpdate.UPDATE, qs, false); + } } public boolean forceStartQuest(int id) { @@ -497,26 +494,26 @@ public class AbstractPlayerInteraction { return completeQuest(id, 9010000); } - public boolean startQuest(short id, int npcId) { - return startQuest((int) id, npcId); + public boolean startQuest(short id, int npc) { + return startQuest((int) id, npc); } - public boolean completeQuest(short id, int npcId) { - return completeQuest((int) id, npcId); + public boolean completeQuest(short id, int npc) { + return completeQuest((int) id, npc); } - public boolean startQuest(int id, int npcId) { + public boolean startQuest(int id, int npc) { try { - return MapleQuest.getInstance(id).forceStart(getPlayer(), npcId); + return MapleQuest.getInstance(id).forceStart(getPlayer(), npc); } catch (NullPointerException ex) { ex.printStackTrace(); return false; } } - public boolean completeQuest(int id, int npcId) { + public boolean completeQuest(int id, int npc) { try { - return MapleQuest.getInstance(id).forceComplete(getPlayer(), npcId); + return MapleQuest.getInstance(id).forceComplete(getPlayer(), npc); } catch (NullPointerException ex) { ex.printStackTrace(); return false; @@ -682,6 +679,10 @@ public class AbstractPlayerInteraction { public void message(String message) { getPlayer().message(message); } + + public void dropMessage(int type, String message) { + getPlayer().dropMessage(type, message); + } public void mapMessage(int type, String message) { getPlayer().getMap().broadcastMessage(MaplePacketCreator.serverNotice(type, message)); diff --git a/src/scripting/event/EventInstanceManager.java b/src/scripting/event/EventInstanceManager.java index cf08ac3ed4..6a6e574ceb 100644 --- a/src/scripting/event/EventInstanceManager.java +++ b/src/scripting/event/EventInstanceManager.java @@ -898,7 +898,7 @@ public class EventInstanceManager { } } - public void dispatchUpdateQuestMobCount(int mobid, int mapid) { + public void dispatchRaiseQuestMobCount(int mobid, int mapid) { Map mapChars = getInstanceMap(mapid).getMapPlayers(); if(!mapChars.isEmpty()) { List eventMembers = getPlayers(); @@ -907,7 +907,7 @@ public class EventInstanceManager { MapleCharacter chr = mapChars.get(evChr.getId()); if(chr != null && chr.isLoggedinWorld()) { - chr.updateQuestMobCount(mobid); + chr.raiseQuestMobCount(mobid); } } } diff --git a/src/scripting/event/EventScriptManager.java b/src/scripting/event/EventScriptManager.java index af13ce6891..448b0bdfec 100644 --- a/src/scripting/event/EventScriptManager.java +++ b/src/scripting/event/EventScriptManager.java @@ -27,7 +27,6 @@ import java.util.Map.Entry; import java.util.logging.Level; import java.util.logging.Logger; -import javax.script.ScriptEngine; import jdk.nashorn.api.scripting.NashornScriptEngine; import net.server.channel.Channel; @@ -48,7 +47,9 @@ public class EventScriptManager extends AbstractScriptManager { public NashornScriptEngine iv; public EventManager em; } + private Map events = new LinkedHashMap<>(); + private boolean active = false; public EventScriptManager(Channel cserv, String[] scripts) { super(); @@ -67,6 +68,10 @@ public class EventScriptManager extends AbstractScriptManager { } return entry.em; } + + public boolean isActive() { + return active; + } public void init() { for (EventEntry entry : events.values()) { @@ -78,6 +83,8 @@ public class EventScriptManager extends AbstractScriptManager { System.out.println("Error on script: " + entry.em.getName()); } } + + active = true; } private void reloadScripts() { @@ -100,6 +107,7 @@ public class EventScriptManager extends AbstractScriptManager { } public void cancel() { + active = false; for (EventEntry entry : events.values()) { entry.em.cancel(); } diff --git a/src/scripting/map/MapScriptMethods.java b/src/scripting/map/MapScriptMethods.java index b302cfe694..575cc41ed8 100644 --- a/src/scripting/map/MapScriptMethods.java +++ b/src/scripting/map/MapScriptMethods.java @@ -94,13 +94,13 @@ public class MapScriptMethods extends AbstractPlayerInteraction { return; } } - MapleQuestStatus q = getPlayer().getQuest(quest); - if (!q.addMedalMap(getPlayer().getMapId())) { + MapleQuestStatus qs = getPlayer().getQuest(quest); + if (!qs.addMedalMap(getPlayer().getMapId())) { return; } - String status = Integer.toString(q.getMedalProgress()); - String infoex = quest.getInfoEx(); - getPlayer().announceUpdateQuest(DelayedQuestUpdate.UPDATE, q, true); + String status = Integer.toString(qs.getMedalProgress()); + String infoex = qs.getInfoEx(0); + getPlayer().announceUpdateQuest(DelayedQuestUpdate.UPDATE, qs, true); StringBuilder smp = new StringBuilder(); StringBuilder etm = new StringBuilder(); if (status.equals(infoex)) { @@ -123,15 +123,15 @@ public class MapScriptMethods extends AbstractPlayerInteraction { return; } } - MapleQuestStatus q = getPlayer().getQuest(quest); - if (!q.addMedalMap(getPlayer().getMapId())) { + MapleQuestStatus qs = getPlayer().getQuest(quest); + if (!qs.addMedalMap(getPlayer().getMapId())) { return; } - String status = Integer.toString(q.getMedalProgress()); - getPlayer().announceUpdateQuest(DelayedQuestUpdate.UPDATE, q, true); + String status = Integer.toString(qs.getMedalProgress()); + getPlayer().announceUpdateQuest(DelayedQuestUpdate.UPDATE, qs, true); getPlayer().announce(MaplePacketCreator.earnTitleMessage(status + "/5 Completed")); getPlayer().announce(MaplePacketCreator.earnTitleMessage("The One Who's Touched the Sky title in progress.")); - if (Integer.toString(q.getMedalProgress()).equals(quest.getInfoEx())) { + if (Integer.toString(qs.getMedalProgress()).equals(qs.getInfoEx(0))) { showInfoText("The One Who's Touched the Sky" + rewardstring); getPlayer().announce(MaplePacketCreator.getShowQuestCompletion(quest.getId())); } else { diff --git a/src/scripting/npc/NPCConversationManager.java b/src/scripting/npc/NPCConversationManager.java index 1d59e12836..57c1929aa1 100644 --- a/src/scripting/npc/NPCConversationManager.java +++ b/src/scripting/npc/NPCConversationManager.java @@ -579,7 +579,7 @@ public class NPCConversationManager extends AbstractPlayerInteraction { return itemid != baseid && itemExists(baseid) ? baseid : -1; } - private int getEquippedItemid(int itemid) { + private int getEquippedCosmeticid(int itemid) { if (itemid < 30000) { return getPlayer().getFace(); } else { @@ -588,7 +588,7 @@ public class NPCConversationManager extends AbstractPlayerInteraction { } public boolean isCosmeticEquipped(int itemid) { - return getEquippedItemid(itemid) == itemid; + return getEquippedCosmeticid(itemid) == itemid; } public boolean isUsingOldPqNpcStyle() { diff --git a/src/scripting/quest/QuestScriptManager.java b/src/scripting/quest/QuestScriptManager.java index 6116cbbfbc..c67de4b196 100644 --- a/src/scripting/quest/QuestScriptManager.java +++ b/src/scripting/quest/QuestScriptManager.java @@ -59,10 +59,6 @@ public class QuestScriptManager extends AbstractScriptManager { public void start(MapleClient c, short questid, int npc) { MapleQuest quest = MapleQuest.getInstance(questid); - if (!quest.canStartWithoutRequirements(c.getPlayer())) { - dispose(c); - return; - } try { QuestActionManager qm = new QuestActionManager(c, questid, npc, true); if (qms.containsKey(c)) { @@ -169,6 +165,36 @@ public class QuestScriptManager extends AbstractScriptManager { } } + public void raiseOpen(MapleClient c, short questid, int npc) { + try { + QuestActionManager qm = new QuestActionManager(c, questid, npc, true); + if (qms.containsKey(c)) { + return; + } + if(c.canClickNPC()) { + qms.put(c, qm); + + NashornScriptEngine iv = getQuestScriptEngine(c, questid); + if (iv == null) { + //FilePrinter.printError(FilePrinter.QUEST_UNCODED, "RAISE Quest " + questid + " is uncoded."); + qm.dispose(); + return; + } + + iv.put("qm", qm); + scripts.put(c, iv); + c.setClickedNPC(); + iv.invokeFunction("raiseOpen"); + } + } catch (final UndeclaredThrowableException ute) { + FilePrinter.printError(FilePrinter.QUEST + questid + ".txt", ute); + dispose(c); + } catch (final Throwable t) { + FilePrinter.printError(FilePrinter.QUEST + getQM(c).getQuest() + ".txt", t); + dispose(c); + } + } + public void dispose(QuestActionManager qm, MapleClient c) { qms.remove(c); scripts.remove(c); diff --git a/src/server/MapleItemInformationProvider.java b/src/server/MapleItemInformationProvider.java index 4a2148e8c5..6ce159d95a 100644 --- a/src/server/MapleItemInformationProvider.java +++ b/src/server/MapleItemInformationProvider.java @@ -2156,11 +2156,10 @@ public class MapleItemInformationProvider { return questItemConsCache.get(itemId); } MapleData data = getItemData(itemId); + QuestConsItem qcItem = null; MapleData infoData = data.getChildByPath("info"); - MapleData ciData = infoData.getChildByPath("consumeItem"); - QuestConsItem qcItem = null; - if (ciData != null) { + if (infoData.getChildByPath("uiData") != null) { qcItem = new QuestConsItem(); qcItem.exp = MapleDataTool.getInt("exp", infoData); qcItem.grade = MapleDataTool.getInt("grade", infoData); @@ -2168,11 +2167,14 @@ public class MapleItemInformationProvider { qcItem.items = new HashMap<>(2); Map cItems = qcItem.items; - for (MapleData ciItem : ciData.getChildren()) { - int itemid = MapleDataTool.getInt("0", ciItem); - int qty = MapleDataTool.getInt("1", ciItem); - - cItems.put(itemid, qty); + MapleData ciData = infoData.getChildByPath("consumeItem"); + if (ciData != null) { + for (MapleData ciItem : ciData.getChildren()) { + int itemid = MapleDataTool.getInt("0", ciItem); + int qty = MapleDataTool.getInt("1", ciItem); + + cItems.put(itemid, qty); + } } } diff --git a/src/server/MapleTrade.java b/src/server/MapleTrade.java index c5a6a50d1a..194d0fb07a 100644 --- a/src/server/MapleTrade.java +++ b/src/server/MapleTrade.java @@ -80,8 +80,8 @@ public class MapleTrade { private byte number; private boolean fullTrade = false; - public MapleTrade(byte number, MapleCharacter c) { - chr = c; + public MapleTrade(byte number, MapleCharacter chr) { + this.chr = chr; this.number = number; } @@ -291,8 +291,8 @@ public class MapleTrade { } } - public static void completeTrade(MapleCharacter c) { - MapleTrade local = c.getTrade(); + public static void completeTrade(MapleCharacter chr) { + MapleTrade local = chr.getTrade(); MapleTrade partner = local.getPartner(); if (local.checkCompleteHandshake()) { local.fetchExchangedItems(); @@ -300,12 +300,12 @@ public class MapleTrade { if (!local.fitsMeso()) { cancelTrade(local.getChr(), TradeResult.UNSUCCESSFUL); - c.message("There is not enough meso inventory space to complete the trade."); + chr.message("There is not enough meso inventory space to complete the trade."); partner.getChr().message("Partner does not have enough meso inventory space to complete the trade."); return; } else if (!partner.fitsMeso()) { cancelTrade(partner.getChr(), TradeResult.UNSUCCESSFUL); - c.message("Partner does not have enough meso inventory space to complete the trade."); + chr.message("Partner does not have enough meso inventory space to complete the trade."); partner.getChr().message("There is not enough meso inventory space to complete the trade."); return; } @@ -313,7 +313,7 @@ public class MapleTrade { if (!local.fitsInInventory()) { if (local.fitsUniquesInInventory()) { cancelTrade(local.getChr(), TradeResult.UNSUCCESSFUL); - c.message("There is not enough inventory space to complete the trade."); + chr.message("There is not enough inventory space to complete the trade."); partner.getChr().message("Partner does not have enough inventory space to complete the trade."); } else { cancelTrade(local.getChr(), TradeResult.UNSUCCESSFUL_UNIQUE_ITEM_LIMIT); @@ -323,11 +323,11 @@ public class MapleTrade { } else if (!partner.fitsInInventory()) { if (partner.fitsUniquesInInventory()) { cancelTrade(partner.getChr(), TradeResult.UNSUCCESSFUL); - c.message("Partner does not have enough inventory space to complete the trade."); + chr.message("Partner does not have enough inventory space to complete the trade."); partner.getChr().message("There is not enough inventory space to complete the trade."); } else { cancelTrade(partner.getChr(), TradeResult.UNSUCCESSFUL_UNIQUE_ITEM_LIMIT); - c.message("Partner cannot hold more than one one-of-a-kind item at a time."); + chr.message("Partner cannot hold more than one one-of-a-kind item at a time."); } return; } @@ -355,7 +355,7 @@ public class MapleTrade { partner.completeTrade(); partner.getChr().setTrade(null); - c.setTrade(null); + chr.setTrade(null); } } @@ -424,9 +424,9 @@ public class MapleTrade { trade.cancelHandshake(result.getValue()); } - public static void startTrade(MapleCharacter c) { - if (c.getTrade() == null) { - c.setTrade(new MapleTrade((byte) 0, c)); + public static void startTrade(MapleCharacter chr) { + if (chr.getTrade() == null) { + chr.setTrade(new MapleTrade((byte) 0, chr)); } } @@ -496,13 +496,13 @@ public class MapleTrade { } } - public static void declineTrade(MapleCharacter c) { - MapleTrade trade = c.getTrade(); + public static void declineTrade(MapleCharacter chr) { + MapleTrade trade = chr.getTrade(); if (trade != null) { if (trade.getPartner() != null) { MapleCharacter other = trade.getPartner().getChr(); - if (MapleInviteCoordinator.answerInvite(InviteType.TRADE, c.getId(), other.getId(), false).result == InviteResult.DENIED) { - other.message(c.getName() + " has declined your trade request."); + if (MapleInviteCoordinator.answerInvite(InviteType.TRADE, chr.getId(), other.getId(), false).result == InviteResult.DENIED) { + other.message(chr.getName() + " has declined your trade request."); } other.getTrade().cancel(TradeResult.PARTNER_CANCEL.getValue()); @@ -510,7 +510,7 @@ public class MapleTrade { } trade.cancel(TradeResult.NO_RESPONSE.getValue()); - c.setTrade(null); + chr.setTrade(null); } } diff --git a/src/server/life/MapleLifeFactory.java b/src/server/life/MapleLifeFactory.java index b691581503..50202629e9 100644 --- a/src/server/life/MapleLifeFactory.java +++ b/src/server/life/MapleLifeFactory.java @@ -25,9 +25,11 @@ import java.awt.Point; import java.io.File; import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.Set; import provider.MapleData; import provider.MapleDataProvider; import provider.MapleDataProviderFactory; @@ -43,7 +45,19 @@ public class MapleLifeFactory { private static MapleData mobStringData = stringDataWZ.getData("Mob.img"); private static MapleData npcStringData = stringDataWZ.getData("Npc.img"); private static Map monsterStats = new HashMap<>(); + private static Set hpbarBosses = getHpBarBosses(); + private static Set getHpBarBosses() { + Set ret = new HashSet<>(); + + MapleDataProvider uiDataWZ = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/UI.wz")); + for (MapleData bossData : uiDataWZ.getData("UIWindow.img").getChildByPath("MobGage/Mob").getChildren()) { + ret.add(Integer.valueOf(bossData.getName())); + } + + return ret; + } + public static AbstractLoadedMapleLife getLife(int id, String type) { if (type.equalsIgnoreCase("n")) { return getNPC(id); @@ -150,9 +164,11 @@ public class MapleLifeFactory { stats.setFirstAttack(firstAttack > 0); stats.setDropPeriod(MapleDataTool.getIntConvert("dropItemPeriod", monsterInfoData, stats.getDropPeriod() / 10000) * 10000); - stats.setTagColor(MapleDataTool.getIntConvert("hpTagColor", monsterInfoData, 0)); - stats.setTagBgColor(MapleDataTool.getIntConvert("hpTagBgcolor", monsterInfoData, 0)); - + if (!(stats.isBoss() && !hpbarBosses.contains(mid))) { // thanks Riizade, Z1peR, Anesthetic for noticing some bosses crashing players due to missing requirements + stats.setTagColor(MapleDataTool.getIntConvert("hpTagColor", monsterInfoData, 0)); + stats.setTagBgColor(MapleDataTool.getIntConvert("hpTagBgcolor", monsterInfoData, 0)); + } + for (MapleData idata : monsterData) { if (!idata.getName().equals("info")) { int delay = 0; diff --git a/src/server/life/MapleMonster.java b/src/server/life/MapleMonster.java index 931ee5a0f2..6cb8132a86 100644 --- a/src/server/life/MapleMonster.java +++ b/src/server/life/MapleMonster.java @@ -743,7 +743,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { attacker.gainExp(_personalExp, _partyExp, true, false, white); attacker.increaseEquipExp(_personalExp); - attacker.updateQuestMobCount(getId()); + attacker.raiseQuestMobCount(getId()); } } @@ -873,7 +873,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { }, delay, delay); } - private void dispatchUpdateQuestMobCount() { + private void dispatchRaiseQuestMobCount() { Set attackerChrids = takenDamage.keySet(); if(!attackerChrids.isEmpty()) { Map mapChars = map.getMapPlayers(); @@ -884,7 +884,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { MapleCharacter chr = mapChars.get(chrid); if(chr != null && chr.isLoggedinWorld()) { - chr.updateQuestMobCount(mobid); + chr.raiseQuestMobCount(mobid); } } } @@ -906,7 +906,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { private synchronized void processMonsterKilled(boolean hasKiller) { if(!hasKiller) { // players won't gain EXP from a mob that has no killer, but a quest count they should - dispatchUpdateQuestMobCount(); + dispatchRaiseQuestMobCount(); } this.aggroClearDamages(); diff --git a/src/server/maps/MapleMap.java b/src/server/maps/MapleMap.java index 5c6f6ffbb6..efb6f96c54 100644 --- a/src/server/maps/MapleMap.java +++ b/src/server/maps/MapleMap.java @@ -3261,9 +3261,9 @@ public class MapleMap { public MapleCharacter getCharacterById(int id) { chrRLock.lock(); try { - for (MapleCharacter c : this.characters) { - if (c.getId() == id) { - return c; + for (MapleCharacter chr : this.characters) { + if (chr.getId() == id) { + return chr; } } } finally { @@ -3421,8 +3421,8 @@ public class MapleMap { public void broadcastNightEffect() { chrRLock.lock(); try { - for (MapleCharacter c : characters) { - sendNightEffect(c); + for (MapleCharacter chr : this.characters) { + sendNightEffect(chr); } } finally { chrRLock.unlock(); @@ -3432,9 +3432,9 @@ public class MapleMap { public MapleCharacter getCharacterByName(String name) { chrRLock.lock(); try { - for (MapleCharacter c : this.characters) { - if (c.getName().toLowerCase().equals(name.toLowerCase())) { - return c; + for (MapleCharacter chr : this.characters) { + if (chr.getName().toLowerCase().equals(name.toLowerCase())) { + return chr; } } } finally { diff --git a/src/server/maps/MapleMiniGame.java b/src/server/maps/MapleMiniGame.java index b0fd6c843b..30b7066fe2 100644 --- a/src/server/maps/MapleMiniGame.java +++ b/src/server/maps/MapleMiniGame.java @@ -89,8 +89,8 @@ public class MapleMiniGame extends AbstractMapleMapObject { return visitor == null; } - public boolean isOwner(MapleCharacter c) { - return owner.equals(c); + public boolean isOwner(MapleCharacter chr) { + return owner.equals(chr); } public void addVisitor(MapleCharacter challenger) { diff --git a/src/server/maps/MaplePlayerShop.java b/src/server/maps/MaplePlayerShop.java index ed3ba67bc7..c895ae998a 100644 --- a/src/server/maps/MaplePlayerShop.java +++ b/src/server/maps/MaplePlayerShop.java @@ -120,8 +120,8 @@ public class MaplePlayerShop extends AbstractMapleMapObject { } } - public boolean isOwner(MapleCharacter c) { - return owner.equals(c); + public boolean isOwner(MapleCharacter chr) { + return owner.equals(chr); } private void addVisitor(MapleCharacter visitor) { diff --git a/src/server/quest/MapleQuest.java b/src/server/quest/MapleQuest.java index 9760847427..a33167d190 100644 --- a/src/server/quest/MapleQuest.java +++ b/src/server/quest/MapleQuest.java @@ -28,11 +28,12 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; import client.MapleCharacter; -import client.MapleCharacter.DelayedQuestUpdate; import client.MapleQuestStatus; import client.MapleQuestStatus.Status; import config.YamlConfig; +import java.util.Collection; import java.util.EnumMap; +import java.util.Map.Entry; import java.util.Set; import provider.MapleData; import provider.MapleDataProvider; @@ -51,6 +52,7 @@ import tools.StringUtil; public class MapleQuest { private static Map quests = new HashMap<>(); + private static Map infoNumberQuests = new HashMap<>(); private static Map medals = new HashMap<>(); private static final Set exploitableQuests = new HashSet<>(); @@ -61,9 +63,8 @@ public class MapleQuest { exploitableQuests.add((short) 21752); } - protected short infoNumber, id; + protected short id; protected int timeLimit, timeLimit2; - protected String infoex; protected Map startReqs = new EnumMap<>(MapleQuestRequirementType.class); protected Map completeReqs = new EnumMap<>(MapleQuestRequirementType.class); protected Map startActs = new EnumMap<>(MapleQuestActionType.class); @@ -111,8 +112,6 @@ public class MapleQuest { MapleQuestRequirementType type = MapleQuestRequirementType.getByWZName(startReq.getName()); if (type.equals(MapleQuestRequirementType.INTERVAL)) { repeatable = true; - } else if (type.equals(MapleQuestRequirementType.INFO_NUMBER)) { - infoNumber = (short) MapleDataTool.getInt(startReq, 0); } else if (type.equals(MapleQuestRequirementType.MOB)) { for (MapleData mob : startReq.getChildren()) { relevantMobs.add(MapleDataTool.getInt(mob.getChildByPath("id"))); @@ -120,8 +119,9 @@ public class MapleQuest { } MapleQuestRequirement req = this.getRequirement(type, startReq); - if(req == null) - continue; + if (req == null) { + continue; + } startReqs.put(type, req); } @@ -131,14 +131,13 @@ public class MapleQuest { if (completeReqData != null) { for (MapleData completeReq : completeReqData.getChildren()) { MapleQuestRequirementType type = MapleQuestRequirementType.getByWZName(completeReq.getName()); - MapleQuestRequirement req = this.getRequirement(type, completeReq); - if(req == null) - continue; + MapleQuestRequirement req = this.getRequirement(type, completeReq); + if (req == null) { + continue; + } - if (type.equals(MapleQuestRequirementType.INFO_NUMBER)) { - infoNumber = (short) MapleDataTool.getInt(completeReq, 0); - } else if (type.equals(MapleQuestRequirementType.MOB)) { + if (type.equals(MapleQuestRequirementType.MOB)) { for (MapleData mob : completeReq.getChildren()) { relevantMobs.add(MapleDataTool.getInt(mob.getChildByPath("id"))); } @@ -193,35 +192,13 @@ public class MapleQuest { return ret; } - private String getIntervalTimeLeft(MapleCharacter c, IntervalRequirement r) { - StringBuilder str = new StringBuilder(); - - long futureTime = c.getQuest(MapleQuest.getInstance(getId())).getCompletionTime() + r.getInterval(); - long leftTime = futureTime - System.currentTimeMillis(); - - byte mode = 0; - if(leftTime / (60*1000) > 0) { - mode++; //counts minutes - - if(leftTime / (60*60*1000) > 0) - mode++; //counts hours + public static MapleQuest getInstanceFromInfoNumber(int infoNumber) { + Integer id = infoNumberQuests.get(infoNumber); + if (id == null) { + id = infoNumber; } - switch(mode) { - case 2: - int hours = (int) ((leftTime / (1000*60*60))); - str.append(hours + " hours, "); - - case 1: - int minutes = (int) ((leftTime / (1000*60)) % 60); - str.append(minutes + " minutes, "); - - default: - int seconds = (int) (leftTime / 1000) % 60 ; - str.append(seconds + " seconds"); - } - - return str.toString(); + return getInstance(id); } public boolean isSameDayRepeatable() { @@ -231,105 +208,129 @@ public class MapleQuest { return ir.getInterval() < YamlConfig.config.server.QUEST_POINT_REPEATABLE_INTERVAL * 60 * 60 * 1000; } - public boolean canStartWithoutRequirements(MapleCharacter c) { - MapleQuestStatus mqs = c.getQuest(this); - return !(mqs.getStatus() != Status.NOT_STARTED && !(mqs.getStatus() == Status.COMPLETED && repeatable)); + public boolean canStartQuestByStatus(MapleCharacter chr) { + MapleQuestStatus mqs = chr.getQuest(this); + return !(!mqs.getStatus().equals(Status.NOT_STARTED) && !(mqs.getStatus().equals(Status.COMPLETED) && repeatable)); } - public boolean canStart(MapleCharacter c, int npcid) { - if (!canStartWithoutRequirements(c)) { + public boolean canQuestByInfoProgress(MapleCharacter chr) { + MapleQuestStatus mqs = chr.getQuest(this); + List ix = mqs.getInfoEx(); + if (!ix.isEmpty()) { + short questid = mqs.getQuestID(); + short infoNumber = mqs.getInfoNumber(); + if (infoNumber <= 0) { + infoNumber = questid; // on default infoNumber mimics questid + } + + int ixSize = ix.size(); + for (int i = 0; i < ixSize; i++) { + String progress = chr.getClient().getAbstractPlayerInteraction().getQuestProgress(infoNumber, i); + String ixProgress = ix.get(i); + + if (!progress.contentEquals(ixProgress)) { + return false; + } + } + } + + return true; + } + + public boolean canStart(MapleCharacter chr, int npcid) { + if (!canStartQuestByStatus(chr)) { return false; } + for (MapleQuestRequirement r : startReqs.values()) { - if (!r.check(c, npcid)) { - if(r.getType().getType() == MapleQuestRequirementType.INTERVAL.getType()) { - c.message("This quest will become available again in approximately " + getIntervalTimeLeft(c, (IntervalRequirement)r) + "."); - } + if (!r.check(chr, npcid)) { return false; } } - return true; - } - - public boolean canComplete(MapleCharacter c, Integer npcid) { - if (!c.getQuest(this).getStatus().equals(Status.STARTED)) { + + if (!canQuestByInfoProgress(chr)) { return false; } - for (MapleQuestRequirement r : completeReqs.values()) { - if (r == null) { - return false; - } else if(!r.check(c, npcid)) { - if(r.getType() == MapleQuestRequirementType.MESO) { // TODO: find a way to tell the client about the new MESO requirement type. - c.dropMessage(5, "You don't have enough mesos to complete this quest."); - } - return false; - } - } + return true; } - public void start(MapleCharacter c, int npc) { - if (autoStart || canStart(c, npc)) { - for (MapleQuestAction a : startActs.values()) { - if (!a.check(c, null)) { // would null be good ? - return; - } - a.run(c, null); - } - forceStart(c, npc); + public boolean canComplete(MapleCharacter chr, Integer npcid) { + MapleQuestStatus mqs = chr.getQuest(this); + if (!mqs.getStatus().equals(Status.STARTED)) { + return false; } + + for (MapleQuestRequirement r : completeReqs.values()) { + if (!r.check(chr, npcid)) { + return false; + } + } + + if (!canQuestByInfoProgress(chr)) { + return false; + } + + return true; } - public void complete(MapleCharacter c, int npc) { - complete(c, npc, null); - } - - public void complete(MapleCharacter c, int npc, Integer selection) { - if (autoPreComplete || canComplete(c, npc)) { - for (MapleQuestAction a : completeActs.values()) { - if (!a.check(c, selection)) { + public void start(MapleCharacter chr, int npc) { + if (autoStart || canStart(chr, npc)) { + Collection acts = startActs.values(); + for (MapleQuestAction a : acts) { + if (!a.check(chr, null)) { // would null be good ? return; } } + for (MapleQuestAction a : acts) { + a.run(chr, null); + } + forceStart(chr, npc); + } + } - forceComplete(c, npc); - for (MapleQuestAction a : completeActs.values()) { - a.run(c, selection); + public void complete(MapleCharacter chr, int npc) { + complete(chr, npc, null); + } + + public void complete(MapleCharacter chr, int npc, Integer selection) { + if (autoPreComplete || canComplete(chr, npc)) { + Collection acts = completeActs.values(); + for (MapleQuestAction a : acts) { + if (!a.check(chr, selection)) { + return; + } + } + forceComplete(chr, npc); + for (MapleQuestAction a : acts) { + a.run(chr, selection); } } } - public void reset(MapleCharacter c) { - c.updateQuest(new MapleQuestStatus(this, MapleQuestStatus.Status.NOT_STARTED)); + public void reset(MapleCharacter chr) { + chr.updateQuestStatus(new MapleQuestStatus(this, MapleQuestStatus.Status.NOT_STARTED)); } - public void forfeit(MapleCharacter c) { - if (!c.getQuest(this).getStatus().equals(Status.STARTED)) { + public void forfeit(MapleCharacter chr) { + if (!chr.getQuest(this).getStatus().equals(Status.STARTED)) { return; } if (timeLimit > 0) { - c.announce(MaplePacketCreator.removeQuestTimeLimit(id)); + chr.announce(MaplePacketCreator.removeQuestTimeLimit(id)); } MapleQuestStatus newStatus = new MapleQuestStatus(this, MapleQuestStatus.Status.NOT_STARTED); - newStatus.setForfeited(c.getQuest(this).getForfeited() + 1); - c.updateQuest(newStatus); + newStatus.setForfeited(chr.getQuest(this).getForfeited() + 1); + chr.updateQuestStatus(newStatus); } - public boolean forceStart(MapleCharacter c, int npc) { + public boolean forceStart(MapleCharacter chr, int npc) { MapleQuestStatus newStatus = new MapleQuestStatus(this, MapleQuestStatus.Status.STARTED, npc); - newStatus.setForfeited(c.getQuest(this).getForfeited()); - newStatus.setCompleted(c.getQuest(this).getCompleted()); - - if (timeLimit > 0) { - newStatus.setExpirationTime(System.currentTimeMillis() + (timeLimit * 1000)); - c.questTimeLimit(this, timeLimit); - } - if (timeLimit2 > 0) { - newStatus.setExpirationTime(System.currentTimeMillis() + timeLimit2); - c.questTimeLimit2(this, newStatus.getExpirationTime()); - } - c.updateQuest(newStatus); + MapleQuestStatus oldStatus = chr.getQuest(this.getId()); + for (Entry e : oldStatus.getProgress().entrySet()) { + newStatus.setProgress(e.getKey(), e.getValue()); + } if(id / 100 == 35 && YamlConfig.config.server.TOT_MOB_QUEST_REQUIREMENT > 0) { int setProg = 999 - Math.min(999, YamlConfig.config.server.TOT_MOB_QUEST_REQUIREMENT); @@ -338,27 +339,40 @@ public class MapleQuest { if(pid >= 8200000 && pid <= 8200012) { String pr = StringUtil.getLeftPaddedStr(Integer.toString(setProg), '0', 3); newStatus.setProgress(pid, pr); - c.announceUpdateQuest(DelayedQuestUpdate.UPDATE, newStatus, false); } } } + newStatus.setForfeited(chr.getQuest(this).getForfeited()); + newStatus.setCompleted(chr.getQuest(this).getCompleted()); + + if (timeLimit > 0) { + newStatus.setExpirationTime(System.currentTimeMillis() + (timeLimit * 1000)); + chr.questTimeLimit(this, timeLimit); + } + if (timeLimit2 > 0) { + newStatus.setExpirationTime(System.currentTimeMillis() + timeLimit2); + chr.questTimeLimit2(this, newStatus.getExpirationTime()); + } + + chr.updateQuestStatus(newStatus); + return true; } - public boolean forceComplete(MapleCharacter c, int npc) { + public boolean forceComplete(MapleCharacter chr, int npc) { if (timeLimit > 0) { - c.announce(MaplePacketCreator.removeQuestTimeLimit(id)); + chr.announce(MaplePacketCreator.removeQuestTimeLimit(id)); } MapleQuestStatus newStatus = new MapleQuestStatus(this, MapleQuestStatus.Status.COMPLETED, npc); - newStatus.setForfeited(c.getQuest(this).getForfeited()); - newStatus.setCompleted(c.getQuest(this).getCompleted()); + newStatus.setForfeited(chr.getQuest(this).getForfeited()); + newStatus.setCompleted(chr.getQuest(this).getCompleted()); newStatus.setCompletionTime(System.currentTimeMillis()); - c.updateQuest(newStatus); + chr.updateQuestStatus(newStatus); - c.announce(MaplePacketCreator.showSpecialEffect(9)); // Quest completion - c.getMap().broadcastMessage(c, MaplePacketCreator.showForeignEffect(c.getId(), 9), false); //use 9 instead of 12 for both + chr.announce(MaplePacketCreator.showSpecialEffect(9)); // Quest completion + chr.getMap().broadcastMessage(chr, MaplePacketCreator.showForeignEffect(chr.getId(), 9), false); //use 9 instead of 12 for both return true; } @@ -390,32 +404,49 @@ public class MapleQuest { public int getMobAmountNeeded(int mid) { MapleQuestRequirement req = completeReqs.get(MapleQuestRequirementType.MOB); - if(req == null) - return 0; - - MobRequirement mreq = (MobRequirement) req; - - return mreq.getRequiredMobCount(mid); + if(req == null) + return 0; + + MobRequirement mreq = (MobRequirement) req; + + return mreq.getRequiredMobCount(mid); } - public short getInfoNumber() { - return infoNumber; + public short getInfoNumber(Status qs) { + boolean checkEnd = qs.equals(Status.STARTED); + Map reqs = !checkEnd ? startReqs : completeReqs; + + MapleQuestRequirement req = reqs.get(MapleQuestRequirementType.INFO_NUMBER); + if (req != null) { + InfoNumberRequirement inReq = (InfoNumberRequirement) req; + return inReq.getInfoNumber(); + } else { + return 0; + } } - public String getInfoEx() { - MapleQuestRequirement req = startReqs.get(MapleQuestRequirementType.INFO_EX); - String ret = ""; - if(req != null) { - InfoExRequirement ireq = (InfoExRequirement) req; - ret = ireq.getFirstInfo(); - } else { // Check complete requirements. - req = completeReqs.get(MapleQuestRequirementType.INFO_EX); - if(req != null) { - InfoExRequirement ireq = (InfoExRequirement) req; - ret = ireq.getFirstInfo(); - } - } - return ret; + public String getInfoEx(Status qs, int index) { + boolean checkEnd = qs.equals(Status.STARTED); + Map reqs = !checkEnd ? startReqs : completeReqs; + try { + MapleQuestRequirement req = reqs.get(MapleQuestRequirementType.INFO_EX); + InfoExRequirement ixReq = (InfoExRequirement) req; + return ixReq.getInfo().get(index); + } catch (Exception e) { + return ""; + } + } + + public List getInfoEx(Status qs) { + boolean checkEnd = qs.equals(Status.STARTED); + Map reqs = !checkEnd ? startReqs : completeReqs; + try { + MapleQuestRequirement req = reqs.get(MapleQuestRequirementType.INFO_EX); + InfoExRequirement ixReq = (InfoExRequirement) req; + return ixReq.getInfo(); + } catch (Exception e) { + return new LinkedList<>(); + } } public int getTimeLimit() { @@ -447,6 +478,9 @@ public class MapleQuest { case FIELD_ENTER: ret = new FieldEnterRequirement(this, data); break; + case INFO_NUMBER: + ret = new InfoNumberRequirement(this, data); + break; case INFO_EX: ret = new InfoExRequirement(this, data); break; @@ -495,7 +529,6 @@ public class MapleQuest { case NORMAL_AUTO_START: case START: case END: - case INFO_NUMBER: break; default: //FilePrinter.printError(FilePrinter.EXCEPTION_CAUGHT, "Unhandled Requirement Type: " + type.toString() + " QuestID: " + this.getId()); @@ -540,6 +573,9 @@ public class MapleQuest { case PETSPEED: ret = new PetSpeedAction(this, data); break; + case INFO: + ret = new InfoAction(this, data); + break; default: //FilePrinter.printError(FilePrinter.EXCEPTION_CAUGHT, "Unhandled Action Type: " + type.toString() + " QuestID: " + this.getId()); break; @@ -548,9 +584,11 @@ public class MapleQuest { } public boolean restoreLostItem(MapleCharacter chr, int itemid) { - ItemAction itemAct = (ItemAction) startActs.get(MapleQuestActionType.ITEM); - if (itemAct != null) { - return itemAct.restoreLostItem(chr, itemid); + if (chr.getQuest(this).equals(MapleQuestStatus.Status.STARTED)) { + ItemAction itemAct = (ItemAction) startActs.get(MapleQuestActionType.ITEM); + if (itemAct != null) { + return itemAct.restoreLostItem(chr, itemid); + } } return false; @@ -561,8 +599,8 @@ public class MapleQuest { return medalid != null ? medalid : -1; } - public int getNpcRequirement(boolean complete) { - Map reqs = !complete ? startReqs : completeReqs; + public int getNpcRequirement(boolean checkEnd) { + Map reqs = !checkEnd ? startReqs : completeReqs; MapleQuestRequirement mqr = reqs.get(MapleQuestRequirementType.NPC); if (mqr != null) { return ((NpcRequirement) mqr).get(); @@ -571,8 +609,8 @@ public class MapleQuest { } } - public boolean hasScriptRequirement(boolean complete) { - Map reqs = !complete ? startReqs : completeReqs; + public boolean hasScriptRequirement(boolean checkEnd) { + Map reqs = !checkEnd ? startReqs : completeReqs; MapleQuestRequirement mqr = reqs.get(MapleQuestRequirementType.SCRIPT); if (mqr != null) { @@ -612,7 +650,20 @@ public class MapleQuest { for(MapleData quest : questInfo.getChildren()) { int questID = Integer.parseInt(quest.getName()); - quests.put(questID, new MapleQuest(questID)); + MapleQuest q = new MapleQuest(questID); + quests.put(questID, q); + + int infoNumber; + + infoNumber = q.getInfoNumber(Status.STARTED); + if (infoNumber > 0) { + infoNumberQuests.put(infoNumber, questID); + } + + infoNumber = q.getInfoNumber(Status.COMPLETED); + if (infoNumber > 0) { + infoNumberQuests.put(infoNumber, questID); + } } } catch (Exception ex) { ex.printStackTrace(); diff --git a/src/server/quest/MapleQuestActionType.java b/src/server/quest/MapleQuestActionType.java index 06721b45bd..f009d0ff21 100644 --- a/src/server/quest/MapleQuestActionType.java +++ b/src/server/quest/MapleQuestActionType.java @@ -26,7 +26,7 @@ package server.quest; * @author Matze */ public enum MapleQuestActionType { - UNDEFINED(-1), EXP(0), ITEM(1), NEXTQUEST(2), MESO(3), QUEST(4), SKILL(5), FAME(6), BUFF(7), PETSKILL(8), YES(9), NO(10), NPC(11), MIN_LEVEL(12), NORMAL_AUTO_START(13), PETTAMENESS(14), PETSPEED(15), ZERO(16); + UNDEFINED(-1), EXP(0), ITEM(1), NEXTQUEST(2), MESO(3), QUEST(4), SKILL(5), FAME(6), BUFF(7), PETSKILL(8), YES(9), NO(10), NPC(11), MIN_LEVEL(12), NORMAL_AUTO_START(13), PETTAMENESS(14), PETSPEED(15), INFO(16), ZERO(16); final byte type; private MapleQuestActionType(int type) { @@ -64,6 +64,8 @@ public enum MapleQuestActionType { return PETTAMENESS; } else if (name.equals("petspeed")) { return PETSPEED; + } else if (name.equals("info")) { + return INFO; } else if (name.equals("0")) { return ZERO; } else { diff --git a/scripts/quest/3345.js b/src/server/quest/actions/InfoAction.java similarity index 52% rename from scripts/quest/3345.js rename to src/server/quest/actions/InfoAction.java index def3916b24..5c5830a18a 100644 --- a/scripts/quest/3345.js +++ b/src/server/quest/actions/InfoAction.java @@ -17,34 +17,38 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ +package server.quest.actions; -var status = -1; +import client.MapleCharacter; +import provider.MapleData; +import provider.MapleDataTool; +import server.quest.MapleQuest; +import server.quest.MapleQuestActionType; -function end(mode, type, selection) { - if (mode == -1) { - qm.dispose(); - } else { - if(mode == 0 && type > 0) { - qm.dispose(); - return; +/** + * + * @author Ronan + */ +public class InfoAction extends MapleQuestAction { + + private String info; + private int questID; + + public InfoAction(MapleQuest quest, MapleData data) { + super(MapleQuestActionType.INFO, quest); + questID = quest.getId(); + processData(data); + } + + @Override + public void processData(MapleData data) { + info = MapleDataTool.getString(data, ""); + } + + + @Override + public void run(MapleCharacter chr, Integer extSelection) { + chr.getAbstractPlayerInteraction().setQuestProgress(questID, info); } - if (mode == 1) - status++; - else - status--; - - if (status == 0) { - if(qm.getQuestProgress(3345, 0) == 4) { - qm.sendNext("So, you have succeeded. With this, Magatia's upfront demise has been averted, well done brave adventurer!"); - qm.forceCompleteQuest(); - - qm.gainExp(20000); - } else { - qm.sendNext("Did you not seal the #rmagic circle beneath Magatia#k yet? It is a matter of great importance, please haste yourself."); - } - } else if (status == 1) { - qm.dispose(); - } - } -} \ No newline at end of file +} diff --git a/src/server/quest/actions/ItemAction.java b/src/server/quest/actions/ItemAction.java index 600fac086b..6d701603bc 100644 --- a/src/server/quest/actions/ItemAction.java +++ b/src/server/quest/actions/ItemAction.java @@ -195,7 +195,7 @@ public class ItemAction extends MapleQuestAction { if(type.equals(MapleInventoryType.EQUIP) && chr.getInventory(MapleInventoryType.EQUIPPED).countById(item.getId()) > quantity) continue; - chr.dropMessage(1, "Please check if you have enough items in your inventory."); + announceInventoryLimit(Collections.singletonList(item.getId()), chr); return false; } else { int idx = type.getType() - 1; // more slots available from the given items! @@ -217,7 +217,7 @@ public class ItemAction extends MapleQuestAction { result = MapleInventoryManipulator.checkSpaceProgressively(c, it.getLeft().getItemId(), it.getLeft().getQuantity(), "", rndUsed.get(idx), false); if(result % 2 == 0) { - chr.dropMessage(1, "Please check if you have enough space in your inventory."); + announceInventoryLimit(Collections.singletonList(it.getLeft().getItemId()), chr); return false; } @@ -231,12 +231,28 @@ public class ItemAction extends MapleQuestAction { } if (!canHold(chr, gainList)) { - chr.dropMessage(1, "Please check if you have enough space in your inventory."); + List gainItemids = new LinkedList<>(); + for (Pair it : gainList) { + gainItemids.add(it.getLeft().getItemId()); + } + + announceInventoryLimit(gainItemids, chr); return false; } return true; } + private void announceInventoryLimit(List itemids, MapleCharacter chr) { + for (Integer id : itemids) { + if (MapleItemInformationProvider.getInstance().isPickupRestricted(id) && chr.haveItemWithId(id, true)) { + chr.dropMessage(1, "Please check if you already have a similar one-of-a-kind item in your inventory."); + return; + } + } + + chr.dropMessage(1, "Please check if you have enough space in your inventory."); + } + private boolean canHold(MapleCharacter chr, List> gainList) { List toAddItemids = new LinkedList<>(); List toAddQuantity = new LinkedList<>(); diff --git a/src/server/quest/actions/MapleQuestAction.java b/src/server/quest/actions/MapleQuestAction.java index c5d70b6545..db361fb120 100644 --- a/src/server/quest/actions/MapleQuestAction.java +++ b/src/server/quest/actions/MapleQuestAction.java @@ -43,10 +43,8 @@ public abstract class MapleQuestAction { public abstract void run(MapleCharacter chr, Integer extSelection); public abstract void processData(MapleData data); - public boolean check(MapleCharacter chr, Integer extSelection) { - MapleQuestStatus status = chr.getQuest(MapleQuest.getInstance(questID)); - return !(status.getStatus() == MapleQuestStatus.Status.NOT_STARTED && status.getForfeited() > 0); + return true; } public MapleQuestActionType getType() { diff --git a/src/server/quest/actions/QuestAction.java b/src/server/quest/actions/QuestAction.java index f132b362d4..3d86b771c8 100644 --- a/src/server/quest/actions/QuestAction.java +++ b/src/server/quest/actions/QuestAction.java @@ -58,7 +58,7 @@ public class QuestAction extends MapleQuestAction { public void run(MapleCharacter chr, Integer extSelection) { for(Integer questID : quests.keySet()) { int stat = quests.get(questID); - chr.updateQuest(new MapleQuestStatus(MapleQuest.getInstance(questID), MapleQuestStatus.Status.getById(stat))); + chr.updateQuestStatus(new MapleQuestStatus(MapleQuest.getInstance(questID), MapleQuestStatus.Status.getById(stat))); } } } diff --git a/src/server/quest/requirements/InfoExRequirement.java b/src/server/quest/requirements/InfoExRequirement.java index 1740f918b7..ec39f0383b 100644 --- a/src/server/quest/requirements/InfoExRequirement.java +++ b/src/server/quest/requirements/InfoExRequirement.java @@ -22,7 +22,6 @@ package server.quest.requirements; import client.MapleCharacter; -import client.MapleQuestStatus; import java.util.ArrayList; import java.util.List; import provider.MapleData; @@ -41,14 +40,14 @@ public class InfoExRequirement extends MapleQuestRequirement { public InfoExRequirement(MapleQuest quest, MapleData data) { super(MapleQuestRequirementType.INFO_EX); - processData(data); questID = quest.getId(); + processData(data); } @Override public void processData(MapleData data) { // Because we have to... - for(MapleData infoEx : data.getChildren()) { + for(MapleData infoEx : data.getChildren()) { MapleData value = infoEx.getChildByPath("value"); infoExpected.add(MapleDataTool.getString(value, "")); } @@ -57,15 +56,10 @@ public class InfoExRequirement extends MapleQuestRequirement { @Override public boolean check(MapleCharacter chr, Integer npcid) { - MapleQuestStatus status = chr.getQuest(MapleQuest.getInstance(questID)); - return infoExpected.contains(status.getInfo()); + return true; } public List getInfo() { return infoExpected; - } - - public String getFirstInfo() { - return !infoExpected.isEmpty() ? infoExpected.get(0) : ""; - } + } } diff --git a/src/server/quest/requirements/InfoNumberRequirement.java b/src/server/quest/requirements/InfoNumberRequirement.java new file mode 100644 index 0000000000..080176c0cf --- /dev/null +++ b/src/server/quest/requirements/InfoNumberRequirement.java @@ -0,0 +1,57 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2018 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.quest.requirements; + +import client.MapleCharacter; +import provider.MapleData; +import provider.MapleDataTool; +import server.quest.MapleQuest; +import server.quest.MapleQuestRequirementType; + +/** + * + * @author Ronan + */ +public class InfoNumberRequirement extends MapleQuestRequirement { + + private short infoNumber; + private int questID; + + public InfoNumberRequirement(MapleQuest quest, MapleData data) { + super(MapleQuestRequirementType.INFO_NUMBER); + questID = quest.getId(); + processData(data); + } + + @Override + public void processData(MapleData data) { + infoNumber = (short) MapleDataTool.getIntConvert(data, 0); + } + + + @Override + public boolean check(MapleCharacter chr, Integer npcid) { + return true; + } + + public short getInfoNumber() { + return infoNumber; + } +} diff --git a/src/server/quest/requirements/IntervalRequirement.java b/src/server/quest/requirements/IntervalRequirement.java index 76d0645a25..e1e127a1ce 100644 --- a/src/server/quest/requirements/IntervalRequirement.java +++ b/src/server/quest/requirements/IntervalRequirement.java @@ -38,8 +38,8 @@ public class IntervalRequirement extends MapleQuestRequirement { public IntervalRequirement(MapleQuest quest, MapleData data) { super(MapleQuestRequirementType.INTERVAL); - processData(data); questID = quest.getId(); + processData(data); } public int getInterval() { @@ -51,11 +51,47 @@ public class IntervalRequirement extends MapleQuestRequirement { interval = MapleDataTool.getInt(data) * 60 * 1000; } + private static String getIntervalTimeLeft(MapleCharacter chr, IntervalRequirement r) { + StringBuilder str = new StringBuilder(); + + long futureTime = chr.getQuest(MapleQuest.getInstance(r.questID)).getCompletionTime() + r.getInterval(); + long leftTime = futureTime - System.currentTimeMillis(); + + byte mode = 0; + if(leftTime / (60*1000) > 0) { + mode++; //counts minutes + + if(leftTime / (60*60*1000) > 0) + mode++; //counts hours + } + + switch(mode) { + case 2: + int hours = (int) ((leftTime / (1000*60*60))); + str.append(hours + " hours, "); + + case 1: + int minutes = (int) ((leftTime / (1000*60)) % 60); + str.append(minutes + " minutes, "); + + default: + int seconds = (int) (leftTime / 1000) % 60 ; + str.append(seconds + " seconds"); + } + + return str.toString(); + } @Override public boolean check(MapleCharacter chr, Integer npcid) { boolean check = !chr.getQuest(MapleQuest.getInstance(questID)).getStatus().equals(MapleQuestStatus.Status.COMPLETED); boolean check2 = chr.getQuest(MapleQuest.getInstance(questID)).getCompletionTime() <= System.currentTimeMillis() - interval; - return check || check2; + + if (check || check2) { + return true; + } else { + chr.message("This quest will become available again in approximately " + getIntervalTimeLeft(chr, this) + "."); + return false; + } } } diff --git a/src/server/quest/requirements/MesoRequirement.java b/src/server/quest/requirements/MesoRequirement.java index 97ee20346f..7ae55d5af5 100644 --- a/src/server/quest/requirements/MesoRequirement.java +++ b/src/server/quest/requirements/MesoRequirement.java @@ -45,6 +45,11 @@ public class MesoRequirement extends MapleQuestRequirement { @Override public boolean check(MapleCharacter chr, Integer npcid) { - return chr.getMeso() >= meso; + if (chr.getMeso() >= meso) { + return true; + } else { + chr.dropMessage(5, "You don't have enough mesos to complete this quest."); + return false; + } } } diff --git a/src/server/quest/requirements/MobRequirement.java b/src/server/quest/requirements/MobRequirement.java index 5e2a8cd3b8..8b13440a4e 100644 --- a/src/server/quest/requirements/MobRequirement.java +++ b/src/server/quest/requirements/MobRequirement.java @@ -42,8 +42,8 @@ public class MobRequirement extends MapleQuestRequirement { public MobRequirement(MapleQuest quest, MapleData data) { super(MapleQuestRequirementType.MOB); - processData(data); questID = quest.getId(); + processData(data); } /** diff --git a/src/server/quest/requirements/QuestRequirement.java b/src/server/quest/requirements/QuestRequirement.java index bb142fc7d7..47bc8457db 100644 --- a/src/server/quest/requirements/QuestRequirement.java +++ b/src/server/quest/requirements/QuestRequirement.java @@ -58,12 +58,12 @@ public class QuestRequirement extends MapleQuestRequirement { public boolean check(MapleCharacter chr, Integer npcid) { for(Integer questID : quests.keySet()) { int stateReq = quests.get(questID); - MapleQuestStatus q = chr.getQuest(MapleQuest.getInstance(questID)); + MapleQuestStatus qs = chr.getQuest(MapleQuest.getInstance(questID)); - if(q == null && MapleQuestStatus.Status.getById(stateReq).equals(MapleQuestStatus.Status.NOT_STARTED)) + if(qs == null && MapleQuestStatus.Status.getById(stateReq).equals(MapleQuestStatus.Status.NOT_STARTED)) continue; - if(q == null || !q.getStatus().equals(MapleQuestStatus.Status.getById(stateReq))) { + if(qs == null || !qs.getStatus().equals(MapleQuestStatus.Status.getById(stateReq))) { return false; } diff --git a/src/tools/MaplePacketCreator.java b/src/tools/MaplePacketCreator.java index a91e7db1b8..bad5a79881 100644 --- a/src/tools/MaplePacketCreator.java +++ b/src/tools/MaplePacketCreator.java @@ -66,6 +66,7 @@ import config.YamlConfig; import constants.game.ExpTable; import constants.game.GameConstants; import constants.inventory.ItemConstants; +import constants.net.ServerConstants; import constants.skills.Buccaneer; import constants.skills.Corsair; import constants.skills.ThunderBreaker; @@ -351,20 +352,31 @@ public class MaplePacketCreator { } private static void addQuestInfo(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr) { - mplew.writeShort(chr.getStartedQuestsSize()); - for (MapleQuestStatus q : chr.getStartedQuests()) { - mplew.writeShort(q.getQuest().getId()); - mplew.writeMapleAsciiString(q.getQuestData()); - if (q.getQuest().getInfoNumber() > 0) { - mplew.writeShort(q.getQuest().getInfoNumber()); - mplew.writeMapleAsciiString(q.getQuestData()); + List started = chr.getStartedQuests(); + int startedSize = 0; + for (MapleQuestStatus qs : started) { + if (qs.getInfoNumber() > 0) { + startedSize++; + } + startedSize++; + } + mplew.writeShort(startedSize); + for (MapleQuestStatus qs : started) { + mplew.writeShort(qs.getQuest().getId()); + mplew.writeMapleAsciiString(qs.getProgressData()); + + short infoNumber = qs.getInfoNumber(); + if (infoNumber > 0) { + MapleQuestStatus iqs = chr.getQuest(infoNumber); + mplew.writeShort(infoNumber); + mplew.writeMapleAsciiString(iqs.getProgressData()); } } List completed = chr.getCompletedQuests(); mplew.writeShort(completed.size()); - for (MapleQuestStatus q : completed) { - mplew.writeShort(q.getQuest().getId()); - mplew.writeLong(getTime(q.getCompletionTime())); + for (MapleQuestStatus qs : completed) { + mplew.writeShort(qs.getQuest().getId()); + mplew.writeLong(getTime(qs.getCompletionTime())); } } @@ -2839,9 +2851,9 @@ public class MaplePacketCreator { } ArrayList medalQuests = new ArrayList<>(); List completed = chr.getCompletedQuests(); - for (MapleQuestStatus q : completed) { - if (q.getQuest().getId() >= 29000) { // && q.getQuest().getId() <= 29923 - medalQuests.add(q.getQuest().getId()); + for (MapleQuestStatus qs : completed) { + if (qs.getQuest().getId() >= 29000) { // && q.getQuest().getId() <= 29923 + medalQuests.add(qs.getQuest().getId()); } } @@ -2989,18 +3001,20 @@ public class MaplePacketCreator { return mplew.getPacket(); } - public static byte[] updateQuest(MapleQuestStatus q, boolean infoUpdate) { + public static byte[] updateQuest(MapleCharacter chr, MapleQuestStatus qs, boolean infoUpdate) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); mplew.write(1); - mplew.writeShort(infoUpdate ? q.getQuest().getInfoNumber() : q.getQuest().getId()); if (infoUpdate) { + MapleQuestStatus iqs = chr.getQuest(qs.getInfoNumber()); + mplew.writeShort(iqs.getQuestID()); mplew.write(1); + mplew.writeMapleAsciiString(iqs.getProgressData()); } else { - mplew.write(q.getStatus().getId()); + mplew.writeShort(qs.getQuest().getId()); + mplew.write(qs.getStatus().getId()); + mplew.writeMapleAsciiString(qs.getProgressData()); } - - mplew.writeMapleAsciiString(q.getQuestData()); mplew.skip(5); return mplew.getPacket(); } @@ -3194,23 +3208,23 @@ public class MaplePacketCreator { return mplew.getPacket(); } - public static byte[] getPlayerShopChat(MapleCharacter c, String chat, boolean owner) { + public static byte[] getPlayerShopChat(MapleCharacter chr, String chat, boolean owner) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); mplew.write(PlayerInteractionHandler.Action.CHAT.getCode()); mplew.write(PlayerInteractionHandler.Action.CHAT_THING.getCode()); mplew.write(owner ? 0 : 1); - mplew.writeMapleAsciiString(c.getName() + " : " + chat); + mplew.writeMapleAsciiString(chr.getName() + " : " + chat); return mplew.getPacket(); } - public static byte[] getPlayerShopNewVisitor(MapleCharacter c, int slot) { + public static byte[] getPlayerShopNewVisitor(MapleCharacter chr, int slot) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); mplew.write(PlayerInteractionHandler.Action.VISIT.getCode()); mplew.write(slot); - addCharLook(mplew, c, false); - mplew.writeMapleAsciiString(c.getName()); + addCharLook(mplew, chr, false); + mplew.writeMapleAsciiString(chr.getName()); return mplew.getPacket(); } @@ -3224,22 +3238,22 @@ public class MaplePacketCreator { return mplew.getPacket(); } - public static byte[] getTradePartnerAdd(MapleCharacter c) { + public static byte[] getTradePartnerAdd(MapleCharacter chr) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); mplew.write(PlayerInteractionHandler.Action.VISIT.getCode()); mplew.write(1); - addCharLook(mplew, c, false); - mplew.writeMapleAsciiString(c.getName()); + addCharLook(mplew, chr, false); + mplew.writeMapleAsciiString(chr.getName()); return mplew.getPacket(); } - public static byte[] tradeInvite(MapleCharacter c) { + public static byte[] tradeInvite(MapleCharacter chr) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); mplew.write(PlayerInteractionHandler.Action.INVITE.getCode()); mplew.write(3); - mplew.writeMapleAsciiString(c.getName()); + mplew.writeMapleAsciiString(chr.getName()); mplew.write(new byte[]{(byte) 0xB7, (byte) 0x50, 0, 0}); return mplew.getPacket(); } @@ -4439,15 +4453,15 @@ public class MaplePacketCreator { return mplew.getPacket(); } - public static byte[] showGuildInfo(MapleCharacter c) { + public static byte[] showGuildInfo(MapleCharacter chr) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); mplew.write(0x1A); //signature for showing guild info - if (c == null) { //show empty guild (used for leaving, expelled) + if (chr == null) { //show empty guild (used for leaving, expelled) mplew.write(0); return mplew.getPacket(); } - MapleGuild g = c.getClient().getWorldServer().getGuild(c.getMGC()); + MapleGuild g = chr.getClient().getWorldServer().getGuild(chr.getMGC()); if (g == null) { //failed to read from DB - don't show a guild mplew.write(0); return mplew.getPacket(); @@ -5292,17 +5306,17 @@ public class MaplePacketCreator { return mplew.getPacket(); } - public static byte[] getMiniGameNewVisitor(MapleMiniGame minigame, MapleCharacter c, int slot) { + public static byte[] getMiniGameNewVisitor(MapleMiniGame minigame, MapleCharacter chr, int slot) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); mplew.write(PlayerInteractionHandler.Action.VISIT.getCode()); mplew.write(slot); - addCharLook(mplew, c, false); - mplew.writeMapleAsciiString(c.getName()); + addCharLook(mplew, chr, false); + mplew.writeMapleAsciiString(chr.getName()); mplew.writeInt(1); - mplew.writeInt(c.getMiniGamePoints(MiniGameResult.WIN, true)); - mplew.writeInt(c.getMiniGamePoints(MiniGameResult.TIE, true)); - mplew.writeInt(c.getMiniGamePoints(MiniGameResult.LOSS, true)); + mplew.writeInt(chr.getMiniGamePoints(MiniGameResult.WIN, true)); + mplew.writeInt(chr.getMiniGamePoints(MiniGameResult.TIE, true)); + mplew.writeInt(chr.getMiniGamePoints(MiniGameResult.LOSS, true)); mplew.writeInt(minigame.getVisitorScore()); return mplew.getPacket(); } @@ -5447,17 +5461,17 @@ public class MaplePacketCreator { return mplew.getPacket(); } - public static byte[] getMatchCardNewVisitor(MapleMiniGame minigame, MapleCharacter c, int slot) { + public static byte[] getMatchCardNewVisitor(MapleMiniGame minigame, MapleCharacter chr, int slot) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); mplew.write(PlayerInteractionHandler.Action.VISIT.getCode()); mplew.write(slot); - addCharLook(mplew, c, false); - mplew.writeMapleAsciiString(c.getName()); + addCharLook(mplew, chr, false); + mplew.writeMapleAsciiString(chr.getName()); mplew.writeInt(1); - mplew.writeInt(c.getMiniGamePoints(MiniGameResult.WIN, false)); - mplew.writeInt(c.getMiniGamePoints(MiniGameResult.TIE, false)); - mplew.writeInt(c.getMiniGamePoints(MiniGameResult.LOSS, false)); + mplew.writeInt(chr.getMiniGamePoints(MiniGameResult.WIN, false)); + mplew.writeInt(chr.getMiniGamePoints(MiniGameResult.TIE, false)); + mplew.writeInt(chr.getMiniGamePoints(MiniGameResult.LOSS, false)); mplew.writeInt(minigame.getVisitorScore()); return mplew.getPacket(); } @@ -5559,19 +5573,19 @@ public class MaplePacketCreator { return mplew.getPacket(); } - public static byte[] addOmokBox(MapleCharacter c, int ammount, int type) { + public static byte[] addOmokBox(MapleCharacter chr, int ammount, int type) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.UPDATE_CHAR_BOX.getValue()); - mplew.writeInt(c.getId()); - addAnnounceBox(mplew, c.getMiniGame(), ammount, type); + mplew.writeInt(chr.getId()); + addAnnounceBox(mplew, chr.getMiniGame(), ammount, type); return mplew.getPacket(); } - public static byte[] addMatchCardBox(MapleCharacter c, int ammount, int type) { + public static byte[] addMatchCardBox(MapleCharacter chr, int ammount, int type) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.UPDATE_CHAR_BOX.getValue()); - mplew.writeInt(c.getId()); - addAnnounceBox(mplew, c.getMiniGame(), ammount, type); + mplew.writeInt(chr.getId()); + addAnnounceBox(mplew, chr.getMiniGame(), ammount, type); return mplew.getPacket(); } @@ -5583,23 +5597,23 @@ public class MaplePacketCreator { return mplew.getPacket(); } - public static byte[] getPlayerShopChat(MapleCharacter c, String chat, byte slot) { + public static byte[] getPlayerShopChat(MapleCharacter chr, String chat, byte slot) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); mplew.write(PlayerInteractionHandler.Action.CHAT.getCode()); mplew.write(PlayerInteractionHandler.Action.CHAT_THING.getCode()); mplew.write(slot); - mplew.writeMapleAsciiString(c.getName() + " : " + chat); + mplew.writeMapleAsciiString(chr.getName() + " : " + chat); return mplew.getPacket(); } - public static byte[] getTradeChat(MapleCharacter c, String chat, boolean owner) { + public static byte[] getTradeChat(MapleCharacter chr, String chat, boolean owner) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); mplew.write(PlayerInteractionHandler.Action.CHAT.getCode()); mplew.write(PlayerInteractionHandler.Action.CHAT_THING.getCode()); mplew.write(owner ? 0 : 1); - mplew.writeMapleAsciiString(c.getName() + " : " + chat); + mplew.writeMapleAsciiString(chr.getName() + " : " + chat); return mplew.getPacket(); } diff --git a/scripts/quest/21728.js b/src/tools/exceptions/EmptyMovementException.java similarity index 53% rename from scripts/quest/21728.js rename to src/tools/exceptions/EmptyMovementException.java index 59ef6d5e4d..4e45381c71 100644 --- a/scripts/quest/21728.js +++ b/src/tools/exceptions/EmptyMovementException.java @@ -17,33 +17,19 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ +package tools.exceptions; -var status = -1; +import tools.data.input.LittleEndianAccessor; -function end(mode, type, selection) { - if (mode == -1) { - qm.dispose(); - } else { - if(mode == 0 && type > 0) { - qm.dispose(); - return; - } - - if (mode == 1) - status++; - else - status--; - - if (status == 0) { - if(qm.getQuestProgress(21728, 0) == 0) { - qm.sendNext("You haven't found the #rPuppeteer's cave#k yet, did you?"); - } else { - qm.sendNext("Hm, so the entrance is blocked by a powerful force? I see, gimme a time to think now..."); - qm.gainExp(200); - qm.forceCompleteQuest(); - } - } else if (status == 1) { - qm.dispose(); - } + +/** + * + * @author Ronan + */ +public class EmptyMovementException extends Exception { + + public EmptyMovementException(LittleEndianAccessor lea) { + super("Empty movement: " + lea); } -} \ No newline at end of file + +} diff --git a/tools/ScriptQuestReleaseTracker/hashset.c b/tools/ScriptQuestReleaseTracker/hashset.c new file mode 100644 index 0000000000..71300f69f2 --- /dev/null +++ b/tools/ScriptQuestReleaseTracker/hashset.c @@ -0,0 +1,238 @@ +#include +#include +#include + +//NOTE: should the HASH_MAXITEM or HASH_NUMBUCK value be too small, program will crash by SIG_SEGV +#define HASH_MAXITEM 4000 +#define HASH_NUMBUCK 1340 +#define HASH_HIVALUE 2147483647 //32-BIT integer + +#define HASH_REHTHRE 3.5 +#define HASH_REHRATE 5 + +typedef struct { + int list[HASH_MAXITEM]; + int first; + + unsigned int count; +} HastSetIndex; + +typedef struct { + HastSetIndex **table; + int *list; + + unsigned int threshold; + unsigned int length; + unsigned int count; +} HashSet; + +void hashset_create_table(HashSet *hs) { + hs->table = (HastSetIndex **)malloc(hs->length * sizeof(HastSetIndex *)); + hs->threshold = (unsigned int)(HASH_REHTHRE * hs->length); + + unsigned int i; + for(i = 0; i < hs->length; i++) { + hs->table[i] = (HastSetIndex *)malloc(sizeof(HastSetIndex)); + hs->table[i]->count = 0; + hs->table[i]->first = HASH_HIVALUE; + } +} + +HashSet* hashset_create() { + HashSet *hs = (HashSet *)malloc(sizeof(HashSet)); + hs->count = 0; + hs->length = HASH_NUMBUCK; + hs->list = NULL; + + hashset_create_table(hs); + return(hs); +} + +void hashset_destroy(HashSet *hs) { + if(hs->list != NULL) { + free(hs->list); + } + + unsigned int i; + for(i = 0; i < hs->length; i++) + free(hs->table[i]); + + free(hs->table); + free(hs); +} + +unsigned int hashset_maptable(HashSet *hs, int item) { + return(item % hs->length); +} + +unsigned int hashset_slot(HashSet *hs, int item, unsigned int *bucket) { + *bucket = hashset_maptable(hs, item); + + unsigned int i; + for(i = 0; i < hs->table[*bucket]->count; i++) { + if(hs->table[*bucket]->list[i] == item) + return(i); + } + + return(-1); +} + +short hashset_contains(HashSet *hs, int item, unsigned int *bucket) { + return(hashset_slot(hs, item, bucket) != -1); +} + +short hashset_insertinto(HashSet *hs, int item) { + unsigned int bucket; + + if(!hashset_contains(hs, item, &bucket)) { + if(hs->table[bucket]->first > item) + hs->table[bucket]->first = item; + + hs->table[bucket]->list[hs->table[bucket]->count] = item; + + (hs->count)++; + (hs->table[bucket]->count)++; + if(hs->table[bucket]->count > hs->threshold) return(1); + } + + return(0); +} + +void hashset_rehash(HashSet *hs) { + int *temp = (int *)malloc(hs->count * sizeof(int)); + unsigned int temp_cursor = 0, i, j; + + for(i = 0; i < hs->length; i++) { + for(j = 0; j < hs->table[i]->count; j++) { + temp[temp_cursor] = hs->table[i]->list[j]; + temp_cursor++; + } + } + + for(i = 0; i < hs->length; i++) + free(hs->table[i]); + free(hs->table); + + hs->count = 0; + hs->length *= HASH_REHRATE; + hashset_create_table(hs); + + for(i = 0; i < temp_cursor; i++) + hashset_insertinto(hs, temp[i]); + + free(temp); +} + +void hashset_insert(HashSet *hs, int item) { + if(hashset_insertinto(hs, item)) { + hashset_rehash(hs); + } +} + +int hashset_recalc_first(HashSet *hs, int bucket) { + int i, val = HASH_HIVALUE; + for(i = 0; i < hs->table[bucket]->count; i++) { + if(val > hs->table[bucket]->list[i]) + val = hs->table[bucket]->list[i]; + } + + return(val); +} + +void hashset_remove(HashSet *hs, int item) { + unsigned int bucket; + unsigned int slot = hashset_slot(hs, item, &bucket); + + if(slot != -1) { + (hs->count)--; + (hs->table[bucket]->count)--; + hs->table[bucket]->list[slot] = hs->table[bucket]->list[hs->table[bucket]->count]; + + if(item == hs->table[bucket]->first) + hs->table[bucket]->first = hashset_recalc_first(hs, bucket); + } +} + +short hashset_is_empty(HashSet *hs) { + return(hs->count == 0); +} + +void hashset_make_empty(HashSet *hs) { + unsigned int i; + for(i = 0; i < hs->length; i++) { + hs->table[i]->first = HASH_HIVALUE; + hs->table[i]->count = 0; + } + + hs->count = 0; +} + +int hashset_remove_first(HashSet *hs) { + int i, take = HASH_HIVALUE; + for(i = 0; i < hs->length; i++) { + if(take > hs->table[i]->first) + take = hs->table[i]->first; + } + + hashset_remove(hs, take); + return(take); +} + +void hashset_merge(HashSet *hs1, HashSet *hs2) { + //add values from hs2 to hs1 + + unsigned int i, j; + for(i = 0; i < hs2->length; i++) { + for(j = 0; j < hs2->table[i]->count; j++) { + hashset_insert(hs1, hs2->table[i]->list[j]); + } + } +} + +void hashset_dump(HashSet *hs) { + printf("HASHSET v1.0 -- count: %d, buckets: %d, threshold: %d\n", hs->count, hs->length, hs->threshold); + + unsigned int i, j; + for(i = 0; i < hs->length; i++) { + printf("\n%d -> ", i); + for(j = 0; j < hs->table[i]->count; j++) { + printf("%d ", hs->table[i]->list[j]); + } + printf("$"); + } + printf("\n"); +} + +int* hashset_list(HashSet *hs) { + int *list = hs->list; + if(list != NULL) { + free(list); + } + + list = (int *)malloc(hs->count * sizeof(int)); + + unsigned int i, j, k = 0; + for(i = 0; i < hs->length; i++) { + for(j = 0; j < hs->table[i]->count; j++) { + list[k] = hs->table[i]->list[j]; + k++; + } + } + + return list; +} + +/* + HASHSET: + + HashSet* hashset_create(); + void hashset_destroy(HashSet *hs); + short hashset_contains(HashSet *hs, int item, unsigned int *bucket); + void hashset_insert(HashSet *hs, int item); + void hashset_remove(HashSet *hs, int item); + short hashset_is_empty(HashSet *hs); + void hashset_make_empty(HashSet *hs); + int hashset_remove_first(HashSet *hs); + void hashset_merge(HashSet *hs1, HashSet *hs2); + void hashset_dump(HashSet *hs); +*/ diff --git a/tools/ScriptQuestReleaseTracker/pcre3.dll b/tools/ScriptQuestReleaseTracker/pcre3.dll new file mode 100644 index 0000000000000000000000000000000000000000..b5fd2a63785922c9898e7d25d9c50ef47524ba13 GIT binary patch literal 140288 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 literal 0 HcmV?d00001 diff --git a/tools/ScriptQuestReleaseTracker/quest_diff.c b/tools/ScriptQuestReleaseTracker/quest_diff.c new file mode 100644 index 0000000000..6e842924ea --- /dev/null +++ b/tools/ScriptQuestReleaseTracker/quest_diff.c @@ -0,0 +1,85 @@ +#include + +// string hash version by chqrlie - https://stackoverflow.com/questions/20462826/hash-function-for-strings-in-c +unsigned int strhash(const char *word) { + unsigned int hash = 0, c; + + size_t i = 0; + for (i = 0; word[i] != '\0'; i++) { + c = (unsigned char)word[i]; + hash = (hash << 3) + (hash >> (sizeof(hash) * CHAR_BIT - 3)) + c; + } + return hash % UINT_MAX; +} + +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2019 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +#include "strmap.h" +#include "hashset.c" + +void performQuestDiff(ScriptedQuestList *quests_then, ScriptedQuestList *quests_curr) { + char buf[100], bufhash[100]; + HashSet *script_quests = hashset_create(); + + // bookkeep quest-script hash + StrMap *sm = sm_new(2000); + + // insert ongoing scripts + resetScriptedQuestCursor(quests_curr); + while(true) { + ScriptedQuest *method = readScriptedQuest(quests_curr); + if (method == NULL) { + break; + } + + int hash_quest = strhash(method->name); + sprintf(bufhash, "%d", hash_quest); + + sm_put(sm, bufhash, method->name); + hashset_insert(script_quests, hash_quest); + } + + // remove initial scripts + resetScriptedQuestCursor(quests_then); + while(true) { + ScriptedQuest *method = readScriptedQuest(quests_then); + if (method == NULL) { + break; + } + + int hash_quest = strhash(method->name); + hashset_remove(script_quests, hash_quest); + } + + int *list = hashset_list(script_quests); + int i; + for (i = 0; i < script_quests->count; i++) { + int hash_quest = list[i]; + sprintf(bufhash, "%d", hash_quest); + + // dump ongoing script releases + sm_get(sm, bufhash, buf, sizeof(buf)); + printf("%s\n", buf); + } + + sm_delete(sm); + hashset_destroy(script_quests); +} diff --git a/tools/ScriptQuestReleaseTracker/quest_diff.h b/tools/ScriptQuestReleaseTracker/quest_diff.h new file mode 100644 index 0000000000..9911d581cc --- /dev/null +++ b/tools/ScriptQuestReleaseTracker/quest_diff.h @@ -0,0 +1,28 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2019 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +#ifndef QUEST_DIFF_H_ +#define QUEST_DIFF_H_ + +void performQuestDiff(ScriptedQuestList *quests_then, ScriptedQuestList *quests_curr); + +#include "quest_diff.c" + +#endif /* QUEST_DIFF_H_ */ diff --git a/tools/ScriptQuestReleaseTracker/quest_list.c b/tools/ScriptQuestReleaseTracker/quest_list.c new file mode 100644 index 0000000000..758bc64ab5 --- /dev/null +++ b/tools/ScriptQuestReleaseTracker/quest_list.c @@ -0,0 +1,85 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2019 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +ScriptedQuest* createScriptedQuest(const char *name) { + ScriptedQuest* method = (ScriptedQuest *)malloc(sizeof(ScriptedQuest)); + method->name = (char *)malloc((strlen(name) + 1) * sizeof(char)); + strcpy(method->name, name); + return method; +} + +void freeScriptedQuest(ScriptedQuest *method) { + free(method->name); + free(method); +} + +ScriptedQuestList createScriptedQuestList() { + ScriptedQuestList list; + list.size = 0; + + ScriptedQuestListItem *item = (ScriptedQuestListItem *)malloc(sizeof(ScriptedQuestListItem)); + item->prox = NULL; + + list.last = item; + list.first = list.last; + + return list; +} + +void insertScriptedQuest(ScriptedQuestList *list, ScriptedQuest *method) { + ScriptedQuestListItem *item = (ScriptedQuestListItem *)malloc(sizeof(ScriptedQuestListItem)); + item->prox = NULL; + + list->last->method = method; + list->last->prox = item; + + list->last = item; + list->size++; +} + +void freeScriptedQuestList(ScriptedQuestList *list) { + ScriptedQuestListItem *aux = list->first; + + list->first = list->last; + list->size = 0; + + while (aux->prox != NULL) { + ScriptedQuestListItem *aux2 = aux; + aux = aux->prox; + + freeScriptedQuest(aux2->method); + free(aux2); + } + free(aux); +} + +void resetScriptedQuestCursor(ScriptedQuestList *list) { + list->cursor = list->first; +} + +ScriptedQuest* readScriptedQuest(ScriptedQuestList *list) { + ScriptedQuestListItem *aux = list->cursor; + if (aux->prox == NULL) { + return NULL; + } + + list->cursor = aux->prox; + return aux->method; +} diff --git a/tools/ScriptQuestReleaseTracker/quest_list.h b/tools/ScriptQuestReleaseTracker/quest_list.h new file mode 100644 index 0000000000..4d6b91ef3b --- /dev/null +++ b/tools/ScriptQuestReleaseTracker/quest_list.h @@ -0,0 +1,43 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2019 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +#ifndef QUEST_LIST_H_ +#define QUEST_LIST_H_ + +typedef struct { + char *name; +} ScriptedQuest; + +typedef struct ScriptedQuestListItem { + ScriptedQuest *method; + struct ScriptedQuestListItem *prox; +} ScriptedQuestListItem; + +typedef struct { + ScriptedQuestListItem *first; + ScriptedQuestListItem *last; + ScriptedQuestListItem *cursor; + + int size; +} ScriptedQuestList; + +#include "quest_list.c" + +#endif /* QUEST_LIST_H_ */ diff --git a/tools/ScriptQuestReleaseTracker/script_tracker.c b/tools/ScriptQuestReleaseTracker/script_tracker.c new file mode 100644 index 0000000000..4a1bb71fe0 --- /dev/null +++ b/tools/ScriptQuestReleaseTracker/script_tracker.c @@ -0,0 +1,159 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2019 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +#include +#include +#include +#include +#include + +#include "strmap.c" +#include "quest_list.h" +#include "quest_diff.h" + +ScriptedQuestList getBestSubstringsFromStringList(char *aStrRegex, ScriptedQuestList *lines, int lines_size) { + ScriptedQuestList ret = createScriptedQuestList(); + + // ------------ an adaptation from Mitch Richling's https://www.mitchr.me/SS/exampleCode/AUPG/pcre_example.c.html ----------- + + int subStrVec[30]; + int subStrVecLength = 30; + const char *pcreErrorStr; + int pcreErrorOffset; + + pcre *reCompiled = pcre_compile(aStrRegex, 0, &pcreErrorStr, &pcreErrorOffset, NULL); + if(reCompiled == NULL) { + printf("ERROR: Could not compile '%s': %s\n", aStrRegex, pcreErrorStr); + return ret; + } + + pcre_extra *pcreExtra = pcre_study(reCompiled, 0, &pcreErrorStr); + if(pcreErrorStr != NULL) { + printf("ERROR: Could not study '%s': %s\n", aStrRegex, pcreErrorStr); + return ret; + } + + int i; + for (i = 0; i < lines_size; i++) { + ScriptedQuestList list = lines[i]; + + resetScriptedQuestCursor(&list); + while(true) { + ScriptedQuest *method = readScriptedQuest(&list); + if (method == NULL) { + break; + } + + char *str = method->name; + int st = 0, en = strlen(str); + while(st < en) { + int pcreExecRet = pcre_exec(reCompiled, pcreExtra, str, en, st, 0, subStrVec, subStrVecLength); + if(pcreExecRet < 0) { + switch(pcreExecRet) { + //case PCRE_ERROR_NOMATCH : printf("String did not match the pattern\n"); break; + case PCRE_ERROR_NULL : printf("Something was null\n"); break; + case PCRE_ERROR_BADOPTION : printf("A bad option was passed\n"); break; + case PCRE_ERROR_BADMAGIC : printf("Magic number bad (compiled re corrupt?)\n"); break; + case PCRE_ERROR_UNKNOWN_NODE : printf("Something kooky in the compiled re\n"); break; + case PCRE_ERROR_NOMEMORY : printf("Ran out of memory\n"); break; + //default : printf("Unknown error\n"); break; + } + + break; + } else { + if(pcreExecRet == 0) { + printf("But too many substrings were found to fit in subStrVec!\n"); + // Set rc to the max number of substring matches possible. + pcreExecRet = 30 / 3; + } + + const char *psubStrMatchStr; + pcre_get_substring(str, subStrVec, pcreExecRet, 1, &(psubStrMatchStr)); + + insertScriptedQuest(&ret, createScriptedQuest(psubStrMatchStr)); + pcre_free_substring(psubStrMatchStr); + + st = subStrVec[1]; + } + } + } + } + + pcre_free(reCompiled); + + if(pcreExtra != NULL) { + pcre_free(pcreExtra); + } + + return ret; +} + +char *getContentFromFile(FILE *f) { + fseek(f, 0, SEEK_END); // implemented by user529758 @ StackOverflow + long fsize = ftell(f); + fseek(f, 0, SEEK_SET); /* same as rewind(f); */ + + char *string = malloc(fsize + 1); + fread(string, 1, fsize, f); + + string[fsize] = 0; + return string; +} + +ScriptedQuestList readQuestXml(char *file_path) { + ScriptedQuestList *file_content = (ScriptedQuestList *)malloc(sizeof(ScriptedQuestList)); + file_content[0] = createScriptedQuestList(); + + FILE *f = fopen(file_path, "r+t"); + char *content = getContentFromFile(f); + + char *tok = strtok(content, "\n"); + int i = 0; + while (tok != NULL) { + insertScriptedQuest(&(file_content[0]), createScriptedQuest(tok)); + tok = strtok(NULL, "\n"); + i++; + } + + free(content); + fclose(f); + + ScriptedQuestList ret = getBestSubstringsFromStringList("script\" value=\"(.+)\"", file_content, 1); + + freeScriptedQuestList(&file_content[0]); + free(file_content); + + return ret; +} + +void trackScriptQuestReleases() { + ScriptedQuestList quests_then = readQuestXml("Check2.img.xml"); + ScriptedQuestList quests_curr = readQuestXml("Check.img.xml"); + + performQuestDiff(&quests_then, &quests_curr); + + freeScriptedQuestList(&quests_curr); + freeScriptedQuestList(&quests_then); +} + +int main() { + trackScriptQuestReleases(); + return 0; +} diff --git a/tools/ScriptQuestReleaseTracker/strmap.c b/tools/ScriptQuestReleaseTracker/strmap.c new file mode 100644 index 0000000000..6111209abe --- /dev/null +++ b/tools/ScriptQuestReleaseTracker/strmap.c @@ -0,0 +1,515 @@ +/* + * strmap version 2.0.1 + * + * ANSI C hash table for strings. + * + * Version history: + * 1.0.0 - initial release + * 2.0.0 - changed function prefix from strmap to sm to ensure + * ANSI C compatibility + * 2.0.1 - improved documentation + * + * strmap.c + * + * Copyright (c) 2009, 2011, 2013 Per Ola Kristensson. + * + * Per Ola Kristensson + * Inference Group, Department of Physics + * University of Cambridge + * Cavendish Laboratory + * JJ Thomson Avenue + * CB3 0HE Cambridge + * United Kingdom + * + * strmap is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * strmap 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with strmap. If not, see . + */ +#include "strmap.h" + +typedef struct Pair Pair; + +typedef struct Bucket Bucket; + +struct Pair { + char *key; + char *value; +}; + +struct Bucket { + unsigned int count; + Pair *pairs; +}; + +struct StrMap { + unsigned int count; + Bucket *buckets; +}; + +static Pair * get_pair(Bucket *bucket, const char *key); +static unsigned long hash(const char *str); + +StrMap * sm_new(unsigned int capacity) +{ + StrMap *map; + + map = malloc(sizeof(StrMap)); + if (map == NULL) { + return NULL; + } + map->count = capacity; + map->buckets = malloc(map->count * sizeof(Bucket)); + if (map->buckets == NULL) { + free(map); + return NULL; + } + memset(map->buckets, 0, map->count * sizeof(Bucket)); + return map; +} + +void sm_delete(StrMap *map) +{ + unsigned int i, j, n, m; + Bucket *bucket; + Pair *pair; + + if (map == NULL) { + return; + } + n = map->count; + bucket = map->buckets; + i = 0; + while (i < n) { + m = bucket->count; + pair = bucket->pairs; + j = 0; + while(j < m) { + free(pair->key); + free(pair->value); + pair++; + j++; + } + free(bucket->pairs); + bucket++; + i++; + } + free(map->buckets); + free(map); +} + +int sm_get(const StrMap *map, const char *key, char *out_buf, unsigned int n_out_buf) +{ + unsigned int index; + Bucket *bucket; + Pair *pair; + + if (map == NULL) { + return 0; + } + if (key == NULL) { + return 0; + } + index = hash(key) % map->count; + bucket = &(map->buckets[index]); + pair = get_pair(bucket, key); + if (pair == NULL) { + return 0; + } + if (out_buf == NULL && n_out_buf == 0) { + return strlen(pair->value) + 1; + } + if (out_buf == NULL) { + return 0; + } + if (strlen(pair->value) >= n_out_buf) { + return 0; + } + strcpy(out_buf, pair->value); + return 1; +} + +int sm_exists(const StrMap *map, const char *key) +{ + unsigned int index; + Bucket *bucket; + Pair *pair; + + if (map == NULL) { + return 0; + } + if (key == NULL) { + return 0; + } + index = hash(key) % map->count; + bucket = &(map->buckets[index]); + pair = get_pair(bucket, key); + if (pair == NULL) { + return 0; + } + return 1; +} + +int sm_put(StrMap *map, const char *key, const char *value) +{ + unsigned int key_len, value_len, index; + Bucket *bucket; + Pair *tmp_pairs, *pair; + char *tmp_value; + char *new_key, *new_value; + + if (map == NULL) { + return 0; + } + if (key == NULL || value == NULL) { + return 0; + } + key_len = strlen(key); + value_len = strlen(value); + /* Get a pointer to the bucket the key string hashes to */ + index = hash(key) % map->count; + bucket = &(map->buckets[index]); + /* Check if we can handle insertion by simply replacing + * an existing value in a key-value pair in the bucket. + */ + if ((pair = get_pair(bucket, key)) != NULL) { + /* The bucket contains a pair that matches the provided key, + * change the value for that pair to the new value. + */ + if (strlen(pair->value) < value_len) { + /* If the new value is larger than the old value, re-allocate + * space for the new larger value. + */ + tmp_value = realloc(pair->value, (value_len + 1) * sizeof(char)); + if (tmp_value == NULL) { + return 0; + } + pair->value = tmp_value; + } + /* Copy the new value into the pair that matches the key */ + strcpy(pair->value, value); + return 1; + } + /* Allocate space for a new key and value */ + new_key = malloc((key_len + 1) * sizeof(char)); + if (new_key == NULL) { + return 0; + } + new_value = malloc((value_len + 1) * sizeof(char)); + if (new_value == NULL) { + free(new_key); + return 0; + } + /* Create a key-value pair */ + if (bucket->count == 0) { + /* The bucket is empty, lazily allocate space for a single + * key-value pair. + */ + bucket->pairs = malloc(sizeof(Pair)); + if (bucket->pairs == NULL) { + free(new_key); + free(new_value); + return 0; + } + bucket->count = 1; + } + else { + /* The bucket wasn't empty but no pair existed that matches the provided + * key, so create a new key-value pair. + */ + tmp_pairs = realloc(bucket->pairs, (bucket->count + 1) * sizeof(Pair)); + if (tmp_pairs == NULL) { + free(new_key); + free(new_value); + return 0; + } + bucket->pairs = tmp_pairs; + bucket->count++; + } + /* Get the last pair in the chain for the bucket */ + pair = &(bucket->pairs[bucket->count - 1]); + pair->key = new_key; + pair->value = new_value; + /* Copy the key and its value into the key-value pair */ + strcpy(pair->key, key); + strcpy(pair->value, value); + return 1; +} + +int sm_get_count(const StrMap *map) +{ + unsigned int i, j, n, m; + unsigned int count; + Bucket *bucket; + Pair *pair; + + if (map == NULL) { + return 0; + } + bucket = map->buckets; + n = map->count; + i = 0; + count = 0; + while (i < n) { + pair = bucket->pairs; + m = bucket->count; + j = 0; + while (j < m) { + count++; + pair++; + j++; + } + bucket++; + i++; + } + return count; +} + +int sm_enum(const StrMap *map, sm_enum_func enum_func, const void *obj) +{ + unsigned int i, j, n, m; + Bucket *bucket; + Pair *pair; + + if (map == NULL) { + return 0; + } + if (enum_func == NULL) { + return 0; + } + bucket = map->buckets; + n = map->count; + i = 0; + while (i < n) { + pair = bucket->pairs; + m = bucket->count; + j = 0; + while (j < m) { + enum_func(pair->key, pair->value, obj); + pair++; + j++; + } + bucket++; + i++; + } + return 1; +} + +/* + * Returns a pair from the bucket that matches the provided key, + * or null if no such pair exist. + */ +static Pair * get_pair(Bucket *bucket, const char *key) +{ + unsigned int i, n; + Pair *pair; + + n = bucket->count; + if (n == 0) { + return NULL; + } + pair = bucket->pairs; + i = 0; + while (i < n) { + if (pair->key != NULL && pair->value != NULL) { + if (strcmp(pair->key, key) == 0) { + return pair; + } + } + pair++; + i++; + } + return NULL; +} + +/* + * Returns a hash code for the provided string. + */ +static unsigned long hash(const char *str) +{ + unsigned long hash = 5381; + int c; + + while (c = *str++) { + hash = ((hash << 5) + hash) + c; + } + return hash; +} + +/* + + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + +*/ \ No newline at end of file diff --git a/tools/ScriptQuestReleaseTracker/strmap.h b/tools/ScriptQuestReleaseTracker/strmap.h new file mode 100644 index 0000000000..b0ff19cbc5 --- /dev/null +++ b/tools/ScriptQuestReleaseTracker/strmap.h @@ -0,0 +1,356 @@ +/* + * strmap version 2.0.1 + * + * ANSI C hash table for strings. + * + * Version history: + * 1.0.0 - initial release + * 2.0.0 - changed function prefix from strmap to sm to ensure + * ANSI C compatibility + * 2.0.1 - improved documentation + * + * strmap.h + * + * Copyright (c) 2009, 2011, 2013 Per Ola Kristensson. + * + * Per Ola Kristensson + * Inference Group, Department of Physics + * University of Cambridge + * Cavendish Laboratory + * JJ Thomson Avenue + * CB3 0HE Cambridge + * United Kingdom + * + * strmap is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * strmap 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with strmap. If not, see . + */ +#ifndef _STRMAP_H_ +#define _STRMAP_H_ + +#ifdef __cplusplus +extern "C" +{ +#endif + +#include +#include + +typedef struct StrMap StrMap; + +/* + * This callback function is called once per key-value when iterating over + * all keys associated to values. + * + * Parameters: + * + * key: A pointer to a null-terminated C string. The string must not + * be modified by the client. + * + * value: A pointer to a null-terminated C string. The string must + * not be modified by the client. + * + * obj: A pointer to a client-specific object. This parameter may be + * null. + * + * Return value: None. + */ +typedef void(*sm_enum_func)(const char *key, const char *value, const void *obj); + +/* + * Creates a string map. + * + * Parameters: + * + * capacity: The number of top-level slots this string map + * should allocate. This parameter must be > 0. + * + * Return value: A pointer to a string map object, + * or null if a new string map could not be allocated. + */ +StrMap * sm_new(unsigned int capacity); + +/* + * Releases all memory held by a string map object. + * + * Parameters: + * + * map: A pointer to a string map. This parameter cannot be null. + * If the supplied string map has been previously released, the + * behaviour of this function is undefined. + * + * Return value: None. + */ +void sm_delete(StrMap *map); + +/* + * Returns the value associated with the supplied key. + * + * Parameters: + * + * map: A pointer to a string map. This parameter cannot be null. + * + * key: A pointer to a null-terminated C string. This parameter cannot + * be null. + * + * out_buf: A pointer to an output buffer which will contain the value, + * if it exists and fits into the buffer. + * + * n_out_buf: The size of the output buffer in bytes. + * + * Return value: If out_buf is set to null and n_out_buf is set to 0 the return + * value will be the number of bytes required to store the value (if it exists) + * and its null-terminator. For all other parameter configurations the return value + * is 1 if an associated value was found and completely copied into the output buffer, + * 0 otherwise. + */ +int sm_get(const StrMap *map, const char *key, char *out_buf, unsigned int n_out_buf); + +/* + * Queries the existence of a key. + * + * Parameters: + * + * map: A pointer to a string map. This parameter cannot be null. + * + * key: A pointer to a null-terminated C string. This parameter cannot + * be null. + * + * Return value: 1 if the key exists, 0 otherwise. + */ +int sm_exists(const StrMap *map, const char *key); + +/* + * Associates a value with the supplied key. If the key is already + * associated with a value, the previous value is replaced. + * + * Parameters: + * + * map: A pointer to a string map. This parameter cannot be null. + * + * key: A pointer to a null-terminated C string. This parameter + * cannot be null. The string must have a string length > 0. The + * string will be copied. + * + * value: A pointer to a null-terminated C string. This parameter + * cannot be null. The string must have a string length > 0. The + * string will be copied. + * + * Return value: 1 if the association succeeded, 0 otherwise. + */ +int sm_put(StrMap *map, const char *key, const char *value); + +/* + * Returns the number of associations between keys and values. + * + * Parameters: + * + * map: A pointer to a string map. This parameter cannot be null. + * + * Return value: The number of associations between keys and values. + */ +int sm_get_count(const StrMap *map); + +/* + * An enumerator over all associations between keys and values. + * + * Parameters: + * + * map: A pointer to a string map. This parameter cannot be null. + * + * enum_func: A pointer to a callback function that will be + * called by this procedure once for every key associated + * with a value. This parameter cannot be null. + * + * obj: A pointer to a client-specific object. This parameter will be + * passed back to the client's callback function. This parameter can + * be null. + * + * Return value: 1 if enumeration completed, 0 otherwise. + */ +int sm_enum(const StrMap *map, sm_enum_func enum_func, const void *obj); + +#ifdef __cplusplus +} +#endif + +#endif + +/* + + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + +*/ \ No newline at end of file diff --git a/tools/ScriptStaticMethodTracker/method_tracker.c b/tools/ScriptStaticMethodTracker/method_tracker.c index 63af248dec..5a23d0f23e 100644 --- a/tools/ScriptStaticMethodTracker/method_tracker.c +++ b/tools/ScriptStaticMethodTracker/method_tracker.c @@ -24,8 +24,6 @@ #include #include -#define SCRIPT_FILES_MAX_CONTENT_SIZE 1777777 - #include "method_list.h" #include "script_path.h" @@ -63,29 +61,36 @@ JavaMethodList getBestSubstringsFromStringList(char *aStrRegex, JavaMethodList * } char *str = method->name; - int pcreExecRet = pcre_exec(reCompiled, pcreExtra, str, strlen(str), 0, 0, subStrVec, subStrVecLength); - if(pcreExecRet < 0) { - switch(pcreExecRet) { - //case PCRE_ERROR_NOMATCH : printf("String did not match the pattern\n"); break; - case PCRE_ERROR_NULL : printf("Something was null\n"); break; - case PCRE_ERROR_BADOPTION : printf("A bad option was passed\n"); break; - case PCRE_ERROR_BADMAGIC : printf("Magic number bad (compiled re corrupt?)\n"); break; - case PCRE_ERROR_UNKNOWN_NODE : printf("Something kooky in the compiled re\n"); break; - case PCRE_ERROR_NOMEMORY : printf("Ran out of memory\n"); break; - //default : printf("Unknown error\n"); break; - } - } else { - if(pcreExecRet == 0) { - printf("But too many substrings were found to fit in subStrVec!\n"); - // Set rc to the max number of substring matches possible. - pcreExecRet = 30 / 3; - } + int st = 0, en = strlen(str); + while (st < en) { + int pcreExecRet = pcre_exec(reCompiled, pcreExtra, str, en, st, 0, subStrVec, subStrVecLength); + if(pcreExecRet < 0) { + switch(pcreExecRet) { + //case PCRE_ERROR_NOMATCH : printf("String did not match the pattern\n"); break; + case PCRE_ERROR_NULL : printf("Something was null\n"); break; + case PCRE_ERROR_BADOPTION : printf("A bad option was passed\n"); break; + case PCRE_ERROR_BADMAGIC : printf("Magic number bad (compiled re corrupt?)\n"); break; + case PCRE_ERROR_UNKNOWN_NODE : printf("Something kooky in the compiled re\n"); break; + case PCRE_ERROR_NOMEMORY : printf("Ran out of memory\n"); break; + //default : printf("Unknown error\n"); break; + } - const char *psubStrMatchStr; - pcre_get_substring(str, subStrVec, pcreExecRet, 0, &(psubStrMatchStr)); + break; // no more matches found + } else { + if(pcreExecRet == 0) { + printf("But too many substrings were found to fit in subStrVec!\n"); + // Set rc to the max number of substring matches possible. + pcreExecRet = 30 / 3; + } - insertJavaMethod(&ret, createJavaMethod(psubStrMatchStr)); - pcre_free_substring(psubStrMatchStr); + const char *psubStrMatchStr; + pcre_get_substring(str, subStrVec, pcreExecRet, 0, &(psubStrMatchStr)); + + insertJavaMethod(&ret, createJavaMethod(psubStrMatchStr)); + pcre_free_substring(psubStrMatchStr); + + st = subStrVec[1]; + } } } } @@ -204,7 +209,6 @@ JavaMethodList trackerFindSourceStaticMethods(JavaMethodList *lines, int lines_s continue; } - //printf("Java Method: %s\n", method->name); insertJavaMethod(&ret, createJavaMethod(method->name)); } @@ -214,17 +218,15 @@ JavaMethodList trackerFindSourceStaticMethods(JavaMethodList *lines, int lines_s } char *getContentFromFile(FILE *f) { - char str[10240]; + fseek(f, 0, SEEK_END); // implemented by user529758 @ StackOverflow + long fsize = ftell(f); + fseek(f, 0, SEEK_SET); /* same as rewind(f); */ - char *content = (char *)malloc(SCRIPT_FILES_MAX_CONTENT_SIZE * sizeof(char)); - content[0] = 0; + char *string = malloc(fsize + 1); + fread(string, 1, fsize, f); - while (!feof(f)) { - fgets(str, 10240, f); - strcat(content, str); - } - - return content; + string[fsize] = 0; + return string; } bool locateMethodCall(const char *method_name, char *file_path) { @@ -246,6 +248,7 @@ bool locateMethodCall(const char *method_name, char *file_path) { JavaMethodList list = getBestSubstringsFromStringList(aStrRegex, file_content, 1); bool found = (list.size > 0); + freeJavaMethodList(&(file_content[0])); free(file_content); fclose(f); @@ -263,7 +266,7 @@ void locateMethodCalls(const char *method_name, char **file_paths, int file_path } int trackerLocateScriptsStaticCalls(JavaMethodList method_names) { - ScriptFiles *files = createScriptFiles("../../HeavenMS/scripts"); + ScriptFiles *files = createScriptFiles("../../scripts"); if (files == NULL) { printf("ERROR: Could not initialize script files.\n"); return -1; @@ -289,7 +292,7 @@ typedef struct { } SourceFilesContent; SourceFilesContent* readSourceFileContents() { - ScriptFiles *srcFilePaths = createScriptFiles("../../HeavenMS/src"); + ScriptFiles *srcFilePaths = createScriptFiles("../../src"); SourceFilesContent *files = (SourceFilesContent *)malloc(sizeof(SourceFilesContent)); files->file_content = (JavaMethodList *)malloc(srcFilePaths->file_paths_size * sizeof(JavaMethodList)); @@ -311,7 +314,6 @@ SourceFilesContent* readSourceFileContents() { insertJavaMethod(&(files->file_content[i]), createJavaMethod(content)); } - //printf("len: %d\n", max_len); freeScriptFiles(srcFilePaths); return files; diff --git a/tools/ScriptStaticMethodTracker/script_path.h b/tools/ScriptStaticMethodTracker/script_path.h index 553d28d260..cd2452a517 100644 --- a/tools/ScriptStaticMethodTracker/script_path.h +++ b/tools/ScriptStaticMethodTracker/script_path.h @@ -21,8 +21,8 @@ #ifndef SCRIPT_PATH_H_ #define SCRIPT_PATH_H_ -#define SCRIPT_FILES_MAX_COUNT 20000 -#define SCRIPT_FILES_MAX_PATH_SIZE 1000 +#define SCRIPT_FILES_MAX_COUNT 70000 +#define SCRIPT_FILES_MAX_PATH_SIZE 40000 typedef struct { char **file_paths; diff --git a/wz/Quest.wz/Act.img.xml b/wz/Quest.wz/Act.img.xml index e612835194..647b53de72 100644 --- a/wz/Quest.wz/Act.img.xml +++ b/wz/Quest.wz/Act.img.xml @@ -12775,8 +12775,16 @@ + + + + + + + + @@ -20077,6 +20085,7 @@ + diff --git a/wz/Quest.wz/Check.img.xml b/wz/Quest.wz/Check.img.xml index d19084770e..f94af3a935 100644 --- a/wz/Quest.wz/Check.img.xml +++ b/wz/Quest.wz/Check.img.xml @@ -20136,6 +20136,12 @@ + + + + + + @@ -22133,7 +22139,12 @@ - + + + + + + @@ -22309,6 +22320,12 @@ + + + + + + @@ -23461,7 +23478,7 @@ - + @@ -24184,12 +24201,17 @@ - + + + + + + @@ -39696,7 +39718,11 @@ - + + + + + @@ -40748,7 +40774,6 @@ - @@ -41038,7 +41063,11 @@ - + + + + + @@ -41728,7 +41757,11 @@ - + + + + + @@ -42046,7 +42079,11 @@ - + + + + + @@ -48377,7 +48414,11 @@ - + + + + + @@ -48393,7 +48434,11 @@ - + + + + + @@ -48443,7 +48488,11 @@ - + + + + + @@ -50105,6 +50154,12 @@ + + + + + + @@ -56931,6 +56986,11 @@ + + + + + @@ -60034,7 +60094,12 @@ - + + + + + + diff --git a/wz/Quest.wz/QuestInfo.img.xml b/wz/Quest.wz/QuestInfo.img.xml index d89f6d0f96..1c5d858e44 100644 --- a/wz/Quest.wz/QuestInfo.img.xml +++ b/wz/Quest.wz/QuestInfo.img.xml @@ -6467,7 +6467,7 @@ Once there, talk to #b#p1200003##k to board the ship. - + diff --git a/wz/Quest.wz/Say.img.xml b/wz/Quest.wz/Say.img.xml index 5eb5b41717..c22151a4e9 100644 --- a/wz/Quest.wz/Say.img.xml +++ b/wz/Quest.wz/Say.img.xml @@ -30134,6 +30134,23 @@ + + + + + + + + + + + + + + + + + From b93c9ce1d6dca9fa65908204341bfc4c08ccd771 Mon Sep 17 00:00:00 2001 From: Gambiner <55981123+Gambiner@users.noreply.github.com> Date: Mon, 7 Oct 2019 09:03:33 +1100 Subject: [PATCH 31/37] Overhaul of in-game text focusing on consumable items (#523) * Update Say.img.xml * Update Act.img.xml * Update Check.img.xml * Cleanup of descriptions for consumable items - Fixed broken line returns. - Made minor adjustments to some item descriptions to make them more GMS-like. - Fixed various typos, spelling errors, grammar problems, etc. - Changed description of Sunrise Dew to indicate 4050 MP recovery (was 4000). - Added description of item effects in tooltips for Heartstopper and Smore. - Tweaked scroll and mastery book descriptions to follow a consistent format. * Catchup updates + small fixes - Small fixes to text here and there. - Say.img.xml and QuestInfo.img.xml should include updates that were made from the previous HeavenMS commit. --- wz/Quest.wz/QuestInfo.img.xml | 56 +- wz/Quest.wz/Say.img.xml | 32 +- wz/String.wz/Consume.img.xml | 2932 ++++++++++++++++----------------- wz/String.wz/Etc.img.xml | 26 +- 4 files changed, 1523 insertions(+), 1523 deletions(-) diff --git a/wz/Quest.wz/QuestInfo.img.xml b/wz/Quest.wz/QuestInfo.img.xml index 1c5d858e44..faa9d55646 100644 --- a/wz/Quest.wz/QuestInfo.img.xml +++ b/wz/Quest.wz/QuestInfo.img.xml @@ -4581,7 +4581,7 @@ You can now begin the "Manji's Request" quest. - + @@ -12719,7 +12719,7 @@ Can proceed to the "The Secrets Behind the Ring?" quest. - + @@ -13511,7 +13511,7 @@ Can proceed to the "The Secrets Behind the Ring?" quest. - + @@ -13520,7 +13520,7 @@ Can proceed to the "The Secrets Behind the Ring?" quest. - + @@ -15338,7 +15338,7 @@ Can proceed to the "The Secrets Behind the Ring?" quest. - + @@ -16163,26 +16163,26 @@ Can proceed to the "The Secrets Behind the Ring?" quest. - + - + - - - + + + - - + + @@ -16190,9 +16190,9 @@ Can proceed to the "The Secrets Behind the Ring?" quest. - + - + @@ -16200,40 +16200,40 @@ Can proceed to the "The Secrets Behind the Ring?" quest. - - + + - - - + + + - - - + + + - + - - - + + + @@ -16241,7 +16241,7 @@ Can proceed to the "The Secrets Behind the Ring?" quest. - + - + diff --git a/wz/Quest.wz/Say.img.xml b/wz/Quest.wz/Say.img.xml index c22151a4e9..b5303a4f62 100644 --- a/wz/Quest.wz/Say.img.xml +++ b/wz/Quest.wz/Say.img.xml @@ -8206,7 +8206,7 @@ - + @@ -8249,7 +8249,7 @@ - + @@ -11685,7 +11685,7 @@ - + @@ -11707,7 +11707,7 @@ - + @@ -11729,7 +11729,7 @@ - + @@ -11751,7 +11751,7 @@ - + @@ -11779,14 +11779,14 @@ - + - + - + @@ -15560,7 +15560,7 @@ - + @@ -15571,7 +15571,7 @@ - + @@ -18926,7 +18926,7 @@ - + @@ -22664,10 +22664,10 @@ - + - + @@ -22824,7 +22824,7 @@ - + @@ -30762,7 +30762,7 @@ - + diff --git a/wz/String.wz/Consume.img.xml b/wz/String.wz/Consume.img.xml index 81e66477f2..e98d748844 100644 --- a/wz/String.wz/Consume.img.xml +++ b/wz/String.wz/Consume.img.xml @@ -18,7 +18,7 @@ - + @@ -30,23 +30,23 @@ - + - + - + - + - + @@ -54,11 +54,11 @@ - + - + @@ -90,7 +90,7 @@ - + @@ -118,19 +118,19 @@ - + - + - + - + @@ -138,7 +138,7 @@ - + @@ -150,7 +150,7 @@ - + @@ -190,27 +190,27 @@ - + - + - + - + - + - + @@ -222,7 +222,7 @@ - + @@ -242,19 +242,19 @@ - + - + - + - + @@ -290,35 +290,35 @@ - + - + - + - + - + - + - + - + @@ -346,11 +346,11 @@ - + - + @@ -362,7 +362,7 @@ - + @@ -378,7 +378,7 @@ - + @@ -394,7 +394,7 @@ - + @@ -406,11 +406,11 @@ - + - + @@ -418,23 +418,23 @@ - + - + - + - + - + @@ -446,15 +446,15 @@ - + - + - + @@ -486,19 +486,19 @@ - + - + - + - + @@ -538,7 +538,7 @@ - + @@ -546,15 +546,15 @@ - + - + - + @@ -614,19 +614,19 @@ - + - + - + - + @@ -634,11 +634,11 @@ - + - + @@ -650,7 +650,7 @@ - + @@ -666,23 +666,23 @@ - + - + - + - + - + @@ -722,19 +722,19 @@ - + - + - + - + @@ -754,19 +754,19 @@ - + - + - + - + @@ -782,7 +782,7 @@ - + @@ -794,7 +794,7 @@ - + @@ -802,15 +802,15 @@ - + - + - + @@ -838,7 +838,7 @@ - + @@ -866,31 +866,31 @@ - + - + - + - + - + - + - + @@ -902,7 +902,7 @@ - + @@ -938,7 +938,7 @@ - + @@ -962,7 +962,7 @@ - + @@ -970,11 +970,11 @@ - + - + @@ -1006,15 +1006,15 @@ - + - + - + @@ -1022,19 +1022,19 @@ - + - + - + - + @@ -1050,31 +1050,31 @@ - + - + - + - + - + - + - + @@ -1110,7 +1110,7 @@ - + @@ -1119,33 +1119,33 @@ - + - + - + - + - + - + - + @@ -1161,7 +1161,7 @@ - + @@ -1185,19 +1185,19 @@ - + - + - + - + @@ -1221,31 +1221,31 @@ - + - + - + - + - + - + - + @@ -1265,15 +1265,15 @@ - + - + - + @@ -1293,15 +1293,15 @@ - + - + - + @@ -1309,7 +1309,7 @@ - + @@ -1317,11 +1317,11 @@ - + - + @@ -1337,31 +1337,31 @@ - + - + - + - + - + - + - + @@ -1433,7 +1433,7 @@ - + @@ -1441,35 +1441,35 @@ - + - + - + - + - + - + - + - + @@ -1493,11 +1493,11 @@ - + - + @@ -1513,279 +1513,279 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -1797,11 +1797,11 @@ - + - + @@ -1809,7 +1809,7 @@ - + @@ -1817,407 +1817,407 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2249,35 +2249,35 @@ - + - + - + - + - + - + - + - + @@ -2297,203 +2297,203 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2505,351 +2505,351 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2857,275 +2857,275 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3133,167 +3133,167 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3301,203 +3301,203 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3505,47 +3505,47 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -3553,11 +3553,11 @@ - + - + @@ -3573,51 +3573,51 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -3629,7 +3629,7 @@ - + @@ -3641,7 +3641,7 @@ - + @@ -3677,19 +3677,19 @@ - + - + - + - + @@ -3697,7 +3697,7 @@ - + @@ -3705,87 +3705,87 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3793,55 +3793,55 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3849,7 +3849,7 @@ - + @@ -3857,7 +3857,7 @@ - + @@ -3901,7 +3901,7 @@ - + @@ -3921,35 +3921,35 @@ - + - + - + - + - + - + - + - + @@ -3985,7 +3985,7 @@ - + @@ -4001,31 +4001,31 @@ - + - + - + - + - + - + - + @@ -4041,15 +4041,15 @@ - + - + - + @@ -4065,7 +4065,7 @@ - + @@ -4073,39 +4073,39 @@ - + - + - + - + - + - + - + - + - + @@ -4149,7 +4149,7 @@ - + @@ -4205,27 +4205,27 @@ - + - + - + - + - + - + @@ -4233,11 +4233,11 @@ - + - + @@ -4249,59 +4249,59 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4345,7 +4345,7 @@ - + @@ -4376,7 +4376,7 @@ - + @@ -4384,19 +4384,19 @@ - + - + - + - + @@ -4404,7 +4404,7 @@ - + @@ -4436,7 +4436,7 @@ - + @@ -4464,7 +4464,7 @@ - + @@ -4504,15 +4504,15 @@ - + - + - + @@ -4572,7 +4572,7 @@ - + @@ -4584,43 +4584,43 @@ - + - + - + - + - + - + - + - + - + - + @@ -4632,31 +4632,31 @@ - + - + - + - + - + - + - + @@ -4668,7 +4668,7 @@ - + @@ -4680,67 +4680,67 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4953,1027 +4953,1027 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -5985,59 +5985,59 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -6353,7 +6353,7 @@ - + @@ -6405,7 +6405,7 @@ - + @@ -6433,23 +6433,23 @@ - + - + - + - + - + @@ -6461,71 +6461,71 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -6541,7 +6541,7 @@ - + @@ -6605,7 +6605,7 @@ - + @@ -6681,11 +6681,11 @@ - + - + @@ -6733,7 +6733,7 @@ - + @@ -6777,91 +6777,91 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -6869,31 +6869,31 @@ - + - + - + - + - + - + - + @@ -7045,15 +7045,15 @@ - + - + - + @@ -7093,7 +7093,7 @@ - + @@ -7113,255 +7113,255 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -7425,7 +7425,7 @@ - + @@ -7521,23 +7521,23 @@ - + - + - + - + - + @@ -7553,11 +7553,11 @@ - + - + @@ -7565,91 +7565,91 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -7661,31 +7661,31 @@ - + - + - + - + - + - + - + @@ -7729,7 +7729,7 @@ - + @@ -7737,7 +7737,7 @@ - + @@ -7781,15 +7781,15 @@ - + - + - + @@ -7909,71 +7909,71 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -8041,59 +8041,59 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -8129,23 +8129,23 @@ - + - + - + - + - + @@ -8197,35 +8197,35 @@ - + - + - + - + - + - + - + - + @@ -8241,7 +8241,7 @@ - + @@ -8293,235 +8293,235 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -8529,11 +8529,11 @@ - + - + @@ -8565,7 +8565,7 @@ - + @@ -8573,503 +8573,503 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/wz/String.wz/Etc.img.xml b/wz/String.wz/Etc.img.xml index 2cc65ee97e..e5221feaf8 100644 --- a/wz/String.wz/Etc.img.xml +++ b/wz/String.wz/Etc.img.xml @@ -1630,7 +1630,7 @@ - + @@ -2178,7 +2178,7 @@ - + @@ -2366,7 +2366,7 @@ - + @@ -2430,15 +2430,15 @@ - + - + - + @@ -4930,19 +4930,19 @@ - + - + - + - + @@ -4950,11 +4950,11 @@ - + - + @@ -7156,7 +7156,7 @@ - + From 80cd240ab8ab77ea06f6674cea28316340f96291 Mon Sep 17 00:00:00 2001 From: ronancpl Date: Sat, 12 Oct 2019 17:13:03 -0300 Subject: [PATCH 32/37] Channel Services + Mob Movement patch + Portal map scripts Refactored several schedulers within the channel class, now running within their own service modules. Fixed a case where mob movements would get mistakably processed for other than the target mob during a map transition, leading to weird movements on the mob in the entered area. Added usage of foreign key for petid's. Implemented functionality for "Hair Membership" coupons. Fixed skill Body Pressure not applying the chance to neutralise on touch. Fixed quest related to NPC Shaman Rock not completing due to unmatched progress. Fixed an issue with updating title progress "Touch the Sky". --- README.md | 2 + config.yaml | 1 - docs/issues.txt | 1 + docs/mychanges_ptbr.txt | 18 +- .../map/onUserEnter/highposition.js | 25 +-- scripts/npc/1012103.js | 5 +- scripts/npc/1052100.js | 5 +- scripts/npc/1063012.js | 7 +- scripts/npc/1063013.js | 7 +- scripts/npc/2010001.js | 5 +- scripts/npc/2041007.js | 5 +- scripts/npc/2090100.js | 5 +- scripts/npc/2111013.js | 1 - scripts/npc/2111014.js | 1 - scripts/npc/9201015.js | 5 +- scripts/npc/9201064.js | 5 +- .../npc/mapleTV.js | 47 +++-- scripts/portal/highposition.js | 10 +- scripts/quest/2232.js | 25 +++ scripts/quest/2251.js | 38 ++++ sql/db_database.sql | 40 +++- src/client/MapleCharacter.java | 51 ++--- src/client/inventory/Item.java | 6 +- src/client/inventory/ItemFactory.java | 18 +- src/client/inventory/MaplePet.java | 66 +------ .../manipulator/MapleCashidGenerator.java | 5 +- .../processor/action/SpawnPetProcessor.java | 2 +- src/config/ServerConfig.java | 1 - src/net/server/Server.java | 1 - src/net/server/channel/Channel.java | 163 +++------------- .../handlers/AbstractDealDamageHandler.java | 4 +- .../handlers/CloseRangeDamageHandler.java | 10 +- .../channel/handlers/MagicDamageHandler.java | 9 +- .../channel/handlers/MoveLifeHandler.java | 4 + .../channel/handlers/NPCTalkHandler.java | 9 +- .../channel/handlers/PetLootHandler.java | 6 - .../channel/handlers/RangedAttackHandler.java | 17 +- .../channel/handlers/TakeDamageHandler.java | 2 +- .../{task => services}/BaseScheduler.java | 2 +- .../{task => services}/SchedulerListener.java | 2 +- .../Service.java} | 34 +++- .../server/channel/services/ServiceType.java | 48 +++++ .../ServicesManager.java} | 36 ++-- .../task/BaseService.java} | 21 ++- .../channel/services/task/EventService.java | 65 +++++++ .../services/task/FaceExpressionService.java | 128 +++++++++++++ .../services/task/MobAnimationService.java | 125 +++++++++++++ .../services/task/MobClearSkillService.java | 65 +++++++ .../channel/services/task/MobMistService.java | 65 +++++++ .../services/task/MobStatusService.java | 168 +++++++++++++++++ .../channel/services/task/OverallService.java | 74 ++++++++ .../channel/task/MobAnimationScheduler.java | 96 ---------- .../channel/task/MobStatusScheduler.java | 131 ------------- src/provider/MapleDataTool.java | 7 +- .../portal/PortalPlayerInteraction.java | 7 +- .../MapleSkillbookInformationProvider.java | 175 +++--------------- src/server/life/MapleLifeFactory.java | 10 +- src/server/life/MapleMonster.java | 37 ++-- src/server/life/MobSkill.java | 5 +- src/server/maps/AbstractMapleMapObject.java | 3 +- src/server/maps/MapleDoor.java | 7 +- src/server/maps/MapleMap.java | 19 +- src/server/maps/MapleReactor.java | 9 +- src/server/quest/actions/InfoAction.java | 1 + .../MapleNoItemNameFetcher.java | 2 +- 65 files changed, 1195 insertions(+), 779 deletions(-) rename src/net/server/channel/task/MobMistScheduler.java => scripts/map/onUserEnter/highposition.js (62%) rename src/net/server/channel/task/OverallScheduler.java => scripts/npc/mapleTV.js (59%) create mode 100644 scripts/quest/2232.js create mode 100644 scripts/quest/2251.js rename src/net/server/channel/{task => services}/BaseScheduler.java (99%) rename src/net/server/channel/{task => services}/SchedulerListener.java (96%) rename src/net/server/channel/{task/MobClearSkillScheduler.java => services/Service.java} (54%) create mode 100644 src/net/server/channel/services/ServiceType.java rename src/net/server/channel/{task/FaceExpressionScheduler.java => services/ServicesManager.java} (53%) rename src/net/server/channel/{task/EventScheduler.java => services/task/BaseService.java} (65%) create mode 100644 src/net/server/channel/services/task/EventService.java create mode 100644 src/net/server/channel/services/task/FaceExpressionService.java create mode 100644 src/net/server/channel/services/task/MobAnimationService.java create mode 100644 src/net/server/channel/services/task/MobClearSkillService.java create mode 100644 src/net/server/channel/services/task/MobMistService.java create mode 100644 src/net/server/channel/services/task/MobStatusService.java create mode 100644 src/net/server/channel/services/task/OverallService.java delete mode 100644 src/net/server/channel/task/MobAnimationScheduler.java delete mode 100644 src/net/server/channel/task/MobStatusScheduler.java diff --git a/README.md b/README.md index 007d762561..7ba64be0d3 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,8 @@ Being a NetBeans 8.2 Project, this means that it's easier to install the project In this project, many gameplay-wise issues generated from either the original WZ files and the server source have been partially or completely solved. Considering the use of the provided edited WZ's and server-side wz.xml files should be of the greatest importance when dealing with this instance of server source, in order to perceive it at it's full potential. My opinion, though! +- In other case, as fallback from the provided ones, consider using **whole clean set**. Selecting part of the provided ones to play pretty much *may eventually* lead to unexpected issues. + The main objective of this project is to try as best as possible to recreate what once was the original MapleStory v83, while adding up some flavors that spices up the gameplay. In other words, aim to get the best of the MapleStory of that era. --- diff --git a/config.yaml b/config.yaml index 314d719972..7a8ac3c067 100644 --- a/config.yaml +++ b/config.yaml @@ -310,7 +310,6 @@ server: MAX_AP: 32767 #Max AP allotted on the auto-assigner. MAX_EVENT_LEVELS: 8 #Event has different levels of rewarding system. BLOCK_NPC_RACE_CONDT: 500 # (0.5 * 1000) Time the player client must wait before reopening a conversation with an NPC. - PET_LOOT_UPON_ATTACK: 700 # (0.7 * 1000) Time the pet must wait before trying to pick items up. TOT_MOB_QUEST_REQUIREMENT: 77 #Overwrites old 999-mobs requirement for the ToT questline with new requirement value, set 0 for default. MOB_REACTOR_REFRESH_TIME: 30000 # (30 * 1000) Overwrites refresh time for those reactors oriented to inflict damage to bosses (Ice Queen, Riche), set 0 for default. PARTY_SEARCH_REENTRY_LIMIT: 10 #Max amount of times a party leader is allowed to persist on the Party Search before entry expiration (thus needing to manually restart the Party Search to be able to search for members). diff --git a/docs/issues.txt b/docs/issues.txt index 56f339dda6..4cb1acf797 100644 --- a/docs/issues.txt +++ b/docs/issues.txt @@ -18,6 +18,7 @@ Known issues: - Reportedly, there are cases where mob positions fail to sync between player's client-view. - Visual equip EXP watch value will present stuttering for early levels requirement (EXP needed less than 100), and requirement at level 200 will not progress at all due to the level cap in client. - Monster Magnet will crash the player when trying to pull fixed monsters. +- Some magic skills such as "Energy Bolt" or "Holy Arrow" doesn't display damage to other players when the attacks come from close range to the targeted mob. Oddly enough, using "closeRangeAttack" packet seems to clear the issue on most skills, however in others "Error 5" crash renders this unusable. --------------------------- --------------------------- diff --git a/docs/mychanges_ptbr.txt b/docs/mychanges_ptbr.txt index 22b9a22d82..8e9a567bb3 100644 --- a/docs/mychanges_ptbr.txt +++ b/docs/mychanges_ptbr.txt @@ -2180,4 +2180,20 @@ Corrigido análise de alerta de HP/MP lado-servidor não contando com os atribut 03 Outubro 2019, Corrigido skill "Energy Charge" levando atualização de buff ao tocar em mobs, levando a casos onde o buff nos stats poderia inesperadamente ficar retido além do tempo de atuação previsto. Substituído utilização de "Jackson annotations + SnakeYaml" por "YamlBeans", utilizando-se assim menos artefatos JARs no processo (anteriormente 5, agora somente 1). Nota: na transição, fora constatado que a utilização da tecnologia anterior era mais permissiva perante o arquivo de configurações, porém estrutura do novo arquivo foi normalizado e está agora funcional. -Refatorado inicialização de eventos ao iniciar o servidor, em busca de melhorar o tempo de startup. \ No newline at end of file +Refatorado inicialização de eventos ao iniciar o servidor, em busca de melhorar o tempo de startup. + +05 - 08 Outubro 2019, +Refatorado os diversos schedulers que estavam presentes na classe de canais, agora abstraídas e atuando dentro de serviços. +Corrigido circunstância onde movimentos de mobs poderiam estar sendo processados enquanto jogador está transitando mapas, levando a possível inconsistência na aplicação de movimento do mob na área acessada. + +10 - 12 Outubro 2019, +Modificado uso de "default" de petid nos itens de inventário armazenados na DB (de -1 para nulo), assim permitindo criar chaves únicas. +Adicionado uso de chaves estrangeiras para o petid. +Implementado código de suporte para cupons de "associação" de cosméticos de cabelo. +Corrigido bug recente em bosses com atributo "link" sem HPbar sendo detectados como possuindo HPbar, se o mob base possui. +Corrigido bug recente na skill "Body Pressure" não aplicando a sua passiva com chance de neutralizar ao tocar mobs. +Corrigido quest com NPC "Shaman Rock" aplicando progresso que não corresponde com o esperado (progresso extra agora movido para um novo questid). +Adicionado método que permite executar scripts de mapa no sistema de scripts de portal. +Corrigido problema recente ao referenciar script com progresso "Touch the Sky" (script de portal utilizando métodos de scripts de mapa). +Adicionado fallback para scripts de NPC MapleTV. +Revisado aplicação e abordagem deste código-base nos arquivos XML legado. \ No newline at end of file diff --git a/src/net/server/channel/task/MobMistScheduler.java b/scripts/map/onUserEnter/highposition.js similarity index 62% rename from src/net/server/channel/task/MobMistScheduler.java rename to scripts/map/onUserEnter/highposition.js index f7494b879e..815a15c05c 100644 --- a/src/net/server/channel/task/MobMistScheduler.java +++ b/scripts/map/onUserEnter/highposition.js @@ -1,6 +1,8 @@ /* - This file is part of the HeavenMS MapleStory Server - Copyleft (L) 2016 - 2018 RonanLana + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as @@ -17,20 +19,11 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.channel.task; -import net.server.audit.locks.MonitoredLockType; - -/** +/* + * Author: kevintjuh93 * - * @author Ronan - */ -public class MobMistScheduler extends BaseScheduler { - public MobMistScheduler() { - super(MonitoredLockType.CHANNEL_MOBMIST); - } - - public void registerMistCancelAction(Runnable runAction, long delay) { - registerEntry(runAction, runAction, delay); - } +*/ +function start(ms) { + ms.touchTheSky(); } diff --git a/scripts/npc/1012103.js b/scripts/npc/1012103.js index e1bd30ddfb..2984176cd9 100644 --- a/scripts/npc/1012103.js +++ b/scripts/npc/1012103.js @@ -72,7 +72,10 @@ function action(mode, type, selection) { } else if (status == 2){ cm.dispose(); if (beauty == 1){ - if (cm.haveItem(5150001)){ + if (cm.haveItem(5420002)){ + cm.setHair(hairnew[selection]); + cm.sendOk("Enjoy your new and improved hairstyle!"); + } else if (cm.haveItem(5150001)){ cm.gainItem(5150001, -1); cm.setHair(hairnew[selection]); cm.sendOk("Enjoy your new and improved hairstyle!"); diff --git a/scripts/npc/1052100.js b/scripts/npc/1052100.js index 5be126551f..62de216d0c 100644 --- a/scripts/npc/1052100.js +++ b/scripts/npc/1052100.js @@ -78,7 +78,10 @@ function action(mode, type, selection) { else if (status == 2){ cm.dispose(); if (beauty == 1){ - if (cm.haveItem(5150003)){ + if (cm.haveItem(5420003)){ + cm.setHair(hairnew[selection]); + cm.sendOk("Enjoy your new and improved hairstyle!"); + } else if (cm.haveItem(5150003)){ cm.gainItem(5150003, -1); cm.setHair(hairnew[selection]); cm.sendOk("Enjoy your new and improved hairstyle!"); diff --git a/scripts/npc/1063012.js b/scripts/npc/1063012.js index 282cc42fe0..c5d98a2b9f 100644 --- a/scripts/npc/1063012.js +++ b/scripts/npc/1063012.js @@ -21,6 +21,9 @@ */ var status = -1; +/* +Custom Quest 100300 +*/ function activateShamanRock(slot,progress) { var ch = progress[slot]; if(ch == '0') { @@ -45,10 +48,10 @@ function start() { else if(map == 105070000) activateShamanRock(2,progress); else if(map == 105090000) { // workaround... TWO SAME NPC ID ON SAME MAP - var npcOid = cm.getQuestProgressInt(2236, 1); + var npcOid = cm.getQuestProgressInt(100300, 1); if (npcOid == 0) { activateShamanRock(3,progress); - cm.setQuestProgress(2236, 1, cm.getNpcObjectId()); + cm.setQuestProgress(100300, 1, cm.getNpcObjectId()); } else if (cm.getNpcObjectId() != npcOid) { activateShamanRock(4,progress); } diff --git a/scripts/npc/1063013.js b/scripts/npc/1063013.js index 282cc42fe0..c5d98a2b9f 100644 --- a/scripts/npc/1063013.js +++ b/scripts/npc/1063013.js @@ -21,6 +21,9 @@ */ var status = -1; +/* +Custom Quest 100300 +*/ function activateShamanRock(slot,progress) { var ch = progress[slot]; if(ch == '0') { @@ -45,10 +48,10 @@ function start() { else if(map == 105070000) activateShamanRock(2,progress); else if(map == 105090000) { // workaround... TWO SAME NPC ID ON SAME MAP - var npcOid = cm.getQuestProgressInt(2236, 1); + var npcOid = cm.getQuestProgressInt(100300, 1); if (npcOid == 0) { activateShamanRock(3,progress); - cm.setQuestProgress(2236, 1, cm.getNpcObjectId()); + cm.setQuestProgress(100300, 1, cm.getNpcObjectId()); } else if (cm.getNpcObjectId() != npcOid) { activateShamanRock(4,progress); } diff --git a/scripts/npc/2010001.js b/scripts/npc/2010001.js index 3d10243e83..7d9cbbfc2e 100644 --- a/scripts/npc/2010001.js +++ b/scripts/npc/2010001.js @@ -83,7 +83,10 @@ function action(mode, type, selection) { else if (status == 2){ cm.dispose(); if (beauty == 1){ - if (cm.haveItem(5150005) == true){ + if (cm.haveItem(5420004)){ + cm.setHair(hairnew[selection]); + cm.sendOk("Enjoy your new and improved hairstyle!"); + } else if (cm.haveItem(5150005) == true){ cm.gainItem(5150005, -1); cm.setHair(hairnew[selection]); cm.sendOk("Enjoy your new and improved hairstyle!"); diff --git a/scripts/npc/2041007.js b/scripts/npc/2041007.js index 0cc2197a5d..46646dacf4 100644 --- a/scripts/npc/2041007.js +++ b/scripts/npc/2041007.js @@ -81,7 +81,10 @@ function action(mode, type, selection) { else if (status == 2){ cm.dispose(); if (beauty == 1){ - if (cm.haveItem(5150007) == true){ + if (cm.haveItem(5420005)){ + cm.setHair(hairnew[selection]); + cm.sendOk("Enjoy your new and improved hairstyle!"); + } else if (cm.haveItem(5150007) == true){ cm.gainItem(5150007, -1); cm.setHair(hairnew[selection]); cm.sendOk("Enjoy your new and improved hairstyle!"); diff --git a/scripts/npc/2090100.js b/scripts/npc/2090100.js index 60609facb3..b4320132c2 100644 --- a/scripts/npc/2090100.js +++ b/scripts/npc/2090100.js @@ -81,7 +81,10 @@ function action(mode, type, selection) { else if (status == 2){ cm.dispose(); if (beauty == 1){ - if (cm.haveItem(5150025)){ + if (cm.haveItem(5420006)){ + cm.setHair(hairnew[selection]); + cm.sendOk("Enjoy your new and improved hairstyle!"); + } else if (cm.haveItem(5150025)){ cm.gainItem(5150025, -1); cm.setHair(hairnew[selection]); cm.sendOk("Enjoy your new and improved hairstyle!"); diff --git a/scripts/npc/2111013.js b/scripts/npc/2111013.js index ab3289b9ff..7f4b75ea3d 100644 --- a/scripts/npc/2111013.js +++ b/scripts/npc/2111013.js @@ -40,7 +40,6 @@ function action(mode, type, selection) { if(status == 0) { if(cm.isQuestStarted(3311)) { - var slot = 2; var progress = cm.getQuestProgressInt(3311); if (progress == 4) { diff --git a/scripts/npc/2111014.js b/scripts/npc/2111014.js index cadbec00ea..f6e1e7310d 100644 --- a/scripts/npc/2111014.js +++ b/scripts/npc/2111014.js @@ -40,7 +40,6 @@ function action(mode, type, selection) { if(status == 0) { if(cm.isQuestStarted(3311)) { - var slot = 0; var progress = cm.getQuestProgressInt(3311); if (progress == 4) { diff --git a/scripts/npc/9201015.js b/scripts/npc/9201015.js index 3d3ade88b4..a41d48c246 100644 --- a/scripts/npc/9201015.js +++ b/scripts/npc/9201015.js @@ -84,7 +84,10 @@ function action(mode, type, selection) { else if (status == 2){ cm.dispose(); if (beauty == 1){ - if (cm.haveItem(5150020) == true){ + if (cm.haveItem(5420000)){ + cm.setHair(hairnew[selection]); + cm.sendOk("Enjoy your new and improved hairstyle!"); + } else if (cm.haveItem(5150020) == true){ cm.gainItem(5150020, -1); cm.setHair(hairnew[selection]); cm.sendOk("Enjoy your new and improved hairstyle!"); diff --git a/scripts/npc/9201064.js b/scripts/npc/9201064.js index 7625f74fe1..8cc7915ba8 100644 --- a/scripts/npc/9201064.js +++ b/scripts/npc/9201064.js @@ -73,7 +73,10 @@ function action(mode, type, selection) { else if (status == 2){ cm.dispose(); if (beauty == 1){ - if (cm.haveItem(5150031)){ + if (cm.haveItem(5420001)){ + cm.setHair(hairnew[selection]); + cm.sendOk("Enjoy your new and improved hairstyle!"); + } else if (cm.haveItem(5150031)){ cm.gainItem(5150031, -1); cm.setHair(hairnew[selection]); cm.sendOk("Enjoy your new and improved hairstyle!"); diff --git a/src/net/server/channel/task/OverallScheduler.java b/scripts/npc/mapleTV.js similarity index 59% rename from src/net/server/channel/task/OverallScheduler.java rename to scripts/npc/mapleTV.js index ffcf9d0e9e..59092f758a 100644 --- a/src/net/server/channel/task/OverallScheduler.java +++ b/scripts/npc/mapleTV.js @@ -17,24 +17,33 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.channel.task; - -import net.server.audit.locks.MonitoredLockType; - -/** - * - * @author Ronan +/* + Default Maple TV */ -public class OverallScheduler extends BaseScheduler { - public OverallScheduler() { - super(MonitoredLockType.CHANNEL_OVERALL); - } - - public void registerDelayedAction(Runnable runAction, long delay) { - registerEntry(runAction, runAction, delay); - } - - public void forceRunDelayedAction(Runnable runAction) { - interruptEntry(runAction); - } + +var status; + +function start() { + status = -1; + action(1, 0, 0); } + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && type > 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + + if(status == 0) { + // do nothing + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/portal/highposition.js b/scripts/portal/highposition.js index 75b838464a..e19516f8a5 100644 --- a/scripts/portal/highposition.js +++ b/scripts/portal/highposition.js @@ -20,10 +20,8 @@ along with this program. If not, see . */ -/* - * Author: kevintjuh93 - * -*/ -function start(ms) { - ms.touchTheSky(); +// Author: Ronan +function enter(ms) { + ms.runMapScript(); + return false; } \ No newline at end of file diff --git a/scripts/quest/2232.js b/scripts/quest/2232.js new file mode 100644 index 0000000000..0a674f2c08 --- /dev/null +++ b/scripts/quest/2232.js @@ -0,0 +1,25 @@ +var status = -1; + +function start(mode, type, selection) { + var familyEntry = qm.getPlayer().getFamilyEntry(); + if (familyEntry != null && familyEntry.getJuniorCount() > 0) { + qm.forceCompleteQuest(); + qm.gainExp(3000); + qm.sendNext("Good job!"); + } else { + qm.sendNext("I see that you have not successfully find a Junior, ok?"); + } + qm.dispose(); +} + +function end(mode, type, selection) { + var familyEntry = qm.getPlayer().getFamilyEntry(); + if (familyEntry != null && familyEntry.getJuniorCount() > 0) { // script found thanks to kvmba + qm.forceCompleteQuest(); + qm.gainExp(3000); + qm.sendNext("Good job!"); + } else { + qm.sendNext("I see that you have not successfully find a Junior, ok?"); + } + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/2251.js b/scripts/quest/2251.js new file mode 100644 index 0000000000..3de79f99d4 --- /dev/null +++ b/scripts/quest/2251.js @@ -0,0 +1,38 @@ +-/* + Author: Kevin + Quest: Zombie Mushroom Signal 3 (2251) + NPC: The Rememberer (1061011) + Item: Recording Charm (4032399) +*/ + +var status = -1; // script restored thanks to kvmba + +function end(mode, type, selection) { + if (mode == -1) { + qm.dispose(); + } else { + if(mode == 0 && type > 0) { + qm.dispose(); + return; + } + + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + if(!qm.haveItem(4032399, 20)) { + qm.sendOk("Please bring me 20 #b#t4032399##k... #i4032399#"); + } + else { + qm.gainItem(4032399, -20); + qm.sendOk("Oh, you brought 20 #b#t4032399##k! Thank you."); + qm.gainExp(8000); + qm.forceCompleteQuest(); + } + } else if (status == 1) { + qm.dispose(); + } + } +} \ No newline at end of file diff --git a/sql/db_database.sql b/sql/db_database.sql index 19794a205d..2c71f7eb4c 100644 --- a/sql/db_database.sql +++ b/sql/db_database.sql @@ -1,4 +1,4 @@ -#EXECUTE THIS FIRST, THEN NEXT SQL: 'db_drops.sql' +#EXECUTE THIS FIRST, THEN NEXT SQL: 'db_drops.sql' SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; @@ -8,9 +8,9 @@ SET time_zone = "+00:00"; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; -DROP DATABASE IF EXISTS `heavenms`; -CREATE DATABASE `heavenms` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; -USE `heavenms`; +DROP DATABASE IF EXISTS `heavenms2`; +CREATE DATABASE `heavenms2` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; +USE `heavenms2`; CREATE TABLE IF NOT EXISTS `accounts` ( `id` int(11) NOT NULL AUTO_INCREMENT, @@ -12968,7 +12968,7 @@ CREATE TABLE IF NOT EXISTS `inventoryitems` ( `position` int(11) NOT NULL DEFAULT '0', `quantity` int(11) NOT NULL DEFAULT '0', `owner` tinytext NOT NULL, - `petid` int(11) NOT NULL DEFAULT '-1', + `petid` int(11) unsigned UNIQUE DEFAULT NULL, `flag` int(11) NOT NULL, `expiration` bigint(20) NOT NULL DEFAULT '-1', `giftFrom` varchar(26) NOT NULL, @@ -16463,7 +16463,7 @@ INSERT INTO `nxcoupons` (`id`, `couponid`, `rate`, `activeday`, `starthour`, `en (40,5360042,2,254,0,24); CREATE TABLE IF NOT EXISTS `pets` ( - `petid` int(10) unsigned NOT NULL AUTO_INCREMENT, + `petid` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(13) DEFAULT NULL, `level` int(10) unsigned NOT NULL, `closeness` int(10) unsigned NOT NULL, @@ -16473,11 +16473,14 @@ CREATE TABLE IF NOT EXISTS `pets` ( PRIMARY KEY (`petid`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; +ALTER TABLE `inventoryitems` ADD CONSTRAINT `fk_itempetid` FOREIGN KEY (`petid`) REFERENCES `pets` (`petid`) ON DELETE SET NULL ; + CREATE TABLE IF NOT EXISTS `petignores` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, - `petid` int(10) unsigned NOT NULL , + `petid` int(11) unsigned NOT NULL , `itemid` int(10) unsigned NOT NULL , - PRIMARY KEY (`id`) + PRIMARY KEY (`id`), + CONSTRAINT `fk_petignorepetid` FOREIGN KEY (`petid`) REFERENCES `pets` (`petid`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `playerdiseases` ( @@ -20859,6 +20862,25 @@ INSERT INTO `shopitems` (`shopitemid`, `shopid`, `itemid`, `price`, `pitch`, `po (6531, 1337, 2040711, 1, 0, 62), (6532, 1337, 2340000, 1, 0, 63), (20020, 1337, 1082149, 1, 0, 64), +(20255, 1337, 2044503, 1, 0, 86), # 20255~20273: thanks to ozanrijen +(20256, 1337, 2044703, 1, 0, 87), +(20257, 1337, 2044603, 1, 0, 88), +(20258, 1337, 2043303, 1, 0, 89), +(20259, 1337, 2043103, 1, 0, 90), +(20260, 1337, 2043203, 1, 0, 91), +(20261, 1337, 2043003, 1, 0, 92), +(20262, 1337, 2044403, 1, 0, 93), +(20263, 1337, 2044303, 1, 0, 94), +(20264, 1337, 2043803, 1, 0, 95), +(20265, 1337, 2044103, 1, 0, 96), +(20266, 1337, 2044203, 1, 0, 97), +(20267, 1337, 2044003, 1, 0, 98), +(20268, 1337, 2043703, 1, 0, 99), +(20269, 1337, 2040806, 1, 0, 100), +(20270, 1337, 2040007, 1, 0, 101), +(20271, 1337, 2040506, 1, 0, 102), +(20272, 1337, 2040710, 1, 0, 103), +(20273, 1337, 2040711, 1, 0, 104), (6533, 9000069, 2022503, 0, 5, 1), (6534, 9000069, 2000004, 0, 5, 2), (6535, 9000069, 2022514, 0, 10, 3), @@ -21470,4 +21492,4 @@ ALTER TABLE `skills` /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; \ No newline at end of file diff --git a/src/client/MapleCharacter.java b/src/client/MapleCharacter.java index 43ad05aaeb..1488258ec0 100644 --- a/src/client/MapleCharacter.java +++ b/src/client/MapleCharacter.java @@ -142,7 +142,6 @@ import client.processor.action.PetAutopotProcessor; import constants.game.ExpTable; import constants.game.GameConstants; import constants.inventory.ItemConstants; -import constants.net.ServerConstants; import constants.skills.Aran; import constants.skills.Beginner; import constants.skills.Bishop; @@ -172,6 +171,9 @@ import constants.skills.Shadower; import constants.skills.Sniper; import constants.skills.Warrior; import constants.skills.ThunderBreaker; +import net.server.channel.services.ServiceType; +import net.server.channel.services.task.BaseService; +import net.server.channel.services.task.FaceExpressionService; import org.apache.mina.util.ConcurrentHashSet; public class MapleCharacter extends AbstractMapleCharacterObject { @@ -320,7 +322,6 @@ public class MapleCharacter extends AbstractMapleCharacterObject { private boolean loggedIn = false; private boolean useCS; //chaos scroll upon crafting item. private long npcCd; - private long petLootCd; private long lastHpDec = 0; private int newWarpMap = -1; private boolean canWarpMap = true; //only one "warp" must be used per call, and this will define the right one. @@ -398,8 +399,6 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } quests = new LinkedHashMap<>(); setPosition(new Point(0, 0)); - - petLootCd = Server.getInstance().getCurrentTime(); } private static MapleJob getJobStyleInternal(int jobid, byte opt) { @@ -439,7 +438,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { public static MapleCharacter getDefault(MapleClient c) { MapleCharacter ret = new MapleCharacter(); ret.client = c; - ret.gmLevel = 0; + ret.setGMLevel(0); ret.hp = 50; ret.setMaxHp(50); ret.mp = 5; @@ -569,14 +568,6 @@ public class MapleCharacter extends AbstractMapleCharacterObject { client.getSession().setAttribute(MapleClient.CLIENT_TRANSITION); } - public long getPetLootCd() { - return petLootCd; - } - - public void setPetLootCd(long cd) { - petLootCd = cd; - } - public boolean getCS() { return useCS; } @@ -822,7 +813,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { mainstat = localstr; secondarystat = localdex; } - return (int) (((weapon.getMaxDamageMultiplier() * mainstat + secondarystat) / 100.0) * watk); + return (int) Math.ceil(((weapon.getMaxDamageMultiplier() * mainstat + secondarystat) / 100.0) * watk); } public int calculateMaxBaseDamage(int watk) { @@ -838,7 +829,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } int attack = (int) Math.min(Math.floor((2 * getLevel() + 31) / 3), 31); - maxbasedamage = (int) (localstr * weapMulti + localdex) * attack / 100; + maxbasedamage = (int) Math.ceil((localstr * weapMulti + localdex) * attack / 100.0); } else { maxbasedamage = 1; } @@ -2346,6 +2337,10 @@ public class MapleCharacter extends AbstractMapleCharacterObject { ps.setInt(1, cid); ps.executeUpdate(); } + try (PreparedStatement ps = con.prepareStatement("DELETE FROM family_character WHERE cid = ?")) { + ps.setInt(1, cid); + ps.executeUpdate(); + } try (PreparedStatement ps = con.prepareStatement("DELETE FROM famelog WHERE characterid_to = ?")) { ps.setInt(1, cid); ps.executeUpdate(); @@ -2383,7 +2378,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } int petid = rs.getInt("petid"); - if(petid > -1) { + if(!rs.wasNull()) { try (PreparedStatement ps2 = con.prepareStatement("DELETE FROM pets WHERE petid = ?")) { ps2.setInt(1, petid); ps2.executeUpdate(); @@ -2850,7 +2845,9 @@ public class MapleCharacter extends AbstractMapleCharacterObject { long timeNow = Server.getInstance().getCurrentTime(); if(timeNow - lastExpression > 2000) { lastExpression = timeNow; - client.getChannelServer().registerFaceExpression(map, this, emote); + + FaceExpressionService service = (FaceExpressionService) client.getChannelServer().getServiceAccess(ServiceType.FACE_EXPRESSION); + service.registerFaceExpression(map, this, emote); } } @@ -5614,6 +5611,8 @@ public class MapleCharacter extends AbstractMapleCharacterObject { public void setGMLevel(int level) { this.gmLevel = Math.min(level, 6); this.gmLevel = Math.max(level, 0); + + whiteChat = gmLevel >= 4; // thanks ozanrijen for suggesting default white chat } public void closePartySearchInteractions() { @@ -6975,8 +6974,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { ret.gachaexp.set(rs.getInt("gachaexp")); ret.mapid = rs.getInt("map"); ret.initialSpawnPoint = rs.getInt("spawnpoint"); - - ret.gmLevel = rs.getInt("gm"); + ret.setGMLevel(rs.getInt("gm")); ret.world = rs.getByte("world"); ret.rank = rs.getInt("rank"); ret.rankMove = rs.getInt("rankMove"); @@ -7029,7 +7027,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { ret.inventory[MapleInventoryType.EQUIPPED.ordinal()] = this.getInventory(MapleInventoryType.EQUIPPED); - ret.gmLevel = this.gmLevel(); + ret.setGMLevel(this.gmLevel()); ret.world = this.getWorld(); ret.rank = this.getRank(); ret.rankMove = this.getRankMove(); @@ -7091,7 +7089,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { ret.loadCharSkillPoints(rs.getString("sp").split(",")); ret.meso.set(rs.getInt("meso")); ret.merchantmeso = rs.getInt("MerchantMesos"); - ret.gmLevel = rs.getInt("gm"); + ret.setGMLevel(rs.getInt("gm")); ret.skinColor = MapleSkinColor.getById(rs.getInt("skincolor")); ret.gender = rs.getInt("gender"); ret.job = MapleJob.getById(rs.getInt("job")); @@ -7187,11 +7185,14 @@ public class MapleCharacter extends AbstractMapleCharacterObject { PreparedStatement ps2, ps3; ResultSet rs2, rs3; - ps3 = con.prepareStatement("SELECT petid FROM inventoryitems WHERE characterid = ? AND petid > -1"); + ps3 = con.prepareStatement("SELECT petid FROM inventoryitems WHERE characterid = ? AND petid IS NOT NULL"); ps3.setInt(1, charid); rs3 = ps3.executeQuery(); while(rs3.next()) { int petId = rs3.getInt("petid"); + if (rs3.wasNull()) { + petId = -1; + } ps2 = con.prepareStatement("SELECT itemid FROM petignores WHERE petid = ?"); ps2.setInt(1, petId); @@ -7371,7 +7372,11 @@ public class MapleCharacter extends AbstractMapleCharacterObject { ps.setInt(1, charid); rs = ps.executeQuery(); while (rs.next()) { - ret.skills.put(SkillFactory.getSkill(rs.getInt("skillid")), new SkillEntry(rs.getByte("skilllevel"), rs.getInt("masterlevel"), rs.getLong("expiration"))); + Skill pSkill = SkillFactory.getSkill(rs.getInt("skillid")); + if(pSkill != null) // edit reported by shavit, thanks Zein for noticing an NPE here + { + ret.skills.put(pSkill, new SkillEntry(rs.getByte("skilllevel"), rs.getInt("masterlevel"), rs.getLong("expiration"))); + } } rs.close(); ps.close(); diff --git a/src/client/inventory/Item.java b/src/client/inventory/Item.java index 0f33769d76..fdd8712292 100644 --- a/src/client/inventory/Item.java +++ b/src/client/inventory/Item.java @@ -126,7 +126,11 @@ public class Item implements Comparable { public int getPetId() { return petid; } - + + public Integer getPetIdForDb() { + return petid > -1 ? petid : null; + } + @Override public int compareTo(Item other) { if (this.id < other.getItemId()) { diff --git a/src/client/inventory/ItemFactory.java b/src/client/inventory/ItemFactory.java index bce04120a0..fa7f4fac97 100644 --- a/src/client/inventory/ItemFactory.java +++ b/src/client/inventory/ItemFactory.java @@ -173,7 +173,12 @@ public enum ItemFactory { if (mit.equals(MapleInventoryType.EQUIP) || mit.equals(MapleInventoryType.EQUIPPED)) { items.add(new Pair(loadEquipFromResultSet(rs), mit)); } else { - Item item = new Item(rs.getInt("itemid"), (byte) rs.getInt("position"), (short) rs.getInt("quantity"), rs.getInt("petid")); + int petid = rs.getInt("petid"); + if (rs.wasNull()) { + petid = -1; + } + + Item item = new Item(rs.getInt("itemid"), (byte) rs.getInt("position"), (short) rs.getInt("quantity"), petid); item.setOwner(rs.getString("owner")); item.setExpiration(rs.getLong("expiration")); item.setGiftFrom(rs.getString("giftFrom")); @@ -229,7 +234,7 @@ public enum ItemFactory { ps.setInt(6, item.getPosition()); ps.setInt(7, item.getQuantity()); ps.setString(8, item.getOwner()); - ps.setInt(9, item.getPetId()); + ps.setObject(9, item.getPetIdForDb(), java.sql.Types.INTEGER); ps.setInt(10, item.getFlag()); ps.setLong(11, item.getExpiration()); ps.setString(12, item.getGiftFrom()); @@ -329,7 +334,12 @@ public enum ItemFactory { items.add(new Pair(loadEquipFromResultSet(rs), mit)); } else { if(bundles > 0) { - Item item = new Item(rs.getInt("itemid"), (byte) rs.getInt("position"), (short)(bundles * rs.getInt("quantity")), rs.getInt("petid")); + int petid = rs.getInt("petid"); + if (rs.wasNull()) { + petid = -1; + } + + Item item = new Item(rs.getInt("itemid"), (byte) rs.getInt("position"), (short)(bundles * rs.getInt("quantity")), petid); item.setOwner(rs.getString("owner")); item.setExpiration(rs.getLong("expiration")); item.setGiftFrom(rs.getString("giftFrom")); @@ -404,7 +414,7 @@ public enum ItemFactory { ps.setInt(6, item.getPosition()); ps.setInt(7, item.getQuantity()); ps.setString(8, item.getOwner()); - ps.setInt(9, item.getPetId()); + ps.setObject(9, item.getPetIdForDb(), java.sql.Types.INTEGER); ps.setInt(10, item.getFlag()); ps.setLong(11, item.getExpiration()); ps.setString(12, item.getGiftFrom()); diff --git a/src/client/inventory/MaplePet.java b/src/client/inventory/MaplePet.java index a3cd38cb42..f26944c5fa 100644 --- a/src/client/inventory/MaplePet.java +++ b/src/client/inventory/MaplePet.java @@ -98,75 +98,11 @@ public class MaplePet extends Item { } } - private static void unreferenceMissingPetsFromInventoryDb() { - PreparedStatement ps = null; - Connection con = null; - try { - con = DatabaseConnection.getConnection(); - - ps = con.prepareStatement("UPDATE inventoryitems SET petid = -1, expiration = 0 WHERE petid != -1 AND petid NOT IN (SELECT petid FROM pets)"); - ps.executeUpdate(); - - ps.close(); - con.close(); - } catch(SQLException ex) { - ex.printStackTrace(); - } finally { - try { - if(ps != null && !ps.isClosed()) { - ps.close(); - } - if(con != null && !con.isClosed()) { - con.close(); - } - } catch (SQLException e) { - e.printStackTrace(); - } - } - } - - private static void deleteMissingPetsFromDb() { - PreparedStatement ps = null; - Connection con = null; - try { - con = DatabaseConnection.getConnection(); - - ps = con.prepareStatement("DELETE FROM pets WHERE petid NOT IN (SELECT petid FROM inventoryitems WHERE petid != -1)"); - ps.executeUpdate(); - - ps.close(); - con.close(); - } catch(SQLException ex) { - ex.printStackTrace(); - } finally { - try { - if(ps != null && !ps.isClosed()) { - ps.close(); - } - if(con != null && !con.isClosed()) { - con.close(); - } - } catch (SQLException e) { - e.printStackTrace(); - } - } - } - - public static void clearMissingPetsFromDb() { - unreferenceMissingPetsFromInventoryDb(); - deleteMissingPetsFromDb(); - } - public static void deleteFromDb(MapleCharacter owner, int petid) { try { Connection con = DatabaseConnection.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM pets WHERE `petid` = ?"); - ps.setInt(1, petid); - ps.executeUpdate(); - ps.close(); - - ps = con.prepareStatement("DELETE FROM petignores WHERE `petid` = ?"); // thanks Vcoc for detecting petignores remaining after deletion + PreparedStatement ps = con.prepareStatement("DELETE FROM pets WHERE `petid` = ?"); // thanks Vcoc for detecting petignores remaining after deletion ps.setInt(1, petid); ps.executeUpdate(); ps.close(); diff --git a/src/client/inventory/manipulator/MapleCashidGenerator.java b/src/client/inventory/manipulator/MapleCashidGenerator.java index cba7bf1e18..52fd28f8d9 100644 --- a/src/client/inventory/manipulator/MapleCashidGenerator.java +++ b/src/client/inventory/manipulator/MapleCashidGenerator.java @@ -41,7 +41,10 @@ public class MapleCashidGenerator { ResultSet rs = ps.executeQuery(); while (rs.next()) { - existentCashids.add(rs.getInt(1)); + int id = rs.getInt(1); + if (!rs.wasNull()) { + existentCashids.add(id); + } } rs.close(); diff --git a/src/client/processor/action/SpawnPetProcessor.java b/src/client/processor/action/SpawnPetProcessor.java index 0c95d973ff..0f45f86c79 100644 --- a/src/client/processor/action/SpawnPetProcessor.java +++ b/src/client/processor/action/SpawnPetProcessor.java @@ -62,7 +62,7 @@ public class SpawnPetProcessor { long expiration = chr.getInventory(MapleInventoryType.CASH).getItem(slot).getExpiration(); MapleInventoryManipulator.removeById(c, MapleInventoryType.CASH, petid, (short) 1, false, false); MapleInventoryManipulator.addById(c, evolveid, (short) 1, null, petId, expiration); - MaplePet.deleteFromDb(chr, petid); + c.announce(MaplePacketCreator.enableActions()); return; } diff --git a/src/config/ServerConfig.java b/src/config/ServerConfig.java index ccc0a8f7c8..b8b0a59dfa 100644 --- a/src/config/ServerConfig.java +++ b/src/config/ServerConfig.java @@ -154,7 +154,6 @@ public class ServerConfig { public int MAX_AP; public int MAX_EVENT_LEVELS; public long BLOCK_NPC_RACE_CONDT; - public long PET_LOOT_UPON_ATTACK; public int TOT_MOB_QUEST_REQUIREMENT; public int MOB_REACTOR_REFRESH_TIME; public int PARTY_SEARCH_REENTRY_LIMIT; diff --git a/src/net/server/Server.java b/src/net/server/Server.java index 9ca9dfdf39..1f1fbb7398 100644 --- a/src/net/server/Server.java +++ b/src/net/server/Server.java @@ -21,7 +21,6 @@ */ package net.server; -import java.io.FileInputStream; import java.io.IOException; import java.net.InetSocketAddress; import java.security.Security; diff --git a/src/net/server/channel/Channel.java b/src/net/server/channel/Channel.java index 13542c73b2..889774edbb 100644 --- a/src/net/server/channel/Channel.java +++ b/src/net/server/channel/Channel.java @@ -50,7 +50,6 @@ import net.mina.MapleCodecFactory; import net.server.PlayerStorage; import net.server.Server; -import net.server.channel.task.*; import net.server.world.World; import net.server.world.MapleParty; @@ -77,7 +76,9 @@ import server.maps.MapleMiniDungeon; import tools.MaplePacketCreator; import tools.Pair; import client.MapleCharacter; -import client.status.MonsterStatusEffect; +import net.server.channel.services.ServiceType; +import net.server.channel.services.ServicesManager; +import net.server.channel.services.task.BaseService; import server.maps.MapleMiniDungeonInfo; public final class Channel { @@ -89,13 +90,7 @@ public final class Channel { private String ip, serverMessage; private MapleMapManager mapManager; private EventScriptManager eventSM; - private MobStatusScheduler mobStatusSchedulers[] = new MobStatusScheduler[YamlConfig.config.server.CHANNEL_LOCKS]; - private MobAnimationScheduler mobAnimationSchedulers[] = new MobAnimationScheduler[YamlConfig.config.server.CHANNEL_LOCKS]; - private MobClearSkillScheduler mobClearSkillSchedulers[] = new MobClearSkillScheduler[YamlConfig.config.server.CHANNEL_LOCKS]; - private MobMistScheduler mobMistSchedulers[] = new MobMistScheduler[YamlConfig.config.server.CHANNEL_LOCKS]; - private FaceExpressionScheduler faceExpressionSchedulers[] = new FaceExpressionScheduler[YamlConfig.config.server.CHANNEL_LOCKS]; - private EventScheduler eventSchedulers[] = new EventScheduler[YamlConfig.config.server.CHANNEL_LOCKS]; - private OverallScheduler channelSchedulers[] = new OverallScheduler[YamlConfig.config.server.CHANNEL_LOCKS]; + private ServicesManager services = new ServicesManager(); private Map hiredMerchants = new HashMap<>(); private final Map storedVars = new HashMap<>(); private Set playersAway = new HashSet<>(); @@ -173,17 +168,7 @@ public final class Channel { dojoTask[i] = null; } - for(int i = 0; i < YamlConfig.config.server.CHANNEL_LOCKS; i++) { - faceLock[i] = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CHANNEL_FACEEXPRS, true); - - mobStatusSchedulers[i] = new MobStatusScheduler(); - mobAnimationSchedulers[i] = new MobAnimationScheduler(); - mobClearSkillSchedulers[i] = new MobClearSkillScheduler(); - mobMistSchedulers[i] = new MobMistScheduler(); - faceExpressionSchedulers[i] = new FaceExpressionScheduler(faceLock[i]); - eventSchedulers[i] = new EventScheduler(); - channelSchedulers[i] = new OverallScheduler(); - } + services = new ServicesManager(); System.out.println(" Channel " + getId() + ": Listening on port " + port); } catch (Exception e) { @@ -191,15 +176,23 @@ public final class Channel { } } - public void reloadEventScriptManager(){ + public synchronized void reloadEventScriptManager(){ + if (finishedShutdown) { + return; + } + eventSM.cancel(); eventSM = null; eventSM = new EventScriptManager(this, getEvents()); eventSM.init(); } - public final void shutdown() { + public final synchronized void shutdown() { try { + if (finishedShutdown) { + return; + } + System.out.println("Shutting down Channel " + channel + " on World " + world); closeAllMerchants(); @@ -227,6 +220,10 @@ public final class Channel { } } + private void closeChannelServices() { + services.shutdown(); + } + private void closeChannelSchedules() { for(int i = 0; i < 20; i++) { if(dojoTask[i] != null) { @@ -234,44 +231,8 @@ public final class Channel { dojoTask[i] = null; } } - - for(int i = 0; i < YamlConfig.config.server.CHANNEL_LOCKS; i++) { - if(mobStatusSchedulers[i] != null) { - mobStatusSchedulers[i].dispose(); - mobStatusSchedulers[i] = null; - } - - if(mobAnimationSchedulers[i] != null) { - mobAnimationSchedulers[i].dispose(); - mobAnimationSchedulers[i] = null; - } - - if(mobClearSkillSchedulers[i] != null) { - mobClearSkillSchedulers[i].dispose(); - mobClearSkillSchedulers[i] = null; - } - - if(mobMistSchedulers[i] != null) { - mobMistSchedulers[i].dispose(); - mobMistSchedulers[i] = null; - } - - if(faceExpressionSchedulers[i] != null) { - faceExpressionSchedulers[i].dispose(); - faceExpressionSchedulers[i] = null; - } - - if(eventSchedulers[i] != null) { - eventSchedulers[i].dispose(); - eventSchedulers[i] = null; - } - - if(channelSchedulers[i] != null) { - channelSchedulers[i].dispose(); - channelSchedulers[i] = null; - } - } + closeChannelServices(); disposeLocks(); } @@ -315,7 +276,11 @@ public final class Channel { public MapleMapManager getMapFactory() { return mapManager; } - + + public BaseService getServiceAccess(ServiceType sv) { + return services.getAccess(sv).getService(); + } + public int getWorld() { return world; } @@ -1030,84 +995,6 @@ public final class Channel { return !usedMC.contains(getMonsterCarnivalRoom(cpq1, field)); } - private static int getChannelSchedulerIndex(int mapid) { - int section = 1000000000 / YamlConfig.config.server.CHANNEL_LOCKS; - return mapid / section; - } - - public void registerMobStatus(int mapid, MonsterStatusEffect mse, Runnable cancelAction, long duration) { - registerMobStatus(mapid, mse, cancelAction, duration, null, -1); - } - - public void registerMobStatus(int mapid, MonsterStatusEffect mse, Runnable cancelAction, long duration, Runnable overtimeAction, int overtimeDelay) { - mobStatusSchedulers[getChannelSchedulerIndex(mapid)].registerMobStatus(mse, cancelAction, duration, overtimeAction, overtimeDelay); - } - - public void interruptMobStatus(int mapid, MonsterStatusEffect mse) { - mobStatusSchedulers[getChannelSchedulerIndex(mapid)].interruptMobStatus(mse); - } - - public boolean registerMobOnAnimationEffect(int mapid, int mobHash, long delay) { - return mobAnimationSchedulers[getChannelSchedulerIndex(mapid)].registerAnimationMode(mobHash, delay); - } - - public void registerMobClearSkillAction(int mapid, Runnable runAction, long delay) { - mobClearSkillSchedulers[getChannelSchedulerIndex(mapid)].registerClearSkillAction(runAction, delay); - } - - public void registerMobMistCancelAction(int mapid, Runnable runAction, long delay) { - mobMistSchedulers[getChannelSchedulerIndex(mapid)].registerMistCancelAction(runAction, delay); - } - - public void registerEventAction(int mapid, Runnable runAction, long delay) { - eventSchedulers[getChannelSchedulerIndex(mapid)].registerDelayedAction(runAction, delay); - } - - public void registerOverallAction(int mapid, Runnable runAction, long delay) { - channelSchedulers[getChannelSchedulerIndex(mapid)].registerDelayedAction(runAction, delay); - } - - public void forceRunOverallAction(int mapid, Runnable runAction) { - channelSchedulers[getChannelSchedulerIndex(mapid)].forceRunDelayedAction(runAction); - } - - public void registerFaceExpression(final MapleMap map, final MapleCharacter chr, int emote) { - int lockid = getChannelSchedulerIndex(map.getId()); - - Runnable cancelAction = new Runnable() { - @Override - public void run() { - if(chr.isLoggedinWorld()) { - map.broadcastMessage(chr, MaplePacketCreator.facialExpression(chr, 0), false); - } - } - }; - - faceLock[lockid].lock(); - try { - if(!chr.isLoggedinWorld()) { - return; - } - - faceExpressionSchedulers[lockid].registerFaceExpression(chr.getId(), cancelAction); - } finally { - faceLock[lockid].unlock(); - } - - map.broadcastMessage(chr, MaplePacketCreator.facialExpression(chr, emote), false); - } - - public void unregisterFaceExpression(int mapid, MapleCharacter chr) { - int lockid = getChannelSchedulerIndex(mapid); - - faceLock[lockid].lock(); - try { - faceExpressionSchedulers[lockid].unregisterFaceExpression(chr.getId()); - } finally { - faceLock[lockid].unlock(); - } - } - public void debugMarriageStatus() { System.out.println(" ----- WORLD DATA -----"); getWorldServer().debugMarriageStatus(); diff --git a/src/net/server/channel/handlers/AbstractDealDamageHandler.java b/src/net/server/channel/handlers/AbstractDealDamageHandler.java index cee5019ea5..a39a2155d7 100644 --- a/src/net/server/channel/handlers/AbstractDealDamageHandler.java +++ b/src/net/server/channel/handlers/AbstractDealDamageHandler.java @@ -656,7 +656,7 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl // Find the base damage to base futher calculations on. // Several skills have their own formula in this section. - long calcDmgMax = 0; + long calcDmgMax; if(magic && ret.skill != 0) { // thanks onechord for noticing a few false positives stemming from maxdmg as 0 calcDmgMax = (long) (Math.ceil((chr.getTotalMagic() * Math.ceil(chr.getTotalMagic() / 1000.0) + chr.getTotalMagic()) / 30.0) + Math.ceil(chr.getTotalInt() / 200.0)); @@ -846,7 +846,7 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl } } else if (ret.skill == Aran.BODY_PRESSURE) { if (monster != null) { - int bodyPressureDmg = monster.getMaxHp() * SkillFactory.getSkill(Aran.BODY_PRESSURE).getEffect(ret.skilllevel).getDamage() / 100; + int bodyPressureDmg = (int) Math.ceil(monster.getMaxHp() * SkillFactory.getSkill(Aran.BODY_PRESSURE).getEffect(ret.skilllevel).getDamage() / 100.0); if (bodyPressureDmg > calcDmgMax) { calcDmgMax = bodyPressureDmg; } diff --git a/src/net/server/channel/handlers/CloseRangeDamageHandler.java b/src/net/server/channel/handlers/CloseRangeDamageHandler.java index b9240062d8..d7792beec8 100644 --- a/src/net/server/channel/handlers/CloseRangeDamageHandler.java +++ b/src/net/server/channel/handlers/CloseRangeDamageHandler.java @@ -26,10 +26,6 @@ import java.util.Iterator; import java.util.List; import config.YamlConfig; -import server.MapleStatEffect; -import tools.MaplePacketCreator; -import tools.Pair; -import tools.data.input.SeekableLittleEndianAccessor; import client.MapleBuffStat; import client.MapleCharacter; import client.MapleClient; @@ -37,7 +33,6 @@ import client.MapleJob; import client.Skill; import client.SkillFactory; import constants.game.GameConstants; -import constants.net.ServerConstants; import constants.skills.Crusader; import constants.skills.DawnWarrior; import constants.skills.DragonKnight; @@ -45,13 +40,16 @@ import constants.skills.Hero; import constants.skills.NightWalker; import constants.skills.Rogue; import constants.skills.WindArcher; +import server.MapleStatEffect; +import tools.MaplePacketCreator; +import tools.Pair; +import tools.data.input.SeekableLittleEndianAccessor; public final class CloseRangeDamageHandler extends AbstractDealDamageHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { MapleCharacter chr = c.getPlayer(); - //chr.setPetLootCd(currentServerTime()); /*long timeElapsed = currentServerTime() - chr.getAutobanManager().getLastSpam(8); if(timeElapsed < 300) { diff --git a/src/net/server/channel/handlers/MagicDamageHandler.java b/src/net/server/channel/handlers/MagicDamageHandler.java index 3a8e812b64..fa82dbfd1c 100644 --- a/src/net/server/channel/handlers/MagicDamageHandler.java +++ b/src/net/server/channel/handlers/MagicDamageHandler.java @@ -21,25 +21,24 @@ */ package net.server.channel.handlers; -import config.YamlConfig; -import server.MapleStatEffect; -import tools.MaplePacketCreator; -import tools.data.input.SeekableLittleEndianAccessor; import client.MapleBuffStat; import client.MapleCharacter; import client.MapleClient; import client.Skill; import client.SkillFactory; +import config.YamlConfig; import constants.skills.Bishop; import constants.skills.Evan; import constants.skills.FPArchMage; import constants.skills.ILArchMage; +import server.MapleStatEffect; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; public final class MagicDamageHandler extends AbstractDealDamageHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { MapleCharacter chr = c.getPlayer(); - //chr.setPetLootCd(currentServerTime()); /*long timeElapsed = currentServerTime() - chr.getAutobanManager().getLastSpam(8); if(timeElapsed < 300) { diff --git a/src/net/server/channel/handlers/MoveLifeHandler.java b/src/net/server/channel/handlers/MoveLifeHandler.java index 3097dffbfc..ebfd0a20ff 100644 --- a/src/net/server/channel/handlers/MoveLifeHandler.java +++ b/src/net/server/channel/handlers/MoveLifeHandler.java @@ -55,6 +55,10 @@ public final class MoveLifeHandler extends AbstractMovementPacketHandler { MapleCharacter player = c.getPlayer(); MapleMap map = player.getMap(); + if (player.isChangingMaps()) { // thanks Lame for noticing mob movement shuffle (mob OID on different maps) happening on map transitions + return; + } + int objectid = slea.readInt(); short moveid = slea.readShort(); MapleMapObject mmo = map.getMapObject(objectid); diff --git a/src/net/server/channel/handlers/NPCTalkHandler.java b/src/net/server/channel/handlers/NPCTalkHandler.java index 4c0b978115..71f71c345c 100644 --- a/src/net/server/channel/handlers/NPCTalkHandler.java +++ b/src/net/server/channel/handlers/NPCTalkHandler.java @@ -59,16 +59,19 @@ public final class NPCTalkHandler extends AbstractMaplePacketHandler { c.announce(MaplePacketCreator.enableActions()); return; } - if(npc.getId() >= 9100100 && npc.getId() <= 9100200) { - // Custom handling for gachapon scripts to reduce the amount of scripts needed. + + // Custom handling to reduce the amount of scripts needed. + if (npc.getId() >= 9100100 && npc.getId() <= 9100200) { NPCScriptManager.getInstance().start(c, npc.getId(), "gachapon", null); + } else if (npc.getName().endsWith("Maple TV")) { + NPCScriptManager.getInstance().start(c, npc.getId(), "mapleTV", null); } else { boolean hasNpcScript = NPCScriptManager.getInstance().start(c, npc.getId(), oid, null); if (!hasNpcScript) { if (!npc.hasShop()) { FilePrinter.printError(FilePrinter.NPC_UNCODED, "NPC " + npc.getName() + "(" + npc.getId() + ") is not coded."); return; - } else if(c.getPlayer().getShop() != null) { + } else if (c.getPlayer().getShop() != null) { c.announce(MaplePacketCreator.enableActions()); return; } diff --git a/src/net/server/channel/handlers/PetLootHandler.java b/src/net/server/channel/handlers/PetLootHandler.java index 9cd57414a5..8b794344f2 100644 --- a/src/net/server/channel/handlers/PetLootHandler.java +++ b/src/net/server/channel/handlers/PetLootHandler.java @@ -26,13 +26,11 @@ import java.util.Set; import client.MapleCharacter; import client.MapleClient; import client.inventory.MaplePet; -import config.YamlConfig; import net.AbstractMaplePacketHandler; import server.maps.MapleMapItem; import server.maps.MapleMapObject; import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; -import constants.net.ServerConstants; /** * @author TheRamon @@ -42,10 +40,6 @@ public final class PetLootHandler extends AbstractMaplePacketHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { MapleCharacter chr = c.getPlayer(); - if(currentServerTime() - chr.getPetLootCd() < YamlConfig.config.server.PET_LOOT_UPON_ATTACK) { - c.announce(MaplePacketCreator.enableActions()); - return; - } int petIndex = chr.getPetIndex(slea.readInt()); MaplePet pet = chr.getPet(petIndex); diff --git a/src/net/server/channel/handlers/RangedAttackHandler.java b/src/net/server/channel/handlers/RangedAttackHandler.java index bf45884a52..f2d33047f4 100644 --- a/src/net/server/channel/handlers/RangedAttackHandler.java +++ b/src/net/server/channel/handlers/RangedAttackHandler.java @@ -21,13 +21,6 @@ along with this program. If not, see . */ package net.server.channel.handlers; -import client.inventory.manipulator.MapleInventoryManipulator; -import config.YamlConfig; -import server.MapleItemInformationProvider; -import server.MapleStatEffect; -import tools.MaplePacketCreator; -import tools.Randomizer; -import tools.data.input.SeekableLittleEndianAccessor; import client.MapleBuffStat; import client.MapleCharacter; import client.MapleClient; @@ -37,8 +30,9 @@ import client.inventory.Item; import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; import client.inventory.MapleWeaponType; +import client.inventory.manipulator.MapleInventoryManipulator; +import config.YamlConfig; import constants.inventory.ItemConstants; -import constants.net.ServerConstants; import constants.skills.Aran; import constants.skills.Buccaneer; import constants.skills.NightLord; @@ -46,13 +40,18 @@ import constants.skills.NightWalker; import constants.skills.Shadower; import constants.skills.ThunderBreaker; import constants.skills.WindArcher; +import server.MapleItemInformationProvider; +import server.MapleStatEffect; +import tools.MaplePacketCreator; +import tools.Randomizer; +import tools.data.input.SeekableLittleEndianAccessor; + public final class RangedAttackHandler extends AbstractDealDamageHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { MapleCharacter chr = c.getPlayer(); - //chr.setPetLootCd(currentServerTime()); /*long timeElapsed = currentServerTime() - chr.getAutobanManager().getLastSpam(8); if(timeElapsed < 300) { diff --git a/src/net/server/channel/handlers/TakeDamageHandler.java b/src/net/server/channel/handlers/TakeDamageHandler.java index 054e6f780c..9b2dfd610d 100644 --- a/src/net/server/channel/handlers/TakeDamageHandler.java +++ b/src/net/server/channel/handlers/TakeDamageHandler.java @@ -213,7 +213,7 @@ public final class TakeDamageHandler extends AbstractMaplePacketHandler { map.broadcastMessage(chr, MaplePacketCreator.damageMonster(oid, bouncedamage), false, true); attacker.aggroMonsterDamage(chr, bouncedamage); } - MapleStatEffect bPressure = chr.getBuffEffect(MapleBuffStat.COMBO_BARRIER); + MapleStatEffect bPressure = chr.getBuffEffect(MapleBuffStat.BODY_PRESSURE); if (bPressure != null) { Skill skill = SkillFactory.getSkill(Aran.BODY_PRESSURE); if (!attacker.alreadyBuffedStats().contains(MonsterStatus.NEUTRALISE)) { diff --git a/src/net/server/channel/task/BaseScheduler.java b/src/net/server/channel/services/BaseScheduler.java similarity index 99% rename from src/net/server/channel/task/BaseScheduler.java rename to src/net/server/channel/services/BaseScheduler.java index 57579386c4..bf9ed40a02 100644 --- a/src/net/server/channel/task/BaseScheduler.java +++ b/src/net/server/channel/services/BaseScheduler.java @@ -17,7 +17,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.channel.task; +package net.server.channel.services; import config.YamlConfig; import java.util.Collections; diff --git a/src/net/server/channel/task/SchedulerListener.java b/src/net/server/channel/services/SchedulerListener.java similarity index 96% rename from src/net/server/channel/task/SchedulerListener.java rename to src/net/server/channel/services/SchedulerListener.java index fa3e82688b..2b4865dd61 100644 --- a/src/net/server/channel/task/SchedulerListener.java +++ b/src/net/server/channel/services/SchedulerListener.java @@ -17,7 +17,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.channel.task; +package net.server.channel.services; import java.util.List; diff --git a/src/net/server/channel/task/MobClearSkillScheduler.java b/src/net/server/channel/services/Service.java similarity index 54% rename from src/net/server/channel/task/MobClearSkillScheduler.java rename to src/net/server/channel/services/Service.java index 7c1880269d..580d6fee86 100644 --- a/src/net/server/channel/task/MobClearSkillScheduler.java +++ b/src/net/server/channel/services/Service.java @@ -1,6 +1,6 @@ /* - This file is part of the HeavenMS MapleStory Server - Copyleft (L) 2016 - 2018 RonanLana + This file is part of the HeavenMS MapleStory Server, commands OdinMS-based + Copyleft (L) 2016 - 2019 RonanLana This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as @@ -17,20 +17,36 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.channel.task; +package net.server.channel.services; -import net.server.audit.locks.MonitoredLockType; +import net.server.channel.services.task.BaseService; /** * * @author Ronan */ -public class MobClearSkillScheduler extends BaseScheduler { - public MobClearSkillScheduler() { - super(MonitoredLockType.CHANNEL_MOBSKILL); +public class Service { + + private Class cls; + private BaseService service; + + public Service(Class s) { + try { + cls = s; + service = (BaseService) cls.getConstructor().newInstance(); + } catch (Exception e) { + e.printStackTrace(); + } } - public void registerClearSkillAction(Runnable runAction, long delay) { - registerEntry(runAction, runAction, delay); + public T getService() { + return cls.cast(service); } + + public void dispose() { + service.dispose(); + service = null; + } + } + diff --git a/src/net/server/channel/services/ServiceType.java b/src/net/server/channel/services/ServiceType.java new file mode 100644 index 0000000000..47e5097eed --- /dev/null +++ b/src/net/server/channel/services/ServiceType.java @@ -0,0 +1,48 @@ +/* + This file is part of the HeavenMS MapleStory Server, commands OdinMS-based + Copyleft (L) 2016 - 2019 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.services; + +import net.server.channel.services.task.*; + +/** + * + * @author Ronan + */ +public enum ServiceType { + + MOB_STATUS(MobStatusService.class), + MOB_ANIMATION(MobAnimationService.class), + MOB_CLEAR_SKILL(MobClearSkillService.class), + MOB_MIST(MobMistService.class), + FACE_EXPRESSION(FaceExpressionService.class), + EVENT(EventService.class), + OVERALL(OverallService.class); + + private Class s; + + private ServiceType(Class service) { + s = service; + } + + public Service createService() { + return new Service(s); + } + +} diff --git a/src/net/server/channel/task/FaceExpressionScheduler.java b/src/net/server/channel/services/ServicesManager.java similarity index 53% rename from src/net/server/channel/task/FaceExpressionScheduler.java rename to src/net/server/channel/services/ServicesManager.java index b4ecc857a4..a183f2ca6a 100644 --- a/src/net/server/channel/task/FaceExpressionScheduler.java +++ b/src/net/server/channel/services/ServicesManager.java @@ -1,6 +1,6 @@ /* - This file is part of the HeavenMS MapleStory Server - Copyleft (L) 2016 - 2018 RonanLana + This file is part of the HeavenMS MapleStory Server, commands OdinMS-based + Copyleft (L) 2016 - 2019 RonanLana This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as @@ -17,26 +17,34 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.channel.task; - -import java.util.Collections; -import net.server.audit.locks.MonitoredLockType; -import net.server.audit.locks.MonitoredReentrantLock; +package net.server.channel.services; /** * * @author Ronan */ -public class FaceExpressionScheduler extends BaseScheduler { - public FaceExpressionScheduler(final MonitoredReentrantLock channelFaceLock) { - super(MonitoredLockType.CHANNEL_FACESCHDL, Collections.singletonList(channelFaceLock)); +public class ServicesManager { + + private Service[] services; + + public ServicesManager() { + ServiceType[] serviceTypes = ServiceType.values(); + + services = new Service[serviceTypes.length]; + for (ServiceType type : serviceTypes) { + services[type.ordinal()] = type.createService(); + } } - public void registerFaceExpression(Integer characterId, Runnable runAction) { - registerEntry(characterId, runAction, 5000); + public Service getAccess(ServiceType s) { + return services[s.ordinal()]; } - public void unregisterFaceExpression(Integer characterId) { - interruptEntry(characterId); + public void shutdown() { + for (int i = 0; i < ServiceType.values().length; i++) { + services[i].dispose(); + } + services = null; } + } diff --git a/src/net/server/channel/task/EventScheduler.java b/src/net/server/channel/services/task/BaseService.java similarity index 65% rename from src/net/server/channel/task/EventScheduler.java rename to src/net/server/channel/services/task/BaseService.java index 6cb5b2539f..a17ccf207e 100644 --- a/src/net/server/channel/task/EventScheduler.java +++ b/src/net/server/channel/services/task/BaseService.java @@ -1,6 +1,6 @@ /* - This file is part of the HeavenMS MapleStory Server - Copyleft (L) 2016 - 2018 RonanLana + This file is part of the HeavenMS MapleStory Server, commands OdinMS-based + Copyleft (L) 2016 - 2019 RonanLana This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as @@ -17,20 +17,21 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.channel.task; +package net.server.channel.services.task; -import net.server.audit.locks.MonitoredLockType; +import config.YamlConfig; /** * * @author Ronan */ -public class EventScheduler extends BaseScheduler { - public EventScheduler() { - super(MonitoredLockType.CHANNEL_EVENTS); +public abstract class BaseService { + + protected static int getChannelSchedulerIndex(int mapid) { + int section = 1000000000 / YamlConfig.config.server.CHANNEL_LOCKS; + return mapid / section; } - public void registerDelayedAction(Runnable runAction, long delay) { - registerEntry(runAction, runAction, delay); - } + public abstract void dispose(); + } diff --git a/src/net/server/channel/services/task/EventService.java b/src/net/server/channel/services/task/EventService.java new file mode 100644 index 0000000000..f9b6a6c077 --- /dev/null +++ b/src/net/server/channel/services/task/EventService.java @@ -0,0 +1,65 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2018 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.services.task; + +import config.YamlConfig; +import net.server.audit.locks.MonitoredLockType; +import net.server.channel.services.BaseScheduler; + +/** + * + * @author Ronan + */ +public class EventService extends BaseService { + + private EventScheduler eventSchedulers[] = new EventScheduler[YamlConfig.config.server.CHANNEL_LOCKS]; + + public EventService() { + for(int i = 0; i < YamlConfig.config.server.CHANNEL_LOCKS; i++) { + eventSchedulers[i] = new EventScheduler(); + } + } + + public void dispose() { + for(int i = 0; i < YamlConfig.config.server.CHANNEL_LOCKS; i++) { + if(eventSchedulers[i] != null) { + eventSchedulers[i].dispose(); + eventSchedulers[i] = null; + } + } + } + + public void registerEventAction(int mapid, Runnable runAction, long delay) { + eventSchedulers[getChannelSchedulerIndex(mapid)].registerDelayedAction(runAction, delay); + } + + private class EventScheduler extends BaseScheduler { + + public EventScheduler() { + super(MonitoredLockType.CHANNEL_EVENTS); + } + + public void registerDelayedAction(Runnable runAction, long delay) { + registerEntry(runAction, runAction, delay); + } + + } + +} diff --git a/src/net/server/channel/services/task/FaceExpressionService.java b/src/net/server/channel/services/task/FaceExpressionService.java new file mode 100644 index 0000000000..968b3d6c0c --- /dev/null +++ b/src/net/server/channel/services/task/FaceExpressionService.java @@ -0,0 +1,128 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2018 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.services.task; + +import client.MapleCharacter; +import config.YamlConfig; +import java.util.Collections; +import net.server.audit.LockCollector; +import net.server.audit.locks.MonitoredLockType; +import net.server.audit.locks.MonitoredReentrantLock; +import net.server.audit.locks.factory.MonitoredReentrantLockFactory; +import net.server.channel.services.BaseScheduler; +import server.maps.MapleMap; +import tools.MaplePacketCreator; + +/** + * + * @author Ronan + */ +public class FaceExpressionService extends BaseService { + + private FaceExpressionScheduler faceExpressionSchedulers[] = new FaceExpressionScheduler[YamlConfig.config.server.CHANNEL_LOCKS]; + private MonitoredReentrantLock faceLock[] = new MonitoredReentrantLock[YamlConfig.config.server.CHANNEL_LOCKS]; + + public FaceExpressionService() { + for(int i = 0; i < YamlConfig.config.server.CHANNEL_LOCKS; i++) { + faceLock[i] = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CHANNEL_FACEEXPRS, true); + faceExpressionSchedulers[i] = new FaceExpressionScheduler(faceLock[i]); + } + } + + private void emptyLocks() { + for(int i = 0; i < YamlConfig.config.server.CHANNEL_LOCKS; i++) { + faceLock[i] = faceLock[i].dispose(); + } + } + + private void disposeLocks() { + LockCollector.getInstance().registerDisposeAction(new Runnable() { + @Override + public void run() { + emptyLocks(); + } + }); + } + + public void dispose() { + for(int i = 0; i < YamlConfig.config.server.CHANNEL_LOCKS; i++) { + if(faceExpressionSchedulers[i] != null) { + faceExpressionSchedulers[i].dispose(); + faceExpressionSchedulers[i] = null; + } + } + + disposeLocks(); + } + + public void registerFaceExpression(final MapleMap map, final MapleCharacter chr, int emote) { + int lockid = getChannelSchedulerIndex(map.getId()); + + Runnable cancelAction = new Runnable() { + @Override + public void run() { + if(chr.isLoggedinWorld()) { + map.broadcastMessage(chr, MaplePacketCreator.facialExpression(chr, 0), false); + } + } + }; + + faceLock[lockid].lock(); + try { + if(!chr.isLoggedinWorld()) { + return; + } + + faceExpressionSchedulers[lockid].registerFaceExpression(chr.getId(), cancelAction); + } finally { + faceLock[lockid].unlock(); + } + + map.broadcastMessage(chr, MaplePacketCreator.facialExpression(chr, emote), false); + } + + public void unregisterFaceExpression(int mapid, MapleCharacter chr) { + int lockid = getChannelSchedulerIndex(mapid); + + faceLock[lockid].lock(); + try { + faceExpressionSchedulers[lockid].unregisterFaceExpression(chr.getId()); + } finally { + faceLock[lockid].unlock(); + } + } + + private class FaceExpressionScheduler extends BaseScheduler { + + public FaceExpressionScheduler(final MonitoredReentrantLock channelFaceLock) { + super(MonitoredLockType.CHANNEL_FACESCHDL, Collections.singletonList(channelFaceLock)); + } + + public void registerFaceExpression(Integer characterId, Runnable runAction) { + registerEntry(characterId, runAction, 5000); + } + + public void unregisterFaceExpression(Integer characterId) { + interruptEntry(characterId); + } + + } + +} diff --git a/src/net/server/channel/services/task/MobAnimationService.java b/src/net/server/channel/services/task/MobAnimationService.java new file mode 100644 index 0000000000..e3043a0169 --- /dev/null +++ b/src/net/server/channel/services/task/MobAnimationService.java @@ -0,0 +1,125 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2018 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.services.task; + +import config.YamlConfig; +import net.server.audit.locks.MonitoredLockType; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import net.server.audit.LockCollector; +import net.server.audit.locks.MonitoredReentrantLock; +import net.server.audit.locks.factory.MonitoredReentrantLockFactory; +import net.server.channel.services.BaseScheduler; +import net.server.channel.services.SchedulerListener; + +/** + * + * @author Ronan + */ +public class MobAnimationService extends BaseService { + + private MobAnimationScheduler mobAnimationSchedulers[] = new MobAnimationScheduler[YamlConfig.config.server.CHANNEL_LOCKS]; + + public MobAnimationService() { + for(int i = 0; i < YamlConfig.config.server.CHANNEL_LOCKS; i++) { + mobAnimationSchedulers[i] = new MobAnimationScheduler(); + } + } + + public void dispose() { + for(int i = 0; i < YamlConfig.config.server.CHANNEL_LOCKS; i++) { + if(mobAnimationSchedulers[i] != null) { + mobAnimationSchedulers[i].dispose(); + mobAnimationSchedulers[i] = null; + } + } + } + + public boolean registerMobOnAnimationEffect(int mapid, int mobHash, long delay) { + return mobAnimationSchedulers[getChannelSchedulerIndex(mapid)].registerAnimationMode(mobHash, delay); + } + + private static Runnable r = new Runnable() { + @Override + public void run() {} // do nothing + }; + + private class MobAnimationScheduler extends BaseScheduler { + Set onAnimationMobs = new HashSet<>(1000); + private MonitoredReentrantLock animationLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CHANNEL_MOBANIMAT, true); + + public MobAnimationScheduler() { + super(MonitoredLockType.CHANNEL_MOBACTION); + + super.addListener(new SchedulerListener() { + @Override + public void removedScheduledEntries(List toRemove, boolean update) { + animationLock.lock(); + try { + for(Object hashObj : toRemove) { + Integer mobHash = (Integer) hashObj; + onAnimationMobs.remove(mobHash); + } + } finally { + animationLock.unlock(); + } + } + }); + } + + public boolean registerAnimationMode(Integer mobHash, long animationTime) { + animationLock.lock(); + try { + if(onAnimationMobs.contains(mobHash)) { + return false; + } + + registerEntry(mobHash, r, animationTime); + onAnimationMobs.add(mobHash); + return true; + } finally { + animationLock.unlock(); + } + } + + @Override + public void dispose() { + disposeLocks(); + super.dispose(); + } + + private void disposeLocks() { + LockCollector.getInstance().registerDisposeAction(new Runnable() { + @Override + public void run() { + emptyLocks(); + } + }); + } + + private void emptyLocks() { + animationLock = animationLock.dispose(); + } + + } + +} diff --git a/src/net/server/channel/services/task/MobClearSkillService.java b/src/net/server/channel/services/task/MobClearSkillService.java new file mode 100644 index 0000000000..7092c48a42 --- /dev/null +++ b/src/net/server/channel/services/task/MobClearSkillService.java @@ -0,0 +1,65 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2018 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.services.task; + +import config.YamlConfig; +import net.server.audit.locks.MonitoredLockType; +import net.server.channel.services.BaseScheduler; + +/** + * + * @author Ronan + */ +public class MobClearSkillService extends BaseService { + + private MobClearSkillScheduler mobClearSkillSchedulers[] = new MobClearSkillScheduler[YamlConfig.config.server.CHANNEL_LOCKS]; + + public MobClearSkillService() { + for(int i = 0; i < YamlConfig.config.server.CHANNEL_LOCKS; i++) { + mobClearSkillSchedulers[i] = new MobClearSkillScheduler(); + } + } + + public void dispose() { + for(int i = 0; i < YamlConfig.config.server.CHANNEL_LOCKS; i++) { + if(mobClearSkillSchedulers[i] != null) { + mobClearSkillSchedulers[i].dispose(); + mobClearSkillSchedulers[i] = null; + } + } + } + + public void registerMobClearSkillAction(int mapid, Runnable runAction, long delay) { + mobClearSkillSchedulers[getChannelSchedulerIndex(mapid)].registerClearSkillAction(runAction, delay); + } + + private class MobClearSkillScheduler extends BaseScheduler { + + public MobClearSkillScheduler() { + super(MonitoredLockType.CHANNEL_MOBSKILL); + } + + public void registerClearSkillAction(Runnable runAction, long delay) { + registerEntry(runAction, runAction, delay); + } + + } + +} diff --git a/src/net/server/channel/services/task/MobMistService.java b/src/net/server/channel/services/task/MobMistService.java new file mode 100644 index 0000000000..6428dd0998 --- /dev/null +++ b/src/net/server/channel/services/task/MobMistService.java @@ -0,0 +1,65 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2018 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.services.task; + +import config.YamlConfig; +import net.server.audit.locks.MonitoredLockType; +import net.server.channel.services.BaseScheduler; + +/** + * + * @author Ronan + */ +public class MobMistService extends BaseService { + + private MobMistScheduler mobMistSchedulers[] = new MobMistScheduler[YamlConfig.config.server.CHANNEL_LOCKS]; + + public MobMistService() { + for(int i = 0; i < YamlConfig.config.server.CHANNEL_LOCKS; i++) { + mobMistSchedulers[i] = new MobMistScheduler(); + } + } + + public void dispose() { + for(int i = 0; i < YamlConfig.config.server.CHANNEL_LOCKS; i++) { + if(mobMistSchedulers[i] != null) { + mobMistSchedulers[i].dispose(); + mobMistSchedulers[i] = null; + } + } + } + + public void registerMobMistCancelAction(int mapid, Runnable runAction, long delay) { + mobMistSchedulers[getChannelSchedulerIndex(mapid)].registerMistCancelAction(runAction, delay); + } + + private class MobMistScheduler extends BaseScheduler { + + public MobMistScheduler() { + super(MonitoredLockType.CHANNEL_MOBMIST); + } + + public void registerMistCancelAction(Runnable runAction, long delay) { + registerEntry(runAction, runAction, delay); + } + + } + +} diff --git a/src/net/server/channel/services/task/MobStatusService.java b/src/net/server/channel/services/task/MobStatusService.java new file mode 100644 index 0000000000..e6b39b3a78 --- /dev/null +++ b/src/net/server/channel/services/task/MobStatusService.java @@ -0,0 +1,168 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2018 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.services.task; + +import client.status.MonsterStatusEffect; +import config.YamlConfig; +import java.util.HashMap; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import net.server.audit.LockCollector; +import net.server.audit.locks.MonitoredLockType; +import net.server.audit.locks.MonitoredReentrantLock; +import net.server.audit.locks.factory.MonitoredReentrantLockFactory; +import net.server.channel.services.BaseScheduler; +import net.server.channel.services.SchedulerListener; + +/** + * + * @author Ronan + */ +public class MobStatusService extends BaseService { + + private MobStatusScheduler mobStatusSchedulers[] = new MobStatusScheduler[YamlConfig.config.server.CHANNEL_LOCKS]; + + public MobStatusService() { + for(int i = 0; i < YamlConfig.config.server.CHANNEL_LOCKS; i++) { + mobStatusSchedulers[i] = new MobStatusScheduler(); + } + } + + public void dispose() { + for(int i = 0; i < YamlConfig.config.server.CHANNEL_LOCKS; i++) { + if(mobStatusSchedulers[i] != null) { + mobStatusSchedulers[i].dispose(); + mobStatusSchedulers[i] = null; + } + } + } + + public void registerMobStatus(int mapid, MonsterStatusEffect mse, Runnable cancelAction, long duration) { + registerMobStatus(mapid, mse, cancelAction, duration, null, -1); + } + + public void registerMobStatus(int mapid, MonsterStatusEffect mse, Runnable cancelAction, long duration, Runnable overtimeAction, int overtimeDelay) { + mobStatusSchedulers[getChannelSchedulerIndex(mapid)].registerMobStatus(mse, cancelAction, duration, overtimeAction, overtimeDelay); + } + + public void interruptMobStatus(int mapid, MonsterStatusEffect mse) { + mobStatusSchedulers[getChannelSchedulerIndex(mapid)].interruptMobStatus(mse); + } + + private class MobStatusScheduler extends BaseScheduler { + + private Map registeredMobStatusOvertime = new HashMap<>(); + private MonitoredReentrantLock overtimeStatusLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CHANNEL_OVTSTATUS, true); + + private class MobStatusOvertimeEntry { + private int procCount; + private int procLimit; + private Runnable r; + + protected MobStatusOvertimeEntry(int delay, Runnable run) { + procCount = 0; + procLimit = (int)Math.ceil((float) delay / YamlConfig.config.server.MOB_STATUS_MONITOR_PROC); + r = run; + } + + protected void update(List toRun) { + procCount++; + if(procCount >= procLimit) { + procCount = 0; + toRun.add(r); + } + } + } + + public MobStatusScheduler() { + super(MonitoredLockType.CHANNEL_MOBSTATUS); + + super.addListener(new SchedulerListener() { + @Override + public void removedScheduledEntries(List toRemove, boolean update) { + List toRun = new ArrayList<>(); + + overtimeStatusLock.lock(); + try { + for(Object mseo : toRemove) { + MonsterStatusEffect mse = (MonsterStatusEffect) mseo; + registeredMobStatusOvertime.remove(mse); + } + + if(update) { + // it's probably ok to use one thread for both management & overtime actions + List mdoeList = new ArrayList<>(registeredMobStatusOvertime.values()); + for(MobStatusOvertimeEntry mdoe : mdoeList) { + mdoe.update(toRun); + } + } + } finally { + overtimeStatusLock.unlock(); + } + + for(Runnable r : toRun) { + r.run(); + } + } + }); + } + + public void registerMobStatus(MonsterStatusEffect mse, Runnable cancelStatus, long duration, Runnable overtimeStatus, int overtimeDelay) { + if(overtimeStatus != null) { + MobStatusOvertimeEntry mdoe = new MobStatusOvertimeEntry(overtimeDelay, overtimeStatus); + + overtimeStatusLock.lock(); + try { + registeredMobStatusOvertime.put(mse, mdoe); + } finally { + overtimeStatusLock.unlock(); + } + } + + registerEntry(mse, cancelStatus, duration); + } + + public void interruptMobStatus(MonsterStatusEffect mse) { + interruptEntry(mse); + } + + @Override + public void dispose() { + disposeLocks(); + super.dispose(); + } + + private void disposeLocks() { + LockCollector.getInstance().registerDisposeAction(new Runnable() { + @Override + public void run() { + emptyLocks(); + } + }); + } + + private void emptyLocks() { + overtimeStatusLock = overtimeStatusLock.dispose(); + } + + } + +} diff --git a/src/net/server/channel/services/task/OverallService.java b/src/net/server/channel/services/task/OverallService.java new file mode 100644 index 0000000000..3dad65daa2 --- /dev/null +++ b/src/net/server/channel/services/task/OverallService.java @@ -0,0 +1,74 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2018 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.services.task; + +import config.YamlConfig; +import net.server.audit.locks.MonitoredLockType; +import net.server.channel.services.BaseScheduler; + +/** + * + * @author Ronan + */ +public class OverallService extends BaseService { // thanks Alex for suggesting a refactor over the several channel schedulers unnecessarily populating the Channel class + + private OverallScheduler channelSchedulers[] = new OverallScheduler[YamlConfig.config.server.CHANNEL_LOCKS]; + + public OverallService() { + for(int i = 0; i < YamlConfig.config.server.CHANNEL_LOCKS; i++) { + channelSchedulers[i] = new OverallScheduler(); + } + } + + public void dispose() { + for(int i = 0; i < YamlConfig.config.server.CHANNEL_LOCKS; i++) { + if(channelSchedulers[i] != null) { + channelSchedulers[i].dispose(); + channelSchedulers[i] = null; + } + } + } + + public void registerOverallAction(int mapid, Runnable runAction, long delay) { + channelSchedulers[getChannelSchedulerIndex(mapid)].registerDelayedAction(runAction, delay); + } + + public void forceRunOverallAction(int mapid, Runnable runAction) { + channelSchedulers[getChannelSchedulerIndex(mapid)].forceRunDelayedAction(runAction); + } + + + public class OverallScheduler extends BaseScheduler { + + public OverallScheduler() { + super(MonitoredLockType.CHANNEL_OVERALL); + } + + public void registerDelayedAction(Runnable runAction, long delay) { + registerEntry(runAction, runAction, delay); + } + + public void forceRunDelayedAction(Runnable runAction) { + interruptEntry(runAction); + } + + } + +} diff --git a/src/net/server/channel/task/MobAnimationScheduler.java b/src/net/server/channel/task/MobAnimationScheduler.java deleted file mode 100644 index b83e634c2c..0000000000 --- a/src/net/server/channel/task/MobAnimationScheduler.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - This file is part of the HeavenMS MapleStory Server - Copyleft (L) 2016 - 2018 RonanLana - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation version 3 as published by - the Free Software Foundation. You may not use, modify or distribute - this program under any other version of the GNU Affero General Public - License. - - 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 Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ -package net.server.channel.task; - -import net.server.audit.locks.MonitoredLockType; - -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import net.server.audit.LockCollector; -import net.server.audit.locks.MonitoredReentrantLock; -import net.server.audit.locks.factory.MonitoredReentrantLockFactory; - -/** - * - * @author Ronan - */ -public class MobAnimationScheduler extends BaseScheduler { - Set onAnimationMobs = new HashSet<>(1000); - private MonitoredReentrantLock animationLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CHANNEL_MOBANIMAT, true); - - private static Runnable r = new Runnable() { - @Override - public void run() {} // do nothing - }; - - public MobAnimationScheduler() { - super(MonitoredLockType.CHANNEL_MOBACTION); - - super.addListener(new SchedulerListener() { - @Override - public void removedScheduledEntries(List toRemove, boolean update) { - animationLock.lock(); - try { - for(Object hashObj : toRemove) { - Integer mobHash = (Integer) hashObj; - onAnimationMobs.remove(mobHash); - } - } finally { - animationLock.unlock(); - } - } - }); - } - - public boolean registerAnimationMode(Integer mobHash, long animationTime) { - animationLock.lock(); - try { - if(onAnimationMobs.contains(mobHash)) { - return false; - } - - registerEntry(mobHash, r, animationTime); - onAnimationMobs.add(mobHash); - return true; - } finally { - animationLock.unlock(); - } - } - - @Override - public void dispose() { - disposeLocks(); - super.dispose(); - } - - private void disposeLocks() { - LockCollector.getInstance().registerDisposeAction(new Runnable() { - @Override - public void run() { - emptyLocks(); - } - }); - } - - private void emptyLocks() { - animationLock = animationLock.dispose(); - } -} diff --git a/src/net/server/channel/task/MobStatusScheduler.java b/src/net/server/channel/task/MobStatusScheduler.java deleted file mode 100644 index 8de9577e7a..0000000000 --- a/src/net/server/channel/task/MobStatusScheduler.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - This file is part of the HeavenMS MapleStory Server - Copyleft (L) 2016 - 2018 RonanLana - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation version 3 as published by - the Free Software Foundation. You may not use, modify or distribute - this program under any other version of the GNU Affero General Public - License. - - 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 Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ -package net.server.channel.task; - -import client.status.MonsterStatusEffect; -import config.YamlConfig; -import java.util.HashMap; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import net.server.audit.LockCollector; -import net.server.audit.locks.MonitoredLockType; -import net.server.audit.locks.MonitoredReentrantLock; -import net.server.audit.locks.factory.MonitoredReentrantLockFactory; - -/** - * - * @author Ronan - */ -public class MobStatusScheduler extends BaseScheduler { - private Map registeredMobStatusOvertime = new HashMap<>(); - private MonitoredReentrantLock overtimeStatusLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CHANNEL_OVTSTATUS, true); - - private class MobStatusOvertimeEntry { - private int procCount; - private int procLimit; - private Runnable r; - - protected MobStatusOvertimeEntry(int delay, Runnable run) { - procCount = 0; - procLimit = (int)Math.ceil((float) delay / YamlConfig.config.server.MOB_STATUS_MONITOR_PROC); - r = run; - } - - protected void update(List toRun) { - procCount++; - if(procCount >= procLimit) { - procCount = 0; - toRun.add(r); - } - } - } - - public MobStatusScheduler() { - super(MonitoredLockType.CHANNEL_MOBSTATUS); - - super.addListener(new SchedulerListener() { - @Override - public void removedScheduledEntries(List toRemove, boolean update) { - List toRun = new ArrayList<>(); - - overtimeStatusLock.lock(); - try { - for(Object mseo : toRemove) { - MonsterStatusEffect mse = (MonsterStatusEffect) mseo; - registeredMobStatusOvertime.remove(mse); - } - - if(update) { - // it's probably ok to use one thread for both management & overtime actions - List mdoeList = new ArrayList<>(registeredMobStatusOvertime.values()); - for(MobStatusOvertimeEntry mdoe : mdoeList) { - mdoe.update(toRun); - } - } - } finally { - overtimeStatusLock.unlock(); - } - - for(Runnable r : toRun) { - r.run(); - } - } - }); - } - - public void registerMobStatus(MonsterStatusEffect mse, Runnable cancelStatus, long duration, Runnable overtimeStatus, int overtimeDelay) { - if(overtimeStatus != null) { - MobStatusOvertimeEntry mdoe = new MobStatusOvertimeEntry(overtimeDelay, overtimeStatus); - - overtimeStatusLock.lock(); - try { - registeredMobStatusOvertime.put(mse, mdoe); - } finally { - overtimeStatusLock.unlock(); - } - } - - registerEntry(mse, cancelStatus, duration); - } - - public void interruptMobStatus(MonsterStatusEffect mse) { - interruptEntry(mse); - } - - @Override - public void dispose() { - disposeLocks(); - super.dispose(); - } - - private void disposeLocks() { - LockCollector.getInstance().registerDisposeAction(new Runnable() { - @Override - public void run() { - emptyLocks(); - } - }); - } - - private void emptyLocks() { - overtimeStatusLock = overtimeStatusLock.dispose(); - } -} diff --git a/src/provider/MapleDataTool.java b/src/provider/MapleDataTool.java index f06412de25..51b92419e1 100644 --- a/src/provider/MapleDataTool.java +++ b/src/provider/MapleDataTool.java @@ -107,7 +107,12 @@ public class MapleDataTool { } else if (data.getType() == MapleDataType.STRING) { return Integer.parseInt(getString(data)); } else { - return ((Integer) data.getData()).intValue(); + Object numData = data.getData(); + if (numData instanceof Integer) { + return (Integer) numData; + } else { + return (Short) numData; + } } } diff --git a/src/scripting/portal/PortalPlayerInteraction.java b/src/scripting/portal/PortalPlayerInteraction.java index e878d20822..ad23c6703b 100644 --- a/src/scripting/portal/PortalPlayerInteraction.java +++ b/src/scripting/portal/PortalPlayerInteraction.java @@ -27,8 +27,8 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import scripting.AbstractPlayerInteraction; +import scripting.map.MapScriptManager; import server.maps.MaplePortal; -import server.quest.MapleQuest; import tools.DatabaseConnection; import tools.MaplePacketCreator; @@ -44,6 +44,11 @@ public class PortalPlayerInteraction extends AbstractPlayerInteraction { public MaplePortal getPortal() { return portal; } + + public void runMapScript() { + MapScriptManager msm = MapScriptManager.getInstance(); + msm.runMapScript(c, "onUserEnter/" + portal.getScriptName(), false); + } public boolean hasLevel30Character() { PreparedStatement ps = null; diff --git a/src/server/MapleSkillbookInformationProvider.java b/src/server/MapleSkillbookInformationProvider.java index 4a559e52b5..f144d21c51 100644 --- a/src/server/MapleSkillbookInformationProvider.java +++ b/src/server/MapleSkillbookInformationProvider.java @@ -21,7 +21,6 @@ package server; import java.io.BufferedReader; import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.sql.Connection; @@ -38,6 +37,9 @@ import java.util.Scanner; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; +import provider.MapleData; +import provider.MapleDataProviderFactory; +import provider.MapleDataTool; import tools.DatabaseConnection; /** @@ -45,6 +47,7 @@ import tools.DatabaseConnection; * @author RonanLana */ public class MapleSkillbookInformationProvider { + private final static MapleSkillbookInformationProvider instance = new MapleSkillbookInformationProvider(); public static MapleSkillbookInformationProvider getInstance() { @@ -86,167 +89,31 @@ public class MapleSkillbookInformationProvider { static { loadSkillbooks(); } - - private static String getName(String token) { - int i, j; - char[] dest; - String d; - - i = token.lastIndexOf("name"); - i = token.indexOf("\"", i) + 1; //lower bound of the string - j = token.indexOf("\"", i); //upper bound - - if(j < i) { //node value containing 'name' in it's scope, cheap fix since we don't deal with strings anyway - System.out.println("[CRITICAL] Found this '" + token + "'"); - return "0"; - } - - dest = new char[initialStringLength]; - token.getChars(i, j, dest, 0); - - d = new String(dest); - return(d.trim()); - } - private static String getValue(String token) { - int i, j; - char[] dest; - String d; - - i = token.lastIndexOf("value"); - i = token.indexOf("\"", i) + 1; //lower bound of the string - j = token.indexOf("\"", i); //upper bound - - dest = new char[initialStringLength]; - token.getChars(i, j, dest, 0); - - d = new String(dest); - return(d.trim()); - } - - private static void forwardCursor(int st) { - String line = null; - - try { - while(status >= st && (line = bufferedReader.readLine()) != null) { - simpleToken(line); - } - } - catch(Exception e) { - e.printStackTrace(); - } - } - - private static void simpleToken(String token) { - if(token.contains("/imgdir")) { - status -= 1; - } - else if(token.contains("imgdir") && !token.endsWith("/>")) { // '\>' XML node description not being accounted, issue found thanks to Robin Schulz, CanIGetaPR - status += 1; - } - } - - private static void inspectQuestItemList(int st) { - String line = null; - - try { - while(status >= st && (line = bufferedReader.readLine()) != null) { - readItemToken(line); - } - } - catch(Exception e) { - e.printStackTrace(); - } - } - public static boolean isSkillBook(int itemid) { return itemid >= skillbookMinItemid && itemid < skillbookMaxItemid; } - private static void processCurrentItem() { - try { - if(isSkillBook(currentItemid)) { - if(currentCount > 0) { - foundSkillbooks.put(currentItemid, SkillBookEntry.QUEST); - } - } - } catch(Exception e) {} - } - - private static void readItemToken(String token) { - if(token.contains("/imgdir")) { - status -= 1; - - processCurrentItem(); - - currentItemid = 0; - currentCount = 0; - } - else if(token.contains("imgdir") && !token.endsWith("/>")) { - status += 1; - } - else { - String d = getName(token); - - if(d.equals("id")) { - currentItemid = Integer.parseInt(getValue(token)); - } else if(d.equals("count")) { - currentCount = Integer.parseInt(getValue(token)); - } - } - } - - private static void translateActToken(String token) { - String d; - int temp; - - if(token.contains("/imgdir")) { - status -= 1; - } - else if(token.contains("imgdir") && !token.endsWith("/>")) { - if(status == 1) { //getting QuestId - d = getName(token); - questId = Integer.parseInt(d); - } - else if(status == 2) { //start/complete - d = getName(token); - isCompleteState = Integer.parseInt(d); - } - else if(status == 3) { - d = getName(token); - - if(d.contains("item")) { - temp = status; - inspectQuestItemList(temp); - } else { - forwardCursor(status); - } - } - - status += 1; - } - } - private static void fetchSkillbooksFromQuests() { - String line = ""; - int lineNumber = 0; // add line number, thanks to Alex (CanIGetaPR) + MapleData actData = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/" + "Quest.wz")).getData("Act.img"); - try { - fileReader = new InputStreamReader(new FileInputStream(wzPath + "/Quest.wz/Act.img.xml"), "UTF-8"); - bufferedReader = new BufferedReader(fileReader); - - while((line = bufferedReader.readLine()) != null) { - lineNumber++; - translateActToken(line); + for (MapleData questData : actData.getChildren()) { + for (MapleData questStatusData : questData.getChildren()) { + for (MapleData questNodeData : questStatusData.getChildren()) { + if (questNodeData.getName().contentEquals("item")) { + for (MapleData questItemData : questNodeData.getChildren()) { + int itemid = MapleDataTool.getInt("id", questItemData, 0); + int itemcount = MapleDataTool.getInt("count", questItemData, 0); + + if (isSkillBook(itemid) && itemcount > 0) { + foundSkillbooks.put(currentItemid, SkillBookEntry.QUEST); + } + } + + break; + } + } } - - bufferedReader.close(); - fileReader.close(); - } catch(IOException ioe) { - System.out.println("Failed to read Quest.wz file. Line " + lineNumber + ": " + line); - ioe.printStackTrace(); - } catch (Exception e) { - System.out.println("Failed to parse Quest.wz XML file."); // catch this exception, thanks to YonhNi } } diff --git a/src/server/life/MapleLifeFactory.java b/src/server/life/MapleLifeFactory.java index 50202629e9..3a03929f1a 100644 --- a/src/server/life/MapleLifeFactory.java +++ b/src/server/life/MapleLifeFactory.java @@ -163,11 +163,11 @@ public class MapleLifeFactory { } stats.setFirstAttack(firstAttack > 0); stats.setDropPeriod(MapleDataTool.getIntConvert("dropItemPeriod", monsterInfoData, stats.getDropPeriod() / 10000) * 10000); - - if (!(stats.isBoss() && !hpbarBosses.contains(mid))) { // thanks Riizade, Z1peR, Anesthetic for noticing some bosses crashing players due to missing requirements - stats.setTagColor(MapleDataTool.getIntConvert("hpTagColor", monsterInfoData, 0)); - stats.setTagBgColor(MapleDataTool.getIntConvert("hpTagBgcolor", monsterInfoData, 0)); - } + + // thanks yuxaij, Riizade, Z1peR, Anesthetic for noticing some bosses crashing players due to missing requirements + boolean hpbarBoss = stats.isBoss() && hpbarBosses.contains(mid); + stats.setTagColor(hpbarBoss ? MapleDataTool.getIntConvert("hpTagColor", monsterInfoData, 0) : 0); + stats.setTagBgColor(hpbarBoss ? MapleDataTool.getIntConvert("hpTagBgcolor", monsterInfoData, 0) : 0); for (MapleData idata : monsterData) { if (!idata.getName().equals("info")) { diff --git a/src/server/life/MapleMonster.java b/src/server/life/MapleMonster.java index 6cb8132a86..cc4aafa00a 100644 --- a/src/server/life/MapleMonster.java +++ b/src/server/life/MapleMonster.java @@ -72,6 +72,11 @@ import tools.Randomizer; import net.server.audit.LockCollector; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.factory.MonitoredReentrantLockFactory; +import net.server.channel.services.ServiceType; +import net.server.channel.services.task.MobAnimationService; +import net.server.channel.services.task.MobClearSkillService; +import net.server.channel.services.task.MobStatusService; +import net.server.channel.services.task.OverallService; import net.server.coordinator.world.MapleMonsterAggroCoordinator; import server.MapleStatEffect; import server.loot.MapleLootManager; @@ -333,7 +338,8 @@ public class MapleMonster extends AbstractLoadedMapleLife { } if(animationTime > 0) { - return map.getChannelServer().registerMobOnAnimationEffect(map.getId(), this.hashCode(), animationTime); + MobAnimationService service = (MobAnimationService) map.getChannelServer().getServiceAccess(ServiceType.MOB_ANIMATION); + return service.registerMobOnAnimationEffect(map.getId(), this.hashCode(), animationTime); } else { return true; } @@ -1197,7 +1203,8 @@ public class MapleMonster extends AbstractLoadedMapleLife { if (oldEffect != null) { oldEffect.removeActiveStatus(stat); if (oldEffect.getStati().isEmpty()) { - ch.interruptMobStatus(mapid, oldEffect); + MobStatusService service = (MobStatusService) map.getChannelServer().getServiceAccess(ServiceType.MOB_STATUS); + service.interruptMobStatus(mapid, oldEffect); } } } @@ -1303,7 +1310,8 @@ public class MapleMonster extends AbstractLoadedMapleLife { statiLock.unlock(); } - ch.registerMobStatus(mapid, status, cancelTask, duration + animationTime - 100, overtimeAction, overtimeDelay); + MobStatusService service = (MobStatusService) map.getChannelServer().getServiceAccess(ServiceType.MOB_STATUS); + service.registerMobStatus(mapid, status, cancelTask, duration + animationTime - 100, overtimeAction, overtimeDelay); return true; } @@ -1354,7 +1362,8 @@ public class MapleMonster extends AbstractLoadedMapleLife { statiLock.unlock(); } - map.getChannelServer().registerMobStatus(map.getId(), effect, cancelTask, duration); + MobStatusService service = (MobStatusService) map.getChannelServer().getServiceAccess(ServiceType.MOB_STATUS); + service.registerMobStatus(map.getId(), effect, cancelTask, duration); } public void refreshMobPosition() { @@ -1552,7 +1561,8 @@ public class MapleMonster extends AbstractLoadedMapleLife { } }; - mmap.getChannelServer().registerMobClearSkillAction(mmap.getId(), r, cooltime); + MobClearSkillService service = (MobClearSkillService) map.getChannelServer().getServiceAccess(ServiceType.MOB_CLEAR_SKILL); + service.registerMobClearSkillAction(mmap.getId(), r, cooltime); } private void clearSkill(int skillId, int level) { @@ -1619,8 +1629,9 @@ public class MapleMonster extends AbstractLoadedMapleLife { mons.clearAttack(attackPos); } }; - - mmap.getChannelServer().registerMobClearSkillAction(mmap.getId(), r, cooltime); + + MobClearSkillService service = (MobClearSkillService) map.getChannelServer().getServiceAccess(ServiceType.MOB_CLEAR_SKILL); + service.registerMobClearSkillAction(mmap.getId(), r, cooltime); } finally { monsterLock.unlock(); } @@ -1667,7 +1678,8 @@ public class MapleMonster extends AbstractLoadedMapleLife { public void run() { int curHp = hp.get(); if(curHp <= 1) { - map.getChannelServer().interruptMobStatus(map.getId(), status); + MobStatusService service = (MobStatusService) map.getChannelServer().getServiceAccess(ServiceType.MOB_STATUS); + service.interruptMobStatus(map.getId(), status); return; } @@ -1675,7 +1687,8 @@ public class MapleMonster extends AbstractLoadedMapleLife { if (damage >= curHp) { damage = curHp - 1; if (type == 1 || type == 2) { - map.getChannelServer().interruptMobStatus(map.getId(), status); + MobStatusService service = (MobStatusService) map.getChannelServer().getServiceAccess(ServiceType.MOB_STATUS); + service.interruptMobStatus(map.getId(), status); } } if (damage > 0) { @@ -1731,7 +1744,8 @@ public class MapleMonster extends AbstractLoadedMapleLife { } }; - mmap.getChannelServer().registerMobClearSkillAction(mmap.getId(), r, milli); + MobClearSkillService service = (MobClearSkillService) mmap.getChannelServer().getServiceAccess(ServiceType.MOB_CLEAR_SKILL); + service.registerMobClearSkillAction(mmap.getId(), r, milli); } } finally { monsterLock.unlock(); @@ -2213,7 +2227,8 @@ public class MapleMonster extends AbstractLoadedMapleLife { }; // had to schedule this since mob wouldn't stick to puppet aggro who knows why - this.getMap().getChannelServer().registerOverallAction(this.getMap().getId(), r, YamlConfig.config.server.UPDATE_INTERVAL); + OverallService service = (OverallService) this.getMap().getChannelServer().getServiceAccess(ServiceType.OVERALL); + service.registerOverallAction(this.getMap().getId(), r, YamlConfig.config.server.UPDATE_INTERVAL); } /** diff --git a/src/server/life/MobSkill.java b/src/server/life/MobSkill.java index 0808dda53b..e91b05bd65 100644 --- a/src/server/life/MobSkill.java +++ b/src/server/life/MobSkill.java @@ -32,6 +32,8 @@ import client.status.MonsterStatus; import constants.game.GameConstants; import java.util.LinkedList; import java.util.Map; +import net.server.channel.services.ServiceType; +import net.server.channel.services.task.OverallService; import tools.Randomizer; import server.maps.MapleMap; import server.maps.MapleMapObject; @@ -115,7 +117,8 @@ public class MobSkill { } }; - monster.getMap().getChannelServer().registerOverallAction(monster.getMap().getId(), toRun, animationTime); + OverallService service = (OverallService) monster.getMap().getChannelServer().getServiceAccess(ServiceType.OVERALL); + service.registerOverallAction(monster.getMap().getId(), toRun, animationTime); } public void applyEffect(MapleCharacter player, MapleMonster monster, boolean skill, List banishPlayers) { diff --git a/src/server/maps/AbstractMapleMapObject.java b/src/server/maps/AbstractMapleMapObject.java index 398c373698..24499433e6 100644 --- a/src/server/maps/AbstractMapleMapObject.java +++ b/src/server/maps/AbstractMapleMapObject.java @@ -37,8 +37,7 @@ public abstract class AbstractMapleMapObject implements MapleMapObject { @Override public void setPosition(Point position) { - this.position.x = position.x; - this.position.y = position.y; + this.position.move(position.x, position.y); } @Override diff --git a/src/server/maps/MapleDoor.java b/src/server/maps/MapleDoor.java index d2860450bf..a58f9897bb 100644 --- a/src/server/maps/MapleDoor.java +++ b/src/server/maps/MapleDoor.java @@ -28,7 +28,8 @@ import config.YamlConfig; import tools.Pair; import client.MapleCharacter; -import constants.net.ServerConstants; +import net.server.channel.services.ServiceType; +import net.server.channel.services.task.OverallService; /** * @@ -131,7 +132,9 @@ public class MapleDoor { long effectTimeLeft = 3000 - destroyDoor.getElapsedDeployTime(); // portal deployment effect duration if (effectTimeLeft > 0) { MapleMap town = destroyDoor.getTown(); - town.getChannelServer().registerOverallAction(town.getId(), new Runnable() { + + OverallService service = (OverallService) town.getChannelServer().getServiceAccess(ServiceType.OVERALL); + service.registerOverallAction(town.getId(), new Runnable() { @Override public void run() { destroyDoor.broadcastRemoveDoor(owner); // thanks BHB88 for noticing doors crashing players when instantly cancelling buff diff --git a/src/server/maps/MapleMap.java b/src/server/maps/MapleMap.java index efb6f96c54..a5b90e3711 100644 --- a/src/server/maps/MapleMap.java +++ b/src/server/maps/MapleMap.java @@ -65,6 +65,10 @@ import java.lang.ref.WeakReference; import net.server.Server; import net.server.coordinator.world.MapleMonsterAggroCoordinator; import net.server.channel.Channel; +import net.server.channel.services.ServiceType; +import net.server.channel.services.task.FaceExpressionService; +import net.server.channel.services.task.MobMistService; +import net.server.channel.services.task.OverallService; import net.server.world.World; import scripting.map.MapScriptManager; import server.MapleItemInformationProvider; @@ -1942,7 +1946,8 @@ public class MapleMap { public void dismissRemoveAfter(final MapleMonster monster) { Runnable removeAfterAction = monster.popRemoveAfterAction(); if (removeAfterAction != null) { - this.getChannelServer().forceRunOverallAction(mapid, removeAfterAction); + OverallService service = (OverallService) this.getChannelServer().getServiceAccess(ServiceType.OVERALL); + service.forceRunOverallAction(mapid, removeAfterAction); } } @@ -2203,7 +2208,8 @@ public class MapleMap { } }; - this.getChannelServer().registerMobMistCancelAction(mapid, mistSchedule, duration); + MobMistService service = (MobMistService) this.getChannelServer().getServiceAccess(ServiceType.MOB_MIST); + service.registerMobMistCancelAction(mapid, mistSchedule, duration); } public void spawnKite(final MapleKite kite) { @@ -2302,7 +2308,8 @@ public class MapleMap { } private void registerMapSchedule(Runnable r, long delay) { - this.getChannelServer().registerOverallAction(mapid, r, delay); + OverallService service = (OverallService) this.getChannelServer().getServiceAccess(ServiceType.OVERALL); + service.registerOverallAction(mapid, r, delay); } private void activateItemReactors(final MapleMapItem drop, final MapleClient c) { @@ -2788,7 +2795,8 @@ public class MapleMap { public void removePlayer(MapleCharacter chr) { Channel cserv = chr.getClient().getChannelServer(); - cserv.unregisterFaceExpression(mapid, chr); + FaceExpressionService service = (FaceExpressionService) this.getChannelServer().getServiceAccess(ServiceType.FACE_EXPRESSION); + service.unregisterFaceExpression(mapid, chr); chr.unregisterChairBuff(); chrWLock.lock(); @@ -3548,7 +3556,8 @@ public class MapleMap { if (reactor.getDelay() > 0) { MapleMap reactorMap = reactor.getMap(); - reactorMap.getChannelServer().registerOverallAction(reactorMap.getId(), new Runnable() { + OverallService service = (OverallService) reactorMap.getChannelServer().getServiceAccess(ServiceType.OVERALL); + service.registerOverallAction(reactorMap.getId(), new Runnable() { @Override public void run() { reactor.lockReactor(); diff --git a/src/server/maps/MapleReactor.java b/src/server/maps/MapleReactor.java index e517ca43f2..7530303434 100644 --- a/src/server/maps/MapleReactor.java +++ b/src/server/maps/MapleReactor.java @@ -36,6 +36,8 @@ import server.TimerManager; import tools.MaplePacketCreator; import tools.Pair; import net.server.audit.locks.MonitoredLockType; +import net.server.channel.services.ServiceType; +import net.server.channel.services.task.OverallService; import server.partyquest.GuardianSpawnPoint; /** @@ -368,14 +370,17 @@ public class MapleReactor extends AbstractMapleMapObject { }; delayedRespawnRun = r; - map.getChannelServer().registerOverallAction(map.getId(), r, this.getDelay()); + + OverallService service = (OverallService) map.getChannelServer().getServiceAccess(ServiceType.OVERALL); + service.registerOverallAction(map.getId(), r, this.getDelay()); } public boolean forceDelayedRespawn() { Runnable r = delayedRespawnRun; if (r != null) { - map.getChannelServer().forceRunOverallAction(map.getId(), r); + OverallService service = (OverallService) map.getChannelServer().getServiceAccess(ServiceType.OVERALL); + service.forceRunOverallAction(map.getId(), r); return true; } else { return false; diff --git a/src/server/quest/actions/InfoAction.java b/src/server/quest/actions/InfoAction.java index 5c5830a18a..3561475dc6 100644 --- a/src/server/quest/actions/InfoAction.java +++ b/src/server/quest/actions/InfoAction.java @@ -20,6 +20,7 @@ package server.quest.actions; import client.MapleCharacter; +import client.MapleQuestStatus; import provider.MapleData; import provider.MapleDataTool; import server.quest.MapleQuest; diff --git a/tools/MapleInvalidItemWithNoNameFetcher/src/maplenoitemnamefetcher/MapleNoItemNameFetcher.java b/tools/MapleInvalidItemWithNoNameFetcher/src/maplenoitemnamefetcher/MapleNoItemNameFetcher.java index 5d1bb4528e..096a8c9c7f 100644 --- a/tools/MapleInvalidItemWithNoNameFetcher/src/maplenoitemnamefetcher/MapleNoItemNameFetcher.java +++ b/tools/MapleInvalidItemWithNoNameFetcher/src/maplenoitemnamefetcher/MapleNoItemNameFetcher.java @@ -445,7 +445,7 @@ public class MapleNoItemNameFetcher { private static String getMissingEquipDesc(int itemid) { String s = descContentCache.get(itemid); - if (s == null) { + if (s == null && itemid >= 2000000) { // thanks Halcyon for noticing "missing info" on equips s = "MISSING INFO " + itemid; } From efbf415787e66e5d28c296871da9c21f03027d97 Mon Sep 17 00:00:00 2001 From: ronancpl Date: Sat, 12 Oct 2019 17:31:38 -0300 Subject: [PATCH 33/37] Update db_database.sql --- sql/db_database.sql | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sql/db_database.sql b/sql/db_database.sql index 2c71f7eb4c..38f2723676 100644 --- a/sql/db_database.sql +++ b/sql/db_database.sql @@ -8,9 +8,9 @@ SET time_zone = "+00:00"; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; -DROP DATABASE IF EXISTS `heavenms2`; -CREATE DATABASE `heavenms2` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; -USE `heavenms2`; +DROP DATABASE IF EXISTS `heavenms`; +CREATE DATABASE `heavenms` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; +USE `heavenms`; CREATE TABLE IF NOT EXISTS `accounts` ( `id` int(11) NOT NULL AUTO_INCREMENT, From 54cdba01aef107c96ea645a0cae992e4ac2dbd7a Mon Sep 17 00:00:00 2001 From: salem909 Date: Tue, 15 Oct 2019 11:13:22 -0700 Subject: [PATCH 34/37] Update AbstractMovementPacketHandler (#532) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updatePosition should throw exception too in default case 👍 --- .../server/channel/handlers/AbstractMovementPacketHandler.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/net/server/channel/handlers/AbstractMovementPacketHandler.java b/src/net/server/channel/handlers/AbstractMovementPacketHandler.java index 621946e15d..2c56a360da 100644 --- a/src/net/server/channel/handlers/AbstractMovementPacketHandler.java +++ b/src/net/server/channel/handlers/AbstractMovementPacketHandler.java @@ -41,6 +41,7 @@ public abstract class AbstractMovementPacketHandler extends AbstractMaplePacketH protected List parseMovement(LittleEndianAccessor lea) throws EmptyMovementException { List res = new ArrayList<>(); byte numCommands = lea.readByte(); + if (numCommands < 1) throw new EmptyMovementException(lea); for (byte i = 0; i < numCommands; i++) { byte command = lea.readByte(); switch (command) { @@ -236,7 +237,7 @@ public abstract class AbstractMovementPacketHandler extends AbstractMaplePacketH } default: System.out.println("Unhandled Case:" + command); - return; + throw new EmptyMovementException(lea); } } } From 7d8d4691daa9a956e4662687c0c970c6c7cd62f2 Mon Sep 17 00:00:00 2001 From: ronancpl Date: Tue, 29 Oct 2019 01:48:58 -0300 Subject: [PATCH 35/37] Services unrestrained to channels + Event scripts placeholder Fixed an inconsistent scenario where player data would remain in world player storage even though they were no longer online. Implemented missing functionality for "Safety Charm" which allows 30% MaxHP/MP heal on return. Improved services facility, no longer tightly related to channels. Implemented a world service for "save players" (services acts as a monitor). Reviewed the event script initialization approach. Players no longer are retained from logging in on a channel whilst the events don't finish loadup. Fixed certain quest items not showing up, which would happen due to them not being quest requisites. Fixed NPC Pi crashing players when trying to craft arrows. Fixed pet re-evolution quest not working on Robos. Fixed boss HPBar not disappearing in certain situations. Revised gathered mob info on linked mobs, no longer marshaling stats. Fixed two possible deadlock scenarios within the cancel effect method. Added lock auditing support for read-write locks. Implemented code support for Cygnus intro clip. Reviewed updateBuffEffect, now properly checking for pirate buffs in order to send the expected packet. Reviewed unnecessary load of field objects, which would be doing so just for fetching the predicted map names. Fixed mob buff tooltips not showing on "fake" mobs in the event of them turning into "real". Reviewed usage of "unique" constraint on petid within the inventoryitems table. Fixed portal in Ariant unexpectedly leading players who completed the "secret passageway" of Sleepywood into it. Fixed a loop case in quest scripts from Magatia's broker having ore request. --- docs/mychanges_ptbr.txt | 39 +++++- scripts/map/onUserEnter/cygnusJobTutorial.js | 25 ++++ scripts/map/onUserEnter/startEreb.js | 5 + scripts/npc/1012103.js | 2 +- scripts/npc/1096005.js | 1 - scripts/npc/2040016.js | 27 +++-- scripts/npc/9977777.js | 5 +- scripts/portal/highposition.js | 1 + scripts/portal/thief_in1.js | 9 +- scripts/quest/20020.js | 2 +- scripts/quest/3301.js | 31 +++-- scripts/quest/3303.js | 37 +++--- scripts/quest/8189.js | 73 ++++++------ sql/db_database.sql | 4 +- src/client/AbstractMapleCharacterObject.java | 18 +-- src/client/MapleCharacter.java | 43 +++++-- src/client/MapleClient.java | 28 ++++- src/client/MonsterBook.java | 14 ++- .../command/commands/gm0/DisposeCommand.java | 2 + .../commands/gm0/MapOwnerClaimCommand.java | 29 +++-- .../command/commands/gm1/GotoCommand.java | 30 +++-- src/client/inventory/Item.java | 4 - src/client/inventory/ItemFactory.java | 4 +- src/constants/game/GameConstants.java | 2 +- src/net/server/PlayerStorage.java | 13 +- src/net/server/Server.java | 26 ++-- .../server/audit/locks/MonitoredLockType.java | 1 + src/net/server/channel/Channel.java | 39 +++--- .../channel/handlers/NPCAnimationHandler.java | 3 +- .../handlers/PlayerLoggedinHandler.java | 18 ++- .../channel/handlers/TakeDamageHandler.java | 2 +- .../coordinator/login/LoginStorage.java | 23 ++-- .../MaplePartySearchCoordinator.java | 15 ++- .../partysearch/PartySearchEchelon.java | 14 +-- .../partysearch/PartySearchStorage.java | 14 ++- .../login/CharlistRequestHandler.java | 2 +- .../handlers/login/LoginPasswordHandler.java | 1 + .../{channel => }/services/BaseScheduler.java | 2 +- .../task => services}/BaseService.java | 2 +- .../services/SchedulerListener.java | 2 +- .../{channel => }/services/Service.java | 4 +- src/net/server/services/ServiceType.java | 30 +++++ .../services/ServicesManager.java | 12 +- .../task/channel}/EventService.java | 6 +- .../task/channel}/FaceExpressionService.java | 6 +- .../task/channel}/MobAnimationService.java | 8 +- .../task/channel}/MobClearSkillService.java | 6 +- .../task/channel}/MobMistService.java | 6 +- .../task/channel}/MobStatusService.java | 8 +- .../task/channel}/OverallService.java | 6 +- .../task/world/CharacterSaveService.java | 62 ++++++++++ .../server/services/type/ChannelServices.java | 63 ++++++++++ .../type/WorldServices.java} | 25 ++-- src/net/server/world/World.java | 33 ++++-- src/scripting/AbstractPlayerInteraction.java | 13 ++ src/scripting/event/EventInstanceManager.java | 13 +- src/scripting/event/EventScriptManager.java | 41 +++++-- src/scripting/map/MapScriptMethods.java | 30 ++++- src/scripting/npc/NPCConversationManager.java | 12 -- src/server/MapleStatEffect.java | 19 +-- src/server/MapleStorage.java | 50 ++++---- src/server/life/MapleLifeFactory.java | 10 +- src/server/life/MapleMonster.java | 59 +++++----- src/server/life/MaplePlayerNPC.java | 14 ++- src/server/life/MaplePlayerNPCFactory.java | 9 +- src/server/life/MobSkill.java | 6 +- src/server/life/MobSkillFactory.java | 13 +- src/server/loot/MapleLootManager.java | 6 +- src/server/maps/MapleDoor.java | 6 +- src/server/maps/MapleDoorObject.java | 11 +- src/server/maps/MapleFootholdTree.java | 38 +++--- src/server/maps/MapleMap.java | 111 +++++++++++------- src/server/maps/MapleMapFactory.java | 23 +++- src/server/maps/MapleMapManager.java | 17 +-- src/server/maps/MapleReactor.java | 8 +- src/server/quest/MapleQuest.java | 10 +- src/server/quest/actions/ItemAction.java | 2 +- .../quest/requirements/ItemRequirement.java | 13 +- src/tools/IntervalBuilder.java | 17 +-- src/tools/MaplePacketCreator.java | 2 - 80 files changed, 944 insertions(+), 496 deletions(-) create mode 100644 scripts/map/onUserEnter/cygnusJobTutorial.js create mode 100644 scripts/map/onUserEnter/startEreb.js rename src/net/server/{channel => }/services/BaseScheduler.java (99%) rename src/net/server/{channel/services/task => services}/BaseService.java (96%) rename src/net/server/{channel => }/services/SchedulerListener.java (96%) rename src/net/server/{channel => }/services/Service.java (94%) create mode 100644 src/net/server/services/ServiceType.java rename src/net/server/{channel => }/services/ServicesManager.java (80%) rename src/net/server/{channel/services/task => services/task/channel}/EventService.java (93%) rename src/net/server/{channel/services/task => services/task/channel}/FaceExpressionService.java (96%) rename src/net/server/{channel/services/task => services/task/channel}/MobAnimationService.java (95%) rename src/net/server/{channel/services/task => services/task/channel}/MobClearSkillService.java (94%) rename src/net/server/{channel/services/task => services/task/channel}/MobMistService.java (93%) rename src/net/server/{channel/services/task => services/task/channel}/MobStatusService.java (97%) rename src/net/server/{channel/services/task => services/task/channel}/OverallService.java (94%) create mode 100644 src/net/server/services/task/world/CharacterSaveService.java create mode 100644 src/net/server/services/type/ChannelServices.java rename src/net/server/{channel/services/ServiceType.java => services/type/WorldServices.java} (69%) diff --git a/docs/mychanges_ptbr.txt b/docs/mychanges_ptbr.txt index 8e9a567bb3..4cd46d2581 100644 --- a/docs/mychanges_ptbr.txt +++ b/docs/mychanges_ptbr.txt @@ -2196,4 +2196,41 @@ Corrigido quest com NPC "Shaman Rock" aplicando progresso que não corresponde c Adicionado método que permite executar scripts de mapa no sistema de scripts de portal. Corrigido problema recente ao referenciar script com progresso "Touch the Sky" (script de portal utilizando métodos de scripts de mapa). Adicionado fallback para scripts de NPC MapleTV. -Revisado aplicação e abordagem deste código-base nos arquivos XML legado. \ No newline at end of file +Revisado aplicação e abordagem deste código-base nos arquivos XML legado. + +15 - 16 Outubro 2019, +Corrigido caso inconsistente onde objeto de jogador seria mantido no storage de jogadores caso o jogador tentasse se deregistrar de um canal (sem desconectar) e não mais retornando na mesma sessão. +Adicionado código para funcionalidade de "Safety Charm", que permite jogadores curar 30% MaxHP/MaxMP ao retornar em campo. +Implementado extensão das facilidades de serviços, agora atuando desjuntamente de canais. +Implementado serviço de mundo para salvar jogadores, assim evitando geração de novas threads para cada jogador que está sendo persistido na DB. + +18 Outubro 2019, +Revisado abordagem de inicialização de scripts de eventos em canais. Usuários não são mais bloqueados ao tentar logar devido ao canal não ter todos os eventos carregados. + +19 Outubro 2019, +Corrigido certos itens de quest não aparecendo de mobs em casos onde o mesmo não é requisito para iniciar/completar. +Corrigido NPC Pi crashando jogadores ao tentar criar flechas. +Corrigido script de reevolução de pets não atuando em pet Robos, além de agora evitar repetir pets na conversão. + +21 - 22 Outubro 2019, +Corrigido boss HPbar não desaparecendo em certos cenários. O mesmo deveria ocorrer assim que mob é retirado do mapa. +Revisado informações de mob, que não são propagáveis, sendo repassados à definição do novo mob. +Revisado carregamento de storages ao inicializar informações de conta podendo retornar nulo indevidamente em caso de exceção lançada. +Corrigido dois casos de deadlock ocorrendo ao tentar cancelar efeito de stat de jogador. +Adicionado auditoria de locks para os componentes que travam para leitura e escrita. +Adicionado clip de introdução de Cygnus. +Revisado updateBuffEffect, agora checando por determinados buffs de pirata e usando pacotes específicos para os mesmos. +Revisado geração desnecessária de objetos de mapa ao carregar nomes para comando "goto". +Corrigido buffs de mob em fakes desaparecendo assim que o mesmo muda de estado para real. + +24 Outubro 2019, +Revisado uso de scriptids na geração de PlayerNPCs. Agora somente ids existentes na base especificada vai adiante. + +27 Outubro 2019, +Revisado lógica booleana na detecção de foothold abaixo, não realizando múltiplas checagens sobre um mesmo atributo. + +28 Outubro 2019, +Revisado lógica recente de uso de petid único levando a lançamento de exceção (transações de DB implica retirada de item de pet do CS storage na DB antes de colocar o mesmo no inventário). +Corrigido portal relacionado a quest em Ariant inesperadamente levando jogadores à passagem secreta de Sleepywood, em caso de conclusão de questline da mesma. +Corrigido loop em scripts de quest de associação a Alcadno/Zenumist em Magatia. +Adicionado utilização de dispose em quest scripts para o comando homônimo. \ No newline at end of file diff --git a/scripts/map/onUserEnter/cygnusJobTutorial.js b/scripts/map/onUserEnter/cygnusJobTutorial.js new file mode 100644 index 0000000000..f7eb69877d --- /dev/null +++ b/scripts/map/onUserEnter/cygnusJobTutorial.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start(ms) { + ms.displayCygnusIntro(); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/startEreb.js b/scripts/map/onUserEnter/startEreb.js new file mode 100644 index 0000000000..7351fdf8dc --- /dev/null +++ b/scripts/map/onUserEnter/startEreb.js @@ -0,0 +1,5 @@ +function start(ms) { + if (ms.getJobId() == 1000 && ms.getLevel() >= 10) { + ms.unlockUI(); + } +} \ No newline at end of file diff --git a/scripts/npc/1012103.js b/scripts/npc/1012103.js index 2984176cd9..9b27839836 100644 --- a/scripts/npc/1012103.js +++ b/scripts/npc/1012103.js @@ -72,7 +72,7 @@ function action(mode, type, selection) { } else if (status == 2){ cm.dispose(); if (beauty == 1){ - if (cm.haveItem(5420002)){ + if (cm.haveItem(5420002)){ // thanks MedicOP for noticing uncoded functionality for Hair Membership coupons cm.setHair(hairnew[selection]); cm.sendOk("Enjoy your new and improved hairstyle!"); } else if (cm.haveItem(5150001)){ diff --git a/scripts/npc/1096005.js b/scripts/npc/1096005.js index 84f971c7e2..117a444e68 100644 --- a/scripts/npc/1096005.js +++ b/scripts/npc/1096005.js @@ -18,7 +18,6 @@ function action(mode, type, selection) { cm.sendNext("All right! Let's go!"); } else if (status == 1) { cm.removeNPC(579711); - cm.removeNPC2(579711); cm.updateInfo("fire", "0"); cm.playSound("cannonshooter/fire"); cm.sendDirectionInfo("Effect/Direction4.img/effect/cannonshooter/flying/0", 7000, 0, 0, -1, -1); diff --git a/scripts/npc/2040016.js b/scripts/npc/2040016.js index 1c803d4cd8..3a2a99abf8 100644 --- a/scripts/npc/2040016.js +++ b/scripts/npc/2040016.js @@ -172,19 +172,7 @@ function action(mode, type, selection) { matQty = matQtySet[selectedItem]; cost = costSet[selectedItem]; } - - if (selectedType == 5){ //arrow refine - var itemSet = new Array(2060000,2061000,2060001,2061001,2060002,2061002); - var matSet = new Array(new Array (4003001,4003004),new Array (4003001,4003004),new Array (4011000,4003001,4003004),new Array (4011000,4003001,4003004), - new Array (4011001,4003001,4003005),new Array (4011001,4003001,4003005)); - var matQtySet = new Array (new Array (1,1),new Array (1,1),new Array (1,3,10),new Array (1,3,10),new Array (1,5,15),new Array (1,5,15)); - var costSet = new Array (0,0,0,0,0,0); - item = itemSet[selectedItem]; - mats = matSet[selectedItem]; - matQty = matQtySet[selectedItem]; - cost = costSet[selectedItem]; - } - + var prompt = "So, you want me to make some #t" + item + "#s? In that case, how many do you want me to make?"; cm.sendGetNumber(prompt,1,1,100) @@ -197,6 +185,19 @@ function action(mode, type, selection) { } else qty = (selection > 0) ? selection : (selection < 0 ? -selection : 1); + + // thanks kvmba for noticing arrow selection crashing players + if (selectedType == 5){ //arrow refine + var itemSet = new Array(2060000,2061000,2060001,2061001,2060002,2061002); + var matSet = new Array(new Array (4003001,4003004),new Array (4003001,4003004),new Array (4011000,4003001,4003004),new Array (4011000,4003001,4003004), + new Array (4011001,4003001,4003005),new Array (4011001,4003001,4003005)); + var matQtySet = new Array (new Array (1,1),new Array (1,1),new Array (1,3,10),new Array (1,3,10),new Array (1,5,15),new Array (1,5,15)); + var costSet = new Array (0,0,0,0,0,0); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } var prompt = "You want me to make "; if (qty == 1) diff --git a/scripts/npc/9977777.js b/scripts/npc/9977777.js index 6990389bcd..9ac781cf1d 100644 --- a/scripts/npc/9977777.js +++ b/scripts/npc/9977777.js @@ -77,7 +77,7 @@ function writeFeatureTab_Quests() { addFeature("3rd job quiz with all 40-question pool available."); addFeature("Item raising functional."); addFeature("Cleared issue with player movement during NPC talk."); - addFeature("Reviewed usage of quest progress data as requirement."); + addFeature("Reviewed usage of quest progress data as requisite."); } function writeFeatureTab_PlayerSocialNetwork() { @@ -287,6 +287,7 @@ function writeFeatureTab_Project() { addFeature("Remodeled item scripts, properly using NPC dialogs."); addFeature("ThreadTracker: runtime tool for deadlock detection."); addFeature("Channel, World and Server-wide timer management."); + addFeature("Developed services as preemptive task scheduler."); addFeature("Thoroughly reviewed encapsulation for player stats."); addFeature("Heavily reviewed future task management, spawning much less threads and relieving task overload on the TimerManager."); } @@ -327,7 +328,7 @@ function action(mode, type, selection) { status--; if (status == 0) { - var sendStr = "HeavenMS was developed on the timespan of 3 years, based on where Solaxia left. I'm glad to say the development itself had continuously been agraciated by dozens of contributors and cheerers (truly thanks for the trusting vow, guys & gals!).\r\n\r\nTalking about results: many nice features emerged, development aimed to get back the old GMS experience. Now many of these so-long missing features are gracefully presented to you in the shape of this server. Long live MapleStory!!\r\n\r\nThese are the features from #bHeavenMS#k:\r\n\r\n"; + var sendStr = "HeavenMS was developed on the timespan of 4 years, based on where Solaxia left. I'm glad to say the development itself had continuously been agraciated by dozens of contributors and cheerers (truly thanks for the trusting vow, guys & gals!).\r\n\r\nTalking about results: many nice features emerged, development aimed to get back the old GMS experience. Now many of these so-long missing features are gracefully presented to you in the shape of this server. Long live MapleStory!!\r\n\r\nThese are the features from #bHeavenMS#k:\r\n\r\n"; for(var i = 0; i < tabs.length; i++) { sendStr += "#L" + i + "##b" + tabs[i] + "#k#l\r\n"; } diff --git a/scripts/portal/highposition.js b/scripts/portal/highposition.js index e19516f8a5..2496c7eed6 100644 --- a/scripts/portal/highposition.js +++ b/scripts/portal/highposition.js @@ -22,6 +22,7 @@ // Author: Ronan function enter(ms) { + // thanks kvmba for noticing some issues running this script ms.runMapScript(); return false; } \ No newline at end of file diff --git a/scripts/portal/thief_in1.js b/scripts/portal/thief_in1.js index a51f5c69ab..796f9541bf 100644 --- a/scripts/portal/thief_in1.js +++ b/scripts/portal/thief_in1.js @@ -1,9 +1,6 @@ function enter(pi) { - if(pi.isQuestCompleted(20730) || pi.isQuestCompleted(21734)) { // puppeteer defeated, newfound secret path - pi.playPortalSound(); pi.warp(105040201,2); - return true; - } - - pi.openNpc(1063011, "ThiefPassword"); + // unexpected warp condition noticed thanks to IxianMace + + pi.openNpc(1063011, "ThiefPassword"); return false; } \ No newline at end of file diff --git a/scripts/quest/20020.js b/scripts/quest/20020.js index 03e87a5f2f..91b02cc2f1 100644 --- a/scripts/quest/20020.js +++ b/scripts/quest/20020.js @@ -31,7 +31,7 @@ function start(mode, type, selection) { } else if (status == 4) { qm.forceStartQuest(); qm.forceCompleteQuest(); - //qm.warp(913040100, 0); + qm.warp(913040100, 0); qm.dispose(); } } diff --git a/scripts/quest/3301.js b/scripts/quest/3301.js index 9bd68a33b7..3e0352f326 100644 --- a/scripts/quest/3301.js +++ b/scripts/quest/3301.js @@ -28,32 +28,39 @@ var status = -1; var oreArray; -function start(mode, type, selection) { -} - function end(mode, type, selection) { - if (mode == -1 || (mode == 0 && type > 0)) { - qm.dispose(); + if (mode == -1) { + qm.dispose(); } else { - oreArray = getOreArray(); - if (status == -1) { + if (mode == 0 && type > 0) { + qm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + oreArray = getOreArray(); if (oreArray.length > 0) { - status++; qm.sendSimple("Oh, looks like someone's ready to make a deal. You want to join Zenumist so badly, huh? I really don't understand you, but that's just fine. What will you give me in return?\r\n" + getOreString(oreArray)); } else { - qm.sendOk("What is this, you don't have the ores with you. No ore, no deal."); + qm.sendOk("What is this, you don't have the #rjewel ores#k with you. No ore, no deal."); qm.dispose(); + return; } - } else if (status == 0) { + } else if (status == 1) { if (!qm.haveItem(oreArray[selection], 2)) { - qm.sendNext("What's this, you haven't got the ores. No ores no deal!"); + qm.sendNext("What's this, you haven't got the #rjewel ores#k. No ores no deal!"); + qm.dispose(); return; } qm.gainItem(oreArray[selection], -2); // Take 2 ores qm.sendNext("Then wait for awhile. I'll go and get the stuff to help you pass the test of Chief Zenumist."); qm.forceCompleteQuest(); - } else if (status == 1) { + } else if (status == 2) { qm.dispose(); } } diff --git a/scripts/quest/3303.js b/scripts/quest/3303.js index 402f42317f..d6884ab614 100644 --- a/scripts/quest/3303.js +++ b/scripts/quest/3303.js @@ -28,32 +28,39 @@ var status = -1; var oreArray; -function start(mode, type, selection) { -} - function end(mode, type, selection) { - if (mode == -1 || (mode == 0 && type > 0)) { - qm.dispose(); + if (mode == -1) { + qm.dispose(); } else { - oreArray = getOreArray(); - if (status == -1) { + if (mode == 0 && type > 0) { + qm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + oreArray = getOreArray(); if (oreArray.length > 0) { - status++; - qm.sendSimple("Oh, looks like someone's ready to make a deal. You want to join Alcadno so badly, huh? I really don't understand you, but that's just fine. What will you give me in return?\r\n" + getOreString(oreArray)); + qm.sendSimple("Oh, looks like someone's ready to make a deal. You want to join Zenumist so badly, huh? I really don't understand you, but that's just fine. What will you give me in return?\r\n" + getOreString(oreArray)); } else { - qm.sendOk("What is this, you don't have the ores with you. No ore, no deal."); + qm.sendOk("What is this, you don't have the #rjewel ores#k with you. No ore, no deal."); // script would loop undefinitely at completion, thanks IxianMace for noticing qm.dispose(); + return; } - } else if (status == 0) { + } else if (status == 1) { if (!qm.haveItem(oreArray[selection], 2)) { // thanks resinate for noticing a function missing here - qm.sendNext("What's this, you haven't got the ores. No ores no deal!"); + qm.sendNext("What's this, you haven't got the #rjewel ores#k. No ores no deal!"); + qm.dispose(); return; } - + qm.gainItem(oreArray[selection], -2); // Take 2 ores - qm.sendNext("Then wait for awhile. I'll go and get the stuff to help you pass the test of Chief Alcadno."); + qm.sendNext("Then wait for awhile. I'll go and get the stuff to help you pass the test of Chief Zenumist."); qm.forceCompleteQuest(); - } else if (status == 1) { + } else if (status == 2) { qm.dispose(); } } diff --git a/scripts/quest/8189.js b/scripts/quest/8189.js index 64b6b82f5b..bc0d038f3a 100644 --- a/scripts/quest/8189.js +++ b/scripts/quest/8189.js @@ -47,39 +47,46 @@ function end(mode, type, selection) { } else if (status == 1) { qm.sendNextPrev("Then here we go...! #rHYAHH!#k"); } else if (status == 2) { - var pet = 0; - if (qm.getPlayer().getPet(0).getItemId() >= 5000029 && qm.getPlayer().getPet(0).getItemId() <= 5000033) { - var pet = 0; - } else if (qm.getPlayer().getPet(1).getItemId() >= 5000029 && qm.getPlayer().getPet(1).getItemId() <= 5000033) { - var pet = 1; - } else if (qm.getPlayer().getPet(2).getItemId() >= 5000029 && qm.getPlayer().getPet(2).getItemId() <= 5000033) { - var pet = 2; - } else { - qm.sendOk("Something wrong, try again."); - qm.dispose(); + var petidx = -1; + var petItemid; + for (var i = 0; i < 3; i++) { + var pet = qm.getPlayer().getPet(pet); + if (pet != null) { + var id = pet.getItemId(); + if (id >= 5000029 && id <= 5000033) { + petItemid = 5000030; + petidx = i; + break; + } else if (id >= 5000048 && id <= 5000053) { // thanks Conrad for noticing Robo pets not being able to re-evolve + petItemid = 5000049; + petidx = i; + break; + } + } + } + + if (petidx == -1) { + qm.sendOk("Something wrong, try again."); + qm.dispose(); return; - } - var id = qm.getPlayer().getPet(pet).getItemId(); - if (id < 5000029 || id > 5000033) { - qm.sendOk("Something wrong, try again."); - qm.dispose(); - return; - } - var rand = 1 + Math.floor(Math.random() * 10); - var after = 0; - if (rand >= 1 && rand <= 3) { - after = 5000030; - } else if (rand >= 4 && rand <= 6) { - after = 5000031; - } else if (rand >= 7 && rand <= 9) { - after = 5000032; - } else if (rand == 10) { - after = 5000033; - } else { - qm.sendOk("Something wrong. Try again."); - qm.dispose(); - return; - } + } + + var pool = (petItemid == 5000030) ? 10 : 11; + do { + var rand = 1 + Math.floor(Math.random() * pool); + var after = 0; + if (rand >= 1 && rand <= 3) { + after = petItemid; + } else if (rand >= 4 && rand <= 6) { + after = petItemid + 1; + } else if (rand >= 7 && rand <= 9) { + after = petItemid + 2; + } else if (rand == 10) { + after = petItemid + 3; + } else { + after = petItemid + 4; + } + } while (after == pet.getItemId()); /*if (name.equals(MapleItemInformationProvider.getInstance().getName(id))) { name = MapleItemInformationProvider.getInstance().getName(after); @@ -87,7 +94,7 @@ function end(mode, type, selection) { qm.gainMeso(-10000); qm.gainItem(5380000, -1); - qm.evolvePet(pet, after); + qm.evolvePet(petidx, after); qm.sendOk("Woo! It worked again! #rYou may find your new pet under your 'CASH' inventory.\r #kIt used to be a #b#i" + id + "##t" + id + "##k, and now it's \r a#b #i" + after + "##t" + after + "##k! \r\n Come back with 10,000 mesos and another Rock of Evolution if you don't like it!\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n#v"+after+"# #t"+after+"#"); } else if (status == 3) { diff --git a/sql/db_database.sql b/sql/db_database.sql index 38f2723676..c0cb3037d1 100644 --- a/sql/db_database.sql +++ b/sql/db_database.sql @@ -12968,7 +12968,7 @@ CREATE TABLE IF NOT EXISTS `inventoryitems` ( `position` int(11) NOT NULL DEFAULT '0', `quantity` int(11) NOT NULL DEFAULT '0', `owner` tinytext NOT NULL, - `petid` int(11) unsigned UNIQUE DEFAULT NULL, + `petid` int(11) NOT NULL DEFAULT '-1', `flag` int(11) NOT NULL, `expiration` bigint(20) NOT NULL DEFAULT '-1', `giftFrom` varchar(26) NOT NULL, @@ -16473,7 +16473,7 @@ CREATE TABLE IF NOT EXISTS `pets` ( PRIMARY KEY (`petid`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; -ALTER TABLE `inventoryitems` ADD CONSTRAINT `fk_itempetid` FOREIGN KEY (`petid`) REFERENCES `pets` (`petid`) ON DELETE SET NULL ; +ALTER TABLE `inventoryitems` ADD CONSTRAINT `fk_itempetid` FOREIGN KEY (`petid`) REFERENCES `pets` (`petid`) ON DELETE SET NULL ; # thanks Optimist for noticing queries over petid taking too long, shavit for pointing out an improvement using foreign key CREATE TABLE IF NOT EXISTS `petignores` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, diff --git a/src/client/AbstractMapleCharacterObject.java b/src/client/AbstractMapleCharacterObject.java index 9605477475..5b92ce2ec5 100644 --- a/src/client/AbstractMapleCharacterObject.java +++ b/src/client/AbstractMapleCharacterObject.java @@ -21,17 +21,17 @@ package client; import config.YamlConfig; import constants.game.GameConstants; -import constants.net.ServerConstants; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReentrantReadWriteLock; -import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock; -import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; import net.server.audit.locks.MonitoredLockType; +import net.server.audit.locks.MonitoredReadLock; import net.server.audit.locks.MonitoredReentrantReadWriteLock; +import net.server.audit.locks.MonitoredWriteLock; +import net.server.audit.locks.factory.MonitoredReadLockFactory; import net.server.audit.locks.factory.MonitoredReentrantLockFactory; +import net.server.audit.locks.factory.MonitoredWriteLockFactory; import server.maps.AbstractAnimatedMapleMapObject; import server.maps.MapleMap; @@ -51,13 +51,13 @@ public abstract class AbstractMapleCharacterObject extends AbstractAnimatedMaple protected Map statUpdates = new HashMap<>(); protected Lock effLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CHARACTER_EFF, true); - protected ReadLock statRlock; - protected WriteLock statWlock; + protected MonitoredReadLock statRlock; + protected MonitoredWriteLock statWlock; protected AbstractMapleCharacterObject() { - ReentrantReadWriteLock locks = new MonitoredReentrantReadWriteLock(MonitoredLockType.CHARACTER_STA, true); - statRlock = locks.readLock(); - statWlock = locks.writeLock(); + MonitoredReentrantReadWriteLock locks = new MonitoredReentrantReadWriteLock(MonitoredLockType.CHARACTER_STA, true); + statRlock = MonitoredReadLockFactory.createLock(locks); + statWlock = MonitoredWriteLockFactory.createLock(locks); for (int i = 0; i < remainingSp.length; i++) { remainingSp[i] = 0; diff --git a/src/client/MapleCharacter.java b/src/client/MapleCharacter.java index 1488258ec0..7fe7e60fd7 100644 --- a/src/client/MapleCharacter.java +++ b/src/client/MapleCharacter.java @@ -171,9 +171,11 @@ import constants.skills.Shadower; import constants.skills.Sniper; import constants.skills.Warrior; import constants.skills.ThunderBreaker; -import net.server.channel.services.ServiceType; -import net.server.channel.services.task.BaseService; -import net.server.channel.services.task.FaceExpressionService; +import net.server.services.type.ChannelServices; +import net.server.services.task.channel.FaceExpressionService; +import net.server.services.task.world.CharacterSaveService; +import net.server.services.type.WorldServices; +import org.apache.mina.core.session.IoSession; import org.apache.mina.util.ConcurrentHashSet; public class MapleCharacter extends AbstractMapleCharacterObject { @@ -214,6 +216,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { private int localchairrate; private boolean hidden, equipchanged = true, berserk, hasMerchant, hasSandboxItem = false, whiteChat = false, canRecvPartySearchInvite = true; private boolean equippedMesoMagnet = false, equippedItemPouch = false, equippedPetItemIgnore = false; + private boolean usedSafetyCharm = false; private float autopotHpAlert, autopotMpAlert; private int linkedLevel = 0; private String linkedName = null; @@ -565,7 +568,9 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public void setSessionTransitionState() { - client.getSession().setAttribute(MapleClient.CLIENT_TRANSITION); + IoSession session = client.getSession(); + session.setAttribute(MapleClient.CLIENT_TRANSITION); + Server.getInstance().setCharacteridInTransition(session, this.getId()); } public boolean getCS() { @@ -2846,7 +2851,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { if(timeNow - lastExpression > 2000) { lastExpression = timeNow; - FaceExpressionService service = (FaceExpressionService) client.getChannelServer().getServiceAccess(ServiceType.FACE_EXPRESSION); + FaceExpressionService service = (FaceExpressionService) client.getChannelServer().getServiceAccess(ChannelServices.FACE_EXPRESSION); service.registerFaceExpression(map, this, emote); } } @@ -3863,11 +3868,13 @@ public class MapleCharacter extends AbstractMapleCharacterObject { public boolean cancelEffect(MapleStatEffect effect, boolean overwrite, long startTime) { boolean ret; + prtLock.lock(); effLock.lock(); try { ret = cancelEffect(effect, overwrite, startTime, true); } finally { effLock.unlock(); + prtLock.unlock(); } if (effect.isMagicDoor() && ret) { @@ -4580,6 +4587,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { startChairTask(); } + prtLock.lock(); effLock.lock(); chrLock.lock(); try { @@ -4596,7 +4604,6 @@ public class MapleCharacter extends AbstractMapleCharacterObject { toDeploy = new LinkedHashMap<>(); Map> retrievedEffects = new LinkedHashMap<>(); Set retrievedStats = new LinkedHashSet<>(); - for (Entry statup : appliedStatups.entrySet()) { MapleBuffStatValueHolder mbsvh = effects.get(statup.getKey()); MapleBuffStatValueHolder statMbsvh = statup.getValue(); @@ -4655,6 +4662,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } finally { chrLock.unlock(); effLock.unlock(); + prtLock.unlock(); } updateLocalStats(); @@ -5854,13 +5862,19 @@ public class MapleCharacter extends AbstractMapleCharacterObject { int amountNeeded, questStatus = this.getQuestStatus(questid); if (questStatus == 0) { amountNeeded = MapleQuest.getInstance(questid).getStartItemAmountNeeded(itemid); + if (amountNeeded == Integer.MIN_VALUE) { + return false; + } } else if (questStatus != 1) { return false; } else { amountNeeded = MapleQuest.getInstance(questid).getCompleteItemAmountNeeded(itemid); + if (amountNeeded == Integer.MAX_VALUE) { + return true; + } } - return amountNeeded > 0 && getInventory(ItemConstants.getInventoryType(itemid)).countById(itemid) < amountNeeded; + return getInventory(ItemConstants.getInventoryType(itemid)).countById(itemid) < amountNeeded; } public int getRank() { @@ -6208,6 +6222,8 @@ public class MapleCharacter extends AbstractMapleCharacterObject { if (timeNow < getNextBuybackTime() && avail) { s += "Buyback available in #r" + getTimeRemaining(getNextBuybackTime() - timeNow) + "#k"; s += "\r\n"; + } else { + s += "Buyback #bavailable#k"; } this.showHint(s); @@ -7619,6 +7635,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { if (possesed > 0 && !GameConstants.isDojo(getMapId())) { message("You have used a safety charm, so your EXP points have not been decreased."); MapleInventoryManipulator.removeById(client, ItemConstants.getInventoryType(charmID[i]), charmID[i], 1, true, false); + usedSafetyCharm = true; } else if (getJob() != MapleJob.BEGINNER) { //Hmm... if (!FieldLimit.NO_EXP_DECREASE.check(getMap().getFieldLimit())) { // thanks Conrad for noticing missing FieldLimit check int XPdummy = ExpTable.getExpNeededForLevel(getLevel()); @@ -7715,7 +7732,13 @@ public class MapleCharacter extends AbstractMapleCharacterObject { changeMap(returnMap); cancelAllBuffs(false); // thanks Oblivium91 for finding out players still could revive in area and take damage before returning to town - updateHp(50); + + if (usedSafetyCharm) { // thanks kvmba for noticing safety charm not providing 30% HP/MP + addMPHP((int) Math.ceil(this.getClientMaxHp() * 0.3), (int) Math.ceil(this.getClientMaxMp() * 0.3)); + } else { + updateHp(50); + } + setStance(0); } @@ -8378,7 +8401,8 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } }; - ThreadManager.getInstance().newTask(r); //spawns a new thread to deal with this + CharacterSaveService service = (CharacterSaveService) getWorldServer().getServiceAccess(WorldServices.SAVE_CHARACTER); + service.registerSaveCharacter(this.getId(), r); } else { saveCharToDB(true); } @@ -9958,6 +9982,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { if (qs.getInfoNumber() > 0) { announceUpdateQuest(DelayedQuestUpdate.UPDATE, qs, true); } + // reminder: do not reset quest progress of infoNumbers, some quests cannot backtrack } } diff --git a/src/client/MapleClient.java b/src/client/MapleClient.java index 887f225e9e..792e3da9ac 100644 --- a/src/client/MapleClient.java +++ b/src/client/MapleClient.java @@ -64,7 +64,6 @@ import org.apache.mina.core.session.IoSession; import client.inventory.MapleInventoryType; import constants.game.GameConstants; -import constants.net.ServerConstants; import scripting.AbstractPlayerInteraction; import scripting.event.EventInstanceManager; import scripting.event.EventManager; @@ -120,7 +119,8 @@ public class MapleClient { private final Lock lock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CLIENT, true); private final Lock encoderLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CLIENT_ENCODER, true); private final Lock announcerLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CLIENT_ANNOUNCER, true); - private static final Lock loginLocks[] = new Lock[200]; // thanks Masterrulax & try2hack for pointing out a bottleneck issue here + private static final int lockCount = 200; + private static final Lock loginLocks[] = new Lock[lockCount]; // thanks Masterrulax & try2hack for pointing out a bottleneck issue here private Calendar tempBanCalendar; private int votePoints; private int voteTime = -1; @@ -131,7 +131,7 @@ public class MapleClient { private int lang = 0; static { - for (int i = 0; i < 200; i++) { + for (int i = 0; i < lockCount; i++) { loginLocks[i] = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CLIENT_LOGIN, true); } } @@ -454,14 +454,14 @@ public class MapleClient { } public int finishLogin() { - Lock loginLock = loginLocks[this.getAccID() % 200]; + Lock loginLock = loginLocks[this.getAccID() % lockCount]; loginLock.lock(); try { if (getLoginState() > LOGIN_NOTLOGGEDIN) { // 0 = LOGIN_NOTLOGGEDIN, 1= LOGIN_SERVER_TRANSITION, 2 = LOGIN_LOGGEDIN loggedIn = false; return 7; } - updateLoginState(LOGIN_LOGGEDIN); + updateLoginState(MapleClient.LOGIN_LOGGEDIN); } finally { loginLock.unlock(); } @@ -851,7 +851,7 @@ public class MapleClient { if (rs.getTimestamp("lastlogin").getTime() + 30000 < Server.getInstance().getCurrentTime()) { int accountId = accId; state = LOGIN_NOTLOGGEDIN; - updateLoginState(LOGIN_NOTLOGGEDIN); // ACCID = 0, issue found thanks to Tochi & K u ssss o & Thora & Omo Oppa + updateLoginState(MapleClient.LOGIN_NOTLOGGEDIN); // ACCID = 0, issue found thanks to Tochi & K u ssss o & Thora & Omo Oppa this.setAccID(accountId); } } @@ -1231,6 +1231,22 @@ public class MapleClient { } return disconnectForBeingAFaggot; } + + public void checkChar(int accid) { /// issue with multiple chars from same account login found by shavit, resinate + if (true) { + return; + } + + for (World w : Server.getInstance().getWorlds()) { + for (MapleCharacter chr : w.getPlayerStorage().getAllCharacters()) { + if (accid == chr.getAccountID()) { + FilePrinter.print(FilePrinter.EXPLOITS, "Player: " + chr.getName() + " has been removed from " + GameConstants.WORLD_NAMES[w.getId()] + ". Possible Dupe attempt."); + chr.getClient().forceDisconnect(); + w.getPlayerStorage().removePlayer(chr.getId()); + } + } + } + } public int getVotePoints(){ int points = 0; diff --git a/src/client/MonsterBook.java b/src/client/MonsterBook.java index 1d2c6e41e3..6190b45f26 100644 --- a/src/client/MonsterBook.java +++ b/src/client/MonsterBook.java @@ -82,7 +82,9 @@ public final class MonsterBook { } if(qty < 5) { - calculateLevel(); // current leveling system only accounts unique cards... + if (qty == 0) { // leveling system only accounts unique cards + calculateLevel(); + } c.announce(MaplePacketCreator.addCard(false, cardid, qty + 1)); c.announce(MaplePacketCreator.showGainCard()); @@ -94,7 +96,15 @@ public final class MonsterBook { private void calculateLevel() { lock.lock(); try { - bookLevel = (int) Math.max(1, Math.sqrt((normalCard + specialCard) / 5)); + int collectionExp = (normalCard + specialCard); + + int level = 0, expToNextlevel = 1; + do { + level++; + expToNextlevel += level * 10; + } while (collectionExp >= expToNextlevel); + + bookLevel = level; // thanks IxianMace for noticing book level differing between book UI and character info UI } finally { lock.unlock(); } diff --git a/src/client/command/commands/gm0/DisposeCommand.java b/src/client/command/commands/gm0/DisposeCommand.java index a11d97d87f..eed816cde2 100644 --- a/src/client/command/commands/gm0/DisposeCommand.java +++ b/src/client/command/commands/gm0/DisposeCommand.java @@ -26,6 +26,7 @@ package client.command.commands.gm0; import client.command.Command; import client.MapleClient; import scripting.npc.NPCScriptManager; +import scripting.quest.QuestScriptManager; import tools.MaplePacketCreator; public class DisposeCommand extends Command { @@ -36,6 +37,7 @@ public class DisposeCommand extends Command { @Override public void execute(MapleClient c, String[] params) { NPCScriptManager.getInstance().dispose(c); + QuestScriptManager.getInstance().dispose(c); c.announce(MaplePacketCreator.enableActions()); c.removeClickedNPC(); c.getPlayer().message("You've been disposed."); diff --git a/src/client/command/commands/gm0/MapOwnerClaimCommand.java b/src/client/command/commands/gm0/MapOwnerClaimCommand.java index 0af26ca355..52c7824da9 100644 --- a/src/client/command/commands/gm0/MapOwnerClaimCommand.java +++ b/src/client/command/commands/gm0/MapOwnerClaimCommand.java @@ -42,20 +42,25 @@ public class MapOwnerClaimCommand extends Command { if (YamlConfig.config.server.USE_MAP_OWNERSHIP_SYSTEM) { if (chr.getEventInstance() == null) { - MapleMap ownedMap = chr.getOwnedMap(); // thanks Conrad for suggesting not unlease a map as soon as player exits it - if (ownedMap != null) { - ownedMap.unclaimOwnership(chr); - - if (chr.getMap() == ownedMap) { - chr.dropMessage(5, "This lawn is now free real estate."); - return; + MapleMap map = chr.getMap(); + if (map.countBosses() == 0) { // thanks Conrad for suggesting bosses prevent map leasing + MapleMap ownedMap = chr.getOwnedMap(); // thanks Conrad for suggesting not unlease a map as soon as player exits it + if (ownedMap != null) { + ownedMap.unclaimOwnership(chr); + + if (map == ownedMap) { + chr.dropMessage(5, "This lawn is now free real estate."); + return; + } + } + + if (map.claimOwnership(chr)) { + chr.dropMessage(5, "You have leased this lawn for a while, until you leave here or after 1 minute of inactivity."); + } else { + chr.dropMessage(5, "This lawn has already been leased by a player."); } - } - - if (chr.getMap().claimOwnership(chr)) { - chr.dropMessage(5, "You have leased this lawn for a while, until you leave here or after 1 minute of inactivity."); } else { - chr.dropMessage(5, "This lawn has already been leased by a player."); + chr.dropMessage(5, "This lawn is currently under a boss siege."); } } else { chr.dropMessage(5, "This lawn cannot be leased."); diff --git a/src/client/command/commands/gm1/GotoCommand.java b/src/client/command/commands/gm1/GotoCommand.java index 3dbf0fc991..1657e467dd 100644 --- a/src/client/command/commands/gm1/GotoCommand.java +++ b/src/client/command/commands/gm1/GotoCommand.java @@ -29,11 +29,10 @@ import client.MapleClient; import constants.game.GameConstants; import java.util.ArrayList; import java.util.Collections; -import net.server.Server; import server.maps.MaplePortal; import server.maps.FieldLimit; import server.maps.MapleMap; -import server.maps.MapleMapManager; +import server.maps.MapleMapFactory; import server.maps.MapleMiniDungeonInfo; import java.util.Comparator; @@ -47,19 +46,28 @@ public class GotoCommand extends Command { { setDescription(""); - MapleMapManager mapManager = Server.getInstance().getWorlds().get(0).getChannels().get(0).getMapFactory(); - List> towns = new ArrayList<>(GameConstants.GOTO_TOWNS.entrySet()); sortGotoEntries(towns); - for (Map.Entry e : towns) { - GOTO_TOWNS_INFO += ("'" + e.getKey() + "' - #b" + (mapManager.getMap(e.getValue()).getMapName()) + "#k\r\n"); + + try { + // thanks shavit for noticing goto areas getting loaded from wz needlessly, only for the name retrieval + + for (Map.Entry e : towns) { + GOTO_TOWNS_INFO += ("'" + e.getKey() + "' - #b" + (MapleMapFactory.loadPlaceName(e.getValue())) + "#k\r\n"); + } + + List> areas = new ArrayList<>(GameConstants.GOTO_AREAS.entrySet()); + sortGotoEntries(areas); + for (Map.Entry e : areas) { + GOTO_AREAS_INFO += ("'" + e.getKey() + "' - #b" + (MapleMapFactory.loadPlaceName(e.getValue())) + "#k\r\n"); + } + } catch (Exception e) { + e.printStackTrace(); + + GOTO_TOWNS_INFO = "(none)"; + GOTO_AREAS_INFO = "(none)"; } - List> areas = new ArrayList<>(GameConstants.GOTO_AREAS.entrySet()); - sortGotoEntries(areas); - for (Map.Entry e : areas) { - GOTO_AREAS_INFO += ("'" + e.getKey() + "' - #b" + (mapManager.getMap(e.getValue()).getMapName()) + "#k\r\n"); - } } public static String GOTO_TOWNS_INFO = ""; diff --git a/src/client/inventory/Item.java b/src/client/inventory/Item.java index fdd8712292..5da563f29d 100644 --- a/src/client/inventory/Item.java +++ b/src/client/inventory/Item.java @@ -127,10 +127,6 @@ public class Item implements Comparable { return petid; } - public Integer getPetIdForDb() { - return petid > -1 ? petid : null; - } - @Override public int compareTo(Item other) { if (this.id < other.getItemId()) { diff --git a/src/client/inventory/ItemFactory.java b/src/client/inventory/ItemFactory.java index fa7f4fac97..7ece9b334b 100644 --- a/src/client/inventory/ItemFactory.java +++ b/src/client/inventory/ItemFactory.java @@ -234,7 +234,7 @@ public enum ItemFactory { ps.setInt(6, item.getPosition()); ps.setInt(7, item.getQuantity()); ps.setString(8, item.getOwner()); - ps.setObject(9, item.getPetIdForDb(), java.sql.Types.INTEGER); + ps.setInt(9, item.getPetId()); // thanks Daddy Egg for alerting a case of unique petid constraint breach getting raised ps.setInt(10, item.getFlag()); ps.setLong(11, item.getExpiration()); ps.setString(12, item.getGiftFrom()); @@ -414,7 +414,7 @@ public enum ItemFactory { ps.setInt(6, item.getPosition()); ps.setInt(7, item.getQuantity()); ps.setString(8, item.getOwner()); - ps.setObject(9, item.getPetIdForDb(), java.sql.Types.INTEGER); + ps.setInt(9, item.getPetId()); ps.setInt(10, item.getFlag()); ps.setLong(11, item.getExpiration()); ps.setString(12, item.getGiftFrom()); diff --git a/src/constants/game/GameConstants.java b/src/constants/game/GameConstants.java index a2af847905..358b2d1ef1 100644 --- a/src/constants/game/GameConstants.java +++ b/src/constants/game/GameConstants.java @@ -573,7 +573,7 @@ public class GameConstants { } public static boolean isFreeMarketRoom(int mapid) { - return mapid > 910000000 && mapid < 910000023; + return mapid / 1000000 == 910 && mapid > 910000000; // FM rooms subset, thanks to shavit } public static boolean isMerchantLocked(MapleMap map) { diff --git a/src/net/server/PlayerStorage.java b/src/net/server/PlayerStorage.java index 2db15fc0e2..9576cad510 100644 --- a/src/net/server/PlayerStorage.java +++ b/src/net/server/PlayerStorage.java @@ -28,18 +28,19 @@ import java.util.Collection; import java.util.List; import java.util.LinkedHashMap; import java.util.Map; -import java.util.concurrent.locks.ReentrantReadWriteLock; -import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock; -import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; import net.server.audit.locks.MonitoredLockType; +import net.server.audit.locks.MonitoredReadLock; import net.server.audit.locks.MonitoredReentrantReadWriteLock; +import net.server.audit.locks.MonitoredWriteLock; +import net.server.audit.locks.factory.MonitoredReadLockFactory; +import net.server.audit.locks.factory.MonitoredWriteLockFactory; public class PlayerStorage { - private final ReentrantReadWriteLock locks = new MonitoredReentrantReadWriteLock(MonitoredLockType.PLAYER_STORAGE, true); + private final MonitoredReentrantReadWriteLock locks = new MonitoredReentrantReadWriteLock(MonitoredLockType.PLAYER_STORAGE, true); private final Map storage = new LinkedHashMap<>(); private final Map nameStorage = new LinkedHashMap<>(); - private ReadLock rlock = locks.readLock(); - private WriteLock wlock = locks.writeLock(); + private MonitoredReadLock rlock = MonitoredReadLockFactory.createLock(locks); + private MonitoredWriteLock wlock = MonitoredWriteLockFactory.createLock(locks); public void addPlayer(MapleCharacter chr) { wlock.lock(); diff --git a/src/net/server/Server.java b/src/net/server/Server.java index 1f1fbb7398..f5f351d72d 100644 --- a/src/net/server/Server.java +++ b/src/net/server/Server.java @@ -41,15 +41,16 @@ import java.util.Properties; import java.util.Set; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReentrantReadWriteLock; -import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock; -import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; import config.YamlConfig; import net.server.audit.ThreadTracker; import net.server.audit.locks.MonitoredLockType; +import net.server.audit.locks.MonitoredReadLock; import net.server.audit.locks.MonitoredReentrantReadWriteLock; +import net.server.audit.locks.MonitoredWriteLock; +import net.server.audit.locks.factory.MonitoredReadLockFactory; import net.server.audit.locks.factory.MonitoredReentrantLockFactory; +import net.server.audit.locks.factory.MonitoredWriteLockFactory; import net.MapleServerHandler; import net.mina.MapleCodecFactory; @@ -87,7 +88,6 @@ import client.SkillFactory; import client.command.CommandsExecutor; import client.inventory.Item; import client.inventory.ItemFactory; -import client.inventory.MaplePet; import client.inventory.manipulator.MapleCashidGenerator; import client.newyear.NewYearCardRecord; import constants.inventory.ItemConstants; @@ -146,13 +146,13 @@ public class Server { private final Lock srvLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.SERVER); private final Lock disLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.SERVER_DISEASES); - private final ReentrantReadWriteLock wldLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.SERVER_WORLDS, true); - private final ReadLock wldRLock = wldLock.readLock(); - private final WriteLock wldWLock = wldLock.writeLock(); + private final MonitoredReentrantReadWriteLock wldLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.SERVER_WORLDS, true); + private final MonitoredReadLock wldRLock = MonitoredReadLockFactory.createLock(wldLock); + private final MonitoredWriteLock wldWLock = MonitoredWriteLockFactory.createLock(wldLock); - private final ReentrantReadWriteLock lgnLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.SERVER_LOGIN, true); - private final ReadLock lgnRLock = lgnLock.readLock(); - private final WriteLock lgnWLock = lgnLock.writeLock(); + private final MonitoredReentrantReadWriteLock lgnLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.SERVER_LOGIN, true); + private final MonitoredReadLock lgnRLock = MonitoredReadLockFactory.createLock(lgnLock); + private final MonitoredWriteLock lgnWLock = MonitoredWriteLockFactory.createLock(lgnLock); private final AtomicLong currentTime = new AtomicLong(0); private long serverCurrentTime = 0; @@ -1896,13 +1896,13 @@ public class Server { } } } - + + resetServerWorlds(); + ThreadManager.getInstance().stop(); TimerManager.getInstance().purge(); TimerManager.getInstance().stop(); - resetServerWorlds(); - System.out.println("Worlds + Channels are offline."); acceptor.unbind(); acceptor = null; diff --git a/src/net/server/audit/locks/MonitoredLockType.java b/src/net/server/audit/locks/MonitoredLockType.java index 64eed9e9f9..a67d5be827 100644 --- a/src/net/server/audit/locks/MonitoredLockType.java +++ b/src/net/server/audit/locks/MonitoredLockType.java @@ -78,6 +78,7 @@ public enum MonitoredLockType { WORLD_PSHOPS, WORLD_MERCHS, WORLD_MAPOBJS, + WORLD_SAVECHARS, WORLD_SUGGEST, EIM, EIM_PARTY, diff --git a/src/net/server/channel/Channel.java b/src/net/server/channel/Channel.java index 889774edbb..07a4eea3c5 100644 --- a/src/net/server/channel/Channel.java +++ b/src/net/server/channel/Channel.java @@ -34,9 +34,11 @@ import java.util.Map.Entry; import java.util.Set; import java.util.WeakHashMap; import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.locks.ReentrantReadWriteLock; -import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock; -import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; + +import net.server.audit.locks.MonitoredReadLock; +import net.server.audit.locks.MonitoredWriteLock; +import net.server.audit.locks.factory.MonitoredReadLockFactory; +import net.server.audit.locks.factory.MonitoredWriteLockFactory; import config.YamlConfig; import net.server.audit.LockCollector; @@ -64,6 +66,10 @@ import org.apache.mina.filter.codec.ProtocolCodecFilter; import org.apache.mina.transport.socket.SocketSessionConfig; import org.apache.mina.transport.socket.nio.NioSocketAcceptor; +import client.MapleCharacter; +import net.server.services.ServicesManager; +import net.server.services.BaseService; +import net.server.services.type.ChannelServices; import scripting.event.EventScriptManager; import server.TimerManager; import server.events.gm.MapleEvent; @@ -73,13 +79,9 @@ import server.maps.MapleHiredMerchant; import server.maps.MapleMap; import server.maps.MapleMapManager; import server.maps.MapleMiniDungeon; +import server.maps.MapleMiniDungeonInfo; import tools.MaplePacketCreator; import tools.Pair; -import client.MapleCharacter; -import net.server.channel.services.ServiceType; -import net.server.channel.services.ServicesManager; -import net.server.channel.services.task.BaseService; -import server.maps.MapleMiniDungeonInfo; public final class Channel { @@ -90,7 +92,7 @@ public final class Channel { private String ip, serverMessage; private MapleMapManager mapManager; private EventScriptManager eventSM; - private ServicesManager services = new ServicesManager(); + private ServicesManager services; private Map hiredMerchants = new HashMap<>(); private final Map storedVars = new HashMap<>(); private Set playersAway = new HashSet<>(); @@ -121,9 +123,9 @@ public final class Channel { private Set ongoingCathedralGuests = null; private long ongoingStartTime; - private ReentrantReadWriteLock merchantLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.MERCHANT, true); - private ReadLock merchRlock = merchantLock.readLock(); - private WriteLock merchWlock = merchantLock.writeLock(); + private MonitoredReentrantReadWriteLock merchantLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.MERCHANT, true); + private MonitoredReadLock merchRlock = MonitoredReadLockFactory.createLock(merchantLock); + private MonitoredWriteLock merchWlock = MonitoredWriteLockFactory.createLock(merchantLock); private MonitoredReentrantLock faceLock[] = new MonitoredReentrantLock[YamlConfig.config.server.CHANNEL_LOCKS]; @@ -155,8 +157,8 @@ public final class Channel { eventSM = new EventScriptManager(this, getEvents()); eventSM.init(); } else { - String[] ev = {}; - eventSM = new EventScriptManager(null, ev); + String[] ev = {"0_EXAMPLE"}; + eventSM = new EventScriptManager(this, ev); } dojoStage = new int[20]; @@ -168,7 +170,7 @@ public final class Channel { dojoTask[i] = null; } - services = new ServicesManager(); + services = new ServicesManager(ChannelServices.OVERALL); System.out.println(" Channel " + getId() + ": Listening on port " + port); } catch (Exception e) { @@ -181,10 +183,9 @@ public final class Channel { return; } - eventSM.cancel(); + eventSM.cancel(); eventSM = null; eventSM = new EventScriptManager(this, getEvents()); - eventSM.init(); } public final synchronized void shutdown() { @@ -199,7 +200,7 @@ public final class Channel { disconnectAwayPlayers(); players.disconnectAll(); - eventSM.cancel(); + eventSM.dispose(); eventSM = null; mapManager.dispose(); @@ -277,7 +278,7 @@ public final class Channel { return mapManager; } - public BaseService getServiceAccess(ServiceType sv) { + public BaseService getServiceAccess(ChannelServices sv) { return services.getAccess(sv).getService(); } diff --git a/src/net/server/channel/handlers/NPCAnimationHandler.java b/src/net/server/channel/handlers/NPCAnimationHandler.java index 372fa4293d..5be8060028 100644 --- a/src/net/server/channel/handlers/NPCAnimationHandler.java +++ b/src/net/server/channel/handlers/NPCAnimationHandler.java @@ -39,7 +39,8 @@ public final class NPCAnimationHandler extends AbstractMaplePacketHandler { if (length == 6) { // NPC Talk mplew.writeShort(SendOpcode.NPC_ACTION.getValue()); mplew.writeInt(slea.readInt()); - mplew.writeShort(slea.readShort()); + mplew.write(slea.readByte()); // 2 bytes, thanks resinate + mplew.write(slea.readByte()); c.announce(mplew.getPacket()); } else if (length > 6) { // NPC Move byte[] bytes = slea.read(length - 9); diff --git a/src/net/server/channel/handlers/PlayerLoggedinHandler.java b/src/net/server/channel/handlers/PlayerLoggedinHandler.java index 34b43627c8..49df1547bb 100644 --- a/src/net/server/channel/handlers/PlayerLoggedinHandler.java +++ b/src/net/server/channel/handlers/PlayerLoggedinHandler.java @@ -63,7 +63,6 @@ import client.inventory.MapleInventoryType; import client.inventory.MaplePet; import constants.game.GameConstants; import constants.game.ScriptableNPCConstants; -import constants.net.ServerConstants; import java.util.Collections; import java.util.Comparator; import java.util.HashSet; @@ -116,30 +115,27 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { } Channel cserv = wserv.getChannel(c.getChannel()); - if(cserv == null || !cserv.isActive()) { + if(cserv == null) { c.setChannel(1); cserv = wserv.getChannel(c.getChannel()); if(cserv == null) { c.disconnect(true, false); return; - } else if (!cserv.isActive()) { - c.announce(MaplePacketCreator.getAfterLoginError(7)); - return; } } MapleCharacter player = wserv.getPlayerStorage().getCharacterById(cid); boolean newcomer = false; - + IoSession session = c.getSession(); + if (!server.validateCharacteridInTransition(session, cid)) { + c.disconnect(true, false); + return; + } + String remoteHwid; if (player == null) { - if (!server.validateCharacteridInTransition(session, cid)) { - c.disconnect(true, false); - return; - } - remoteHwid = MapleSessionCoordinator.getInstance().getGameSessionHwid(session); if (remoteHwid == null) { c.disconnect(true, false); diff --git a/src/net/server/channel/handlers/TakeDamageHandler.java b/src/net/server/channel/handlers/TakeDamageHandler.java index 9b2dfd610d..ee1c30db75 100644 --- a/src/net/server/channel/handlers/TakeDamageHandler.java +++ b/src/net/server/channel/handlers/TakeDamageHandler.java @@ -213,7 +213,7 @@ public final class TakeDamageHandler extends AbstractMaplePacketHandler { map.broadcastMessage(chr, MaplePacketCreator.damageMonster(oid, bouncedamage), false, true); attacker.aggroMonsterDamage(chr, bouncedamage); } - MapleStatEffect bPressure = chr.getBuffEffect(MapleBuffStat.BODY_PRESSURE); + MapleStatEffect bPressure = chr.getBuffEffect(MapleBuffStat.BODY_PRESSURE); // thanks Atoot for noticing an issue on Body Pressure neutralise if (bPressure != null) { Skill skill = SkillFactory.getSkill(Aran.BODY_PRESSURE); if (!attacker.alreadyBuffedStats().contains(MonsterStatus.NEUTRALISE)) { diff --git a/src/net/server/coordinator/login/LoginStorage.java b/src/net/server/coordinator/login/LoginStorage.java index f3d0ccd2ff..be779f2665 100644 --- a/src/net/server/coordinator/login/LoginStorage.java +++ b/src/net/server/coordinator/login/LoginStorage.java @@ -37,21 +37,20 @@ public class LoginStorage { private ConcurrentHashMap> loginHistory = new ConcurrentHashMap<>(); public boolean registerLogin(int accountId) { - List accHist = loginHistory.putIfAbsent(accountId, new LinkedList()); - if (accHist != null) { - synchronized (accHist) { - if (accHist.size() > YamlConfig.config.server.MAX_ACCOUNT_LOGIN_ATTEMPT) { - long blockExpiration = Server.getInstance().getCurrentTime() + YamlConfig.config.server.LOGIN_ATTEMPT_DURATION; - Collections.fill(accHist, blockExpiration); - - return false; - } - } - } else { - accHist = loginHistory.get(accountId); + List accHist = loginHistory.get(accountId); + if (accHist == null) { + accHist = new LinkedList(); + loginHistory.put(accountId, accHist); } synchronized (accHist) { + if (accHist.size() > YamlConfig.config.server.MAX_ACCOUNT_LOGIN_ATTEMPT) { + long blockExpiration = Server.getInstance().getCurrentTime() + YamlConfig.config.server.LOGIN_ATTEMPT_DURATION; + Collections.fill(accHist, blockExpiration); + + return false; + } + accHist.add(Server.getInstance().getCurrentTime() + YamlConfig.config.server.LOGIN_ATTEMPT_DURATION); return true; } diff --git a/src/net/server/coordinator/partysearch/MaplePartySearchCoordinator.java b/src/net/server/coordinator/partysearch/MaplePartySearchCoordinator.java index eec3116494..33434101cc 100644 --- a/src/net/server/coordinator/partysearch/MaplePartySearchCoordinator.java +++ b/src/net/server/coordinator/partysearch/MaplePartySearchCoordinator.java @@ -25,8 +25,6 @@ import config.YamlConfig; import java.io.File; import net.server.world.MapleParty; import net.server.coordinator.world.MapleInviteCoordinator.InviteType; -import net.server.coordinator.partysearch.PartySearchEchelon; -import net.server.coordinator.partysearch.PartySearchStorage; import tools.MaplePacketCreator; import tools.Pair; @@ -38,11 +36,12 @@ import java.util.HashSet; import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import java.util.concurrent.locks.ReentrantReadWriteLock; -import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock; -import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; import net.server.audit.locks.MonitoredLockType; +import net.server.audit.locks.MonitoredReadLock; import net.server.audit.locks.MonitoredReentrantReadWriteLock; +import net.server.audit.locks.MonitoredWriteLock; +import net.server.audit.locks.factory.MonitoredReadLockFactory; +import net.server.audit.locks.factory.MonitoredWriteLockFactory; import net.server.coordinator.world.MapleInviteCoordinator; import provider.MapleData; import provider.MapleDataProviderFactory; @@ -58,9 +57,9 @@ public class MaplePartySearchCoordinator { private Map upcomers = new HashMap<>(); private List leaderQueue = new LinkedList<>(); - private final ReentrantReadWriteLock leaderQueueLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.WORLD_PARTY_SEARCH_QUEUE, true); - private final ReadLock leaderQueueRLock = leaderQueueLock.readLock(); - private final WriteLock leaderQueueWLock = leaderQueueLock.writeLock(); + private final MonitoredReentrantReadWriteLock leaderQueueLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.WORLD_PARTY_SEARCH_QUEUE, true); + private final MonitoredReadLock leaderQueueRLock = MonitoredReadLockFactory.createLock(leaderQueueLock); + private final MonitoredWriteLock leaderQueueWLock = MonitoredWriteLockFactory.createLock(leaderQueueLock); private Map searchLeaders = new HashMap<>(); private Map searchSettings = new HashMap<>(); diff --git a/src/net/server/coordinator/partysearch/PartySearchEchelon.java b/src/net/server/coordinator/partysearch/PartySearchEchelon.java index ff0b08fd7d..9b597028c2 100644 --- a/src/net/server/coordinator/partysearch/PartySearchEchelon.java +++ b/src/net/server/coordinator/partysearch/PartySearchEchelon.java @@ -25,12 +25,12 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.concurrent.locks.ReentrantReadWriteLock; - -import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock; -import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; import net.server.audit.locks.MonitoredLockType; +import net.server.audit.locks.MonitoredReadLock; import net.server.audit.locks.MonitoredReentrantReadWriteLock; +import net.server.audit.locks.MonitoredWriteLock; +import net.server.audit.locks.factory.MonitoredReadLockFactory; +import net.server.audit.locks.factory.MonitoredWriteLockFactory; import java.lang.ref.WeakReference; @@ -40,9 +40,9 @@ import java.lang.ref.WeakReference; */ public class PartySearchEchelon { - private final ReentrantReadWriteLock psLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.WORLD_PARTY_SEARCH_ECHELON, true); - private final ReadLock psRLock = psLock.readLock(); - private final WriteLock psWLock = psLock.writeLock(); + private final MonitoredReentrantReadWriteLock psLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.WORLD_PARTY_SEARCH_ECHELON, true); + private final MonitoredReadLock psRLock = MonitoredReadLockFactory.createLock(psLock); + private final MonitoredWriteLock psWLock = MonitoredWriteLockFactory.createLock(psLock); private Map> echelon = new HashMap<>(20); diff --git a/src/net/server/coordinator/partysearch/PartySearchStorage.java b/src/net/server/coordinator/partysearch/PartySearchStorage.java index 75b77d4700..2198a1a44e 100644 --- a/src/net/server/coordinator/partysearch/PartySearchStorage.java +++ b/src/net/server/coordinator/partysearch/PartySearchStorage.java @@ -28,12 +28,14 @@ import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.concurrent.locks.ReentrantReadWriteLock; -import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock; -import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; import net.server.audit.locks.MonitoredLockType; +import net.server.audit.locks.MonitoredReadLock; import net.server.audit.locks.MonitoredReentrantReadWriteLock; +import net.server.audit.locks.MonitoredWriteLock; +import net.server.audit.locks.factory.MonitoredReadLockFactory; +import net.server.audit.locks.factory.MonitoredWriteLockFactory; + import tools.IntervalBuilder; /** @@ -45,9 +47,9 @@ public class PartySearchStorage { private List storage = new ArrayList<>(20); private IntervalBuilder emptyIntervals = new IntervalBuilder(); - private final ReentrantReadWriteLock psLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.WORLD_PARTY_SEARCH_STORAGE, true); - private final ReadLock psRLock = psLock.readLock(); - private final WriteLock psWLock = psLock.writeLock(); + private final MonitoredReentrantReadWriteLock psLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.WORLD_PARTY_SEARCH_STORAGE, true); + private final MonitoredReadLock psRLock = MonitoredReadLockFactory.createLock(psLock); + private final MonitoredWriteLock psWLock = MonitoredWriteLockFactory.createLock(psLock); public List getStorageList() { psRLock.lock(); diff --git a/src/net/server/handlers/login/CharlistRequestHandler.java b/src/net/server/handlers/login/CharlistRequestHandler.java index 547156edfd..66c290d3b7 100644 --- a/src/net/server/handlers/login/CharlistRequestHandler.java +++ b/src/net/server/handlers/login/CharlistRequestHandler.java @@ -44,7 +44,7 @@ public final class CharlistRequestHandler extends AbstractMaplePacketHandler { int channel = slea.readByte() + 1; Channel ch = wserv.getChannel(channel); - if(ch == null || !ch.isActive()) { + if(ch == null) { c.announce(MaplePacketCreator.getServerStatus(2)); return; } diff --git a/src/net/server/handlers/login/LoginPasswordHandler.java b/src/net/server/handlers/login/LoginPasswordHandler.java index aff6fdce2d..45beacc73c 100644 --- a/src/net/server/handlers/login/LoginPasswordHandler.java +++ b/src/net/server/handlers/login/LoginPasswordHandler.java @@ -150,6 +150,7 @@ public final class LoginPasswordHandler implements MaplePacketHandler { return; } if (c.finishLogin() == 0) { + c.checkChar(c.getAccID()); login(c); } else { c.announce(MaplePacketCreator.getLoginFailed(7)); diff --git a/src/net/server/channel/services/BaseScheduler.java b/src/net/server/services/BaseScheduler.java similarity index 99% rename from src/net/server/channel/services/BaseScheduler.java rename to src/net/server/services/BaseScheduler.java index bf9ed40a02..61013b6129 100644 --- a/src/net/server/channel/services/BaseScheduler.java +++ b/src/net/server/services/BaseScheduler.java @@ -17,7 +17,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.channel.services; +package net.server.services; import config.YamlConfig; import java.util.Collections; diff --git a/src/net/server/channel/services/task/BaseService.java b/src/net/server/services/BaseService.java similarity index 96% rename from src/net/server/channel/services/task/BaseService.java rename to src/net/server/services/BaseService.java index a17ccf207e..4a6a95da62 100644 --- a/src/net/server/channel/services/task/BaseService.java +++ b/src/net/server/services/BaseService.java @@ -17,7 +17,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.channel.services.task; +package net.server.services; import config.YamlConfig; diff --git a/src/net/server/channel/services/SchedulerListener.java b/src/net/server/services/SchedulerListener.java similarity index 96% rename from src/net/server/channel/services/SchedulerListener.java rename to src/net/server/services/SchedulerListener.java index 2b4865dd61..692513df40 100644 --- a/src/net/server/channel/services/SchedulerListener.java +++ b/src/net/server/services/SchedulerListener.java @@ -17,7 +17,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.channel.services; +package net.server.services; import java.util.List; diff --git a/src/net/server/channel/services/Service.java b/src/net/server/services/Service.java similarity index 94% rename from src/net/server/channel/services/Service.java rename to src/net/server/services/Service.java index 580d6fee86..b9798d4753 100644 --- a/src/net/server/channel/services/Service.java +++ b/src/net/server/services/Service.java @@ -17,9 +17,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.channel.services; - -import net.server.channel.services.task.BaseService; +package net.server.services; /** * diff --git a/src/net/server/services/ServiceType.java b/src/net/server/services/ServiceType.java new file mode 100644 index 0000000000..7d43fcdeb6 --- /dev/null +++ b/src/net/server/services/ServiceType.java @@ -0,0 +1,30 @@ +/* + This file is part of the HeavenMS MapleStory Server, commands OdinMS-based + Copyleft (L) 2016 - 2019 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.services; + +/** + * + * @author Ronan + */ +public interface ServiceType > { + public abstract Service createService(); + public int ordinal(); + public T[] enumValues(); +} diff --git a/src/net/server/channel/services/ServicesManager.java b/src/net/server/services/ServicesManager.java similarity index 80% rename from src/net/server/channel/services/ServicesManager.java rename to src/net/server/services/ServicesManager.java index a183f2ca6a..a083a9b610 100644 --- a/src/net/server/channel/services/ServicesManager.java +++ b/src/net/server/services/ServicesManager.java @@ -17,7 +17,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.channel.services; +package net.server.services; /** * @@ -27,12 +27,12 @@ public class ServicesManager { private Service[] services; - public ServicesManager() { - ServiceType[] serviceTypes = ServiceType.values(); + public ServicesManager(ServiceType serviceBundle) { + Enum[] serviceTypes = serviceBundle.enumValues(); services = new Service[serviceTypes.length]; - for (ServiceType type : serviceTypes) { - services[type.ordinal()] = type.createService(); + for (Enum type : serviceTypes) { + services[type.ordinal()] = ((ServiceType) type).createService(); } } @@ -41,7 +41,7 @@ public class ServicesManager { } public void shutdown() { - for (int i = 0; i < ServiceType.values().length; i++) { + for (int i = 0; i < services.length; i++) { services[i].dispose(); } services = null; diff --git a/src/net/server/channel/services/task/EventService.java b/src/net/server/services/task/channel/EventService.java similarity index 93% rename from src/net/server/channel/services/task/EventService.java rename to src/net/server/services/task/channel/EventService.java index f9b6a6c077..bb781c917e 100644 --- a/src/net/server/channel/services/task/EventService.java +++ b/src/net/server/services/task/channel/EventService.java @@ -17,11 +17,12 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.channel.services.task; +package net.server.services.task.channel; +import net.server.services.BaseService; import config.YamlConfig; import net.server.audit.locks.MonitoredLockType; -import net.server.channel.services.BaseScheduler; +import net.server.services.BaseScheduler; /** * @@ -37,6 +38,7 @@ public class EventService extends BaseService { } } + @Override public void dispose() { for(int i = 0; i < YamlConfig.config.server.CHANNEL_LOCKS; i++) { if(eventSchedulers[i] != null) { diff --git a/src/net/server/channel/services/task/FaceExpressionService.java b/src/net/server/services/task/channel/FaceExpressionService.java similarity index 96% rename from src/net/server/channel/services/task/FaceExpressionService.java rename to src/net/server/services/task/channel/FaceExpressionService.java index 968b3d6c0c..52b5d343f1 100644 --- a/src/net/server/channel/services/task/FaceExpressionService.java +++ b/src/net/server/services/task/channel/FaceExpressionService.java @@ -17,8 +17,9 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.channel.services.task; +package net.server.services.task.channel; +import net.server.services.BaseService; import client.MapleCharacter; import config.YamlConfig; import java.util.Collections; @@ -26,7 +27,7 @@ import net.server.audit.LockCollector; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.MonitoredReentrantLock; import net.server.audit.locks.factory.MonitoredReentrantLockFactory; -import net.server.channel.services.BaseScheduler; +import net.server.services.BaseScheduler; import server.maps.MapleMap; import tools.MaplePacketCreator; @@ -61,6 +62,7 @@ public class FaceExpressionService extends BaseService { }); } + @Override public void dispose() { for(int i = 0; i < YamlConfig.config.server.CHANNEL_LOCKS; i++) { if(faceExpressionSchedulers[i] != null) { diff --git a/src/net/server/channel/services/task/MobAnimationService.java b/src/net/server/services/task/channel/MobAnimationService.java similarity index 95% rename from src/net/server/channel/services/task/MobAnimationService.java rename to src/net/server/services/task/channel/MobAnimationService.java index e3043a0169..46d7234c9e 100644 --- a/src/net/server/channel/services/task/MobAnimationService.java +++ b/src/net/server/services/task/channel/MobAnimationService.java @@ -17,8 +17,9 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.channel.services.task; +package net.server.services.task.channel; +import net.server.services.BaseService; import config.YamlConfig; import net.server.audit.locks.MonitoredLockType; @@ -28,8 +29,8 @@ import java.util.Set; import net.server.audit.LockCollector; import net.server.audit.locks.MonitoredReentrantLock; import net.server.audit.locks.factory.MonitoredReentrantLockFactory; -import net.server.channel.services.BaseScheduler; -import net.server.channel.services.SchedulerListener; +import net.server.services.BaseScheduler; +import net.server.services.SchedulerListener; /** * @@ -45,6 +46,7 @@ public class MobAnimationService extends BaseService { } } + @Override public void dispose() { for(int i = 0; i < YamlConfig.config.server.CHANNEL_LOCKS; i++) { if(mobAnimationSchedulers[i] != null) { diff --git a/src/net/server/channel/services/task/MobClearSkillService.java b/src/net/server/services/task/channel/MobClearSkillService.java similarity index 94% rename from src/net/server/channel/services/task/MobClearSkillService.java rename to src/net/server/services/task/channel/MobClearSkillService.java index 7092c48a42..c5bb1c3e75 100644 --- a/src/net/server/channel/services/task/MobClearSkillService.java +++ b/src/net/server/services/task/channel/MobClearSkillService.java @@ -17,11 +17,12 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.channel.services.task; +package net.server.services.task.channel; +import net.server.services.BaseService; import config.YamlConfig; import net.server.audit.locks.MonitoredLockType; -import net.server.channel.services.BaseScheduler; +import net.server.services.BaseScheduler; /** * @@ -37,6 +38,7 @@ public class MobClearSkillService extends BaseService { } } + @Override public void dispose() { for(int i = 0; i < YamlConfig.config.server.CHANNEL_LOCKS; i++) { if(mobClearSkillSchedulers[i] != null) { diff --git a/src/net/server/channel/services/task/MobMistService.java b/src/net/server/services/task/channel/MobMistService.java similarity index 93% rename from src/net/server/channel/services/task/MobMistService.java rename to src/net/server/services/task/channel/MobMistService.java index 6428dd0998..d666880a84 100644 --- a/src/net/server/channel/services/task/MobMistService.java +++ b/src/net/server/services/task/channel/MobMistService.java @@ -17,11 +17,12 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.channel.services.task; +package net.server.services.task.channel; +import net.server.services.BaseService; import config.YamlConfig; import net.server.audit.locks.MonitoredLockType; -import net.server.channel.services.BaseScheduler; +import net.server.services.BaseScheduler; /** * @@ -37,6 +38,7 @@ public class MobMistService extends BaseService { } } + @Override public void dispose() { for(int i = 0; i < YamlConfig.config.server.CHANNEL_LOCKS; i++) { if(mobMistSchedulers[i] != null) { diff --git a/src/net/server/channel/services/task/MobStatusService.java b/src/net/server/services/task/channel/MobStatusService.java similarity index 97% rename from src/net/server/channel/services/task/MobStatusService.java rename to src/net/server/services/task/channel/MobStatusService.java index e6b39b3a78..62faa56735 100644 --- a/src/net/server/channel/services/task/MobStatusService.java +++ b/src/net/server/services/task/channel/MobStatusService.java @@ -17,8 +17,9 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.channel.services.task; +package net.server.services.task.channel; +import net.server.services.BaseService; import client.status.MonsterStatusEffect; import config.YamlConfig; import java.util.HashMap; @@ -29,8 +30,8 @@ import net.server.audit.LockCollector; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.MonitoredReentrantLock; import net.server.audit.locks.factory.MonitoredReentrantLockFactory; -import net.server.channel.services.BaseScheduler; -import net.server.channel.services.SchedulerListener; +import net.server.services.BaseScheduler; +import net.server.services.SchedulerListener; /** * @@ -46,6 +47,7 @@ public class MobStatusService extends BaseService { } } + @Override public void dispose() { for(int i = 0; i < YamlConfig.config.server.CHANNEL_LOCKS; i++) { if(mobStatusSchedulers[i] != null) { diff --git a/src/net/server/channel/services/task/OverallService.java b/src/net/server/services/task/channel/OverallService.java similarity index 94% rename from src/net/server/channel/services/task/OverallService.java rename to src/net/server/services/task/channel/OverallService.java index 3dad65daa2..74303d3b2f 100644 --- a/src/net/server/channel/services/task/OverallService.java +++ b/src/net/server/services/task/channel/OverallService.java @@ -17,11 +17,12 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.channel.services.task; +package net.server.services.task.channel; +import net.server.services.BaseService; import config.YamlConfig; import net.server.audit.locks.MonitoredLockType; -import net.server.channel.services.BaseScheduler; +import net.server.services.BaseScheduler; /** * @@ -37,6 +38,7 @@ public class OverallService extends BaseService { // thanks Alex for suggestin } } + @Override public void dispose() { for(int i = 0; i < YamlConfig.config.server.CHANNEL_LOCKS; i++) { if(channelSchedulers[i] != null) { diff --git a/src/net/server/services/task/world/CharacterSaveService.java b/src/net/server/services/task/world/CharacterSaveService.java new file mode 100644 index 0000000000..a1e32fc36b --- /dev/null +++ b/src/net/server/services/task/world/CharacterSaveService.java @@ -0,0 +1,62 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2018 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.services.task.world; + +import net.server.audit.locks.MonitoredLockType; +import net.server.services.BaseScheduler; +import net.server.services.BaseService; + +/** + * + * @author Ronan + */ +public class CharacterSaveService extends BaseService { + + CharacterSaveScheduler chrSaveScheduler = new CharacterSaveScheduler(); + + @Override + public void dispose() { + if(chrSaveScheduler != null) { + chrSaveScheduler.dispose(); + chrSaveScheduler = null; + } + } + + public void registerSaveCharacter(int characterId, Runnable runAction) { + chrSaveScheduler.registerSaveCharacter(characterId, runAction); + } + + private class CharacterSaveScheduler extends BaseScheduler { + + public CharacterSaveScheduler() { + super(MonitoredLockType.WORLD_SAVECHARS); + } + + public void registerSaveCharacter(Integer characterId, Runnable runAction) { + registerEntry(characterId, runAction, 0); + } + + public void unregisterSaveCharacter(Integer characterId) { + interruptEntry(characterId); + } + + } + +} diff --git a/src/net/server/services/type/ChannelServices.java b/src/net/server/services/type/ChannelServices.java new file mode 100644 index 0000000000..d878edf66c --- /dev/null +++ b/src/net/server/services/type/ChannelServices.java @@ -0,0 +1,63 @@ +/* + This file is part of the HeavenMS MapleStory Server, commands OdinMS-based + Copyleft (L) 2016 - 2019 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.services.type; + +import net.server.services.ServiceType; +import net.server.services.task.channel.EventService; +import net.server.services.task.channel.FaceExpressionService; +import net.server.services.task.channel.MobAnimationService; +import net.server.services.task.channel.MobClearSkillService; +import net.server.services.task.channel.MobMistService; +import net.server.services.task.channel.MobStatusService; +import net.server.services.task.channel.OverallService; +import net.server.services.BaseService; +import net.server.services.Service; + +/** + * + * @author Ronan + */ +public enum ChannelServices implements ServiceType { + + MOB_STATUS(MobStatusService.class), + MOB_ANIMATION(MobAnimationService.class), + MOB_CLEAR_SKILL(MobClearSkillService.class), + MOB_MIST(MobMistService.class), + FACE_EXPRESSION(FaceExpressionService.class), + EVENT(EventService.class), + OVERALL(OverallService.class); + + private Class s; + + private ChannelServices(Class service) { + s = service; + } + + @Override + public Service createService() { + return new Service(s); + } + + @Override + public ChannelServices[] enumValues() { + return ChannelServices.values(); + } + +} diff --git a/src/net/server/channel/services/ServiceType.java b/src/net/server/services/type/WorldServices.java similarity index 69% rename from src/net/server/channel/services/ServiceType.java rename to src/net/server/services/type/WorldServices.java index 47e5097eed..033ea3fe38 100644 --- a/src/net/server/channel/services/ServiceType.java +++ b/src/net/server/services/type/WorldServices.java @@ -17,32 +17,35 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package net.server.channel.services; +package net.server.services.type; -import net.server.channel.services.task.*; +import net.server.services.ServiceType; +import net.server.services.BaseService; +import net.server.services.Service; +import net.server.services.task.world.CharacterSaveService; /** * * @author Ronan */ -public enum ServiceType { +public enum WorldServices implements ServiceType { - MOB_STATUS(MobStatusService.class), - MOB_ANIMATION(MobAnimationService.class), - MOB_CLEAR_SKILL(MobClearSkillService.class), - MOB_MIST(MobMistService.class), - FACE_EXPRESSION(FaceExpressionService.class), - EVENT(EventService.class), - OVERALL(OverallService.class); + SAVE_CHARACTER(CharacterSaveService.class); private Class s; - private ServiceType(Class service) { + private WorldServices(Class service) { s = service; } + @Override public Service createService() { return new Service(s); } + @Override + public WorldServices[] enumValues() { + return WorldServices.values(); + } + } diff --git a/src/net/server/world/World.java b/src/net/server/world/World.java index 6847f5ca7d..b22c6837da 100644 --- a/src/net/server/world/World.java +++ b/src/net/server/world/World.java @@ -29,7 +29,6 @@ import client.MapleCharacter; import client.MapleFamily; import config.YamlConfig; import constants.game.GameConstants; -import constants.net.ServerConstants; import java.sql.Connection; import java.sql.PreparedStatement; @@ -50,9 +49,6 @@ import java.util.SortedMap; import java.util.TreeMap; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; -import java.util.concurrent.locks.ReentrantReadWriteLock; -import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock; -import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; import java.util.Set; import java.util.HashSet; @@ -74,9 +70,13 @@ import net.server.PlayerStorage; import net.server.Server; import net.server.audit.LockCollector; import net.server.audit.locks.MonitoredLockType; +import net.server.audit.locks.MonitoredReadLock; import net.server.audit.locks.MonitoredReentrantLock; import net.server.audit.locks.MonitoredReentrantReadWriteLock; +import net.server.audit.locks.MonitoredWriteLock; +import net.server.audit.locks.factory.MonitoredReadLockFactory; import net.server.audit.locks.factory.MonitoredReentrantLockFactory; +import net.server.audit.locks.factory.MonitoredWriteLockFactory; import net.server.channel.Channel; import net.server.channel.CharacterIdChannelPair; import net.server.coordinator.world.MapleInviteCoordinator; @@ -87,6 +87,9 @@ import net.server.coordinator.partysearch.MaplePartySearchCoordinator; import net.server.guild.MapleGuild; import net.server.guild.MapleGuildCharacter; import net.server.guild.MapleGuildSummary; +import net.server.services.BaseService; +import net.server.services.ServicesManager; +import net.server.services.type.WorldServices; import net.server.task.CharacterAutosaverTask; import net.server.task.FamilyDailyResetTask; import net.server.task.FishingTask; @@ -123,12 +126,13 @@ public class World { private Map> relationshipCouples = new HashMap<>(); private Map gsStore = new HashMap<>(); private PlayerStorage players = new PlayerStorage(); + private ServicesManager services = new ServicesManager(WorldServices.SAVE_CHARACTER); private MapleMatchCheckerCoordinator matchChecker = new MapleMatchCheckerCoordinator(); private MaplePartySearchCoordinator partySearch = new MaplePartySearchCoordinator(); - private final ReentrantReadWriteLock chnLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.WORLD_CHANNELS, true); - private ReadLock chnRLock = chnLock.readLock(); - private WriteLock chnWLock = chnLock.writeLock(); + private final MonitoredReentrantReadWriteLock chnLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.WORLD_CHANNELS, true); + private MonitoredReadLock chnRLock = MonitoredReadLockFactory.createLock(chnLock); + private MonitoredWriteLock chnWLock = MonitoredWriteLockFactory.createLock(chnLock); private Map> accountChars = new HashMap<>(); private Map accountStorages = new HashMap<>(); @@ -145,9 +149,9 @@ public class World { private Map owlSearched = new LinkedHashMap<>(); private List> cashItemBought = new ArrayList<>(9); - private final ReentrantReadWriteLock suggestLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.WORLD_SUGGEST, true); - private ReadLock suggestRLock = suggestLock.readLock(); - private WriteLock suggestWLock = suggestLock.writeLock(); + private final MonitoredReentrantReadWriteLock suggestLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.WORLD_SUGGEST, true); + private MonitoredReadLock suggestRLock = MonitoredReadLockFactory.createLock(suggestLock); + private MonitoredWriteLock suggestWLock = MonitoredWriteLockFactory.createLock(suggestLock); private Map disabledServerMessages = new HashMap<>(); // reuse owl lock private MonitoredReentrantLock srvMessagesLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.WORLD_SRVMESSAGES); @@ -2064,6 +2068,14 @@ public class World { partySearch.runPartySearch(); } + public BaseService getServiceAccess(WorldServices sv) { + return services.getAccess(sv).getService(); + } + + private void closeWorldServices() { + services.shutdown(); + } + private void clearWorldData() { List pList; partyLock.lock(); @@ -2077,6 +2089,7 @@ public class World { p.disposeLocks(); } + closeWorldServices(); disposeLocks(); } diff --git a/src/scripting/AbstractPlayerInteraction.java b/src/scripting/AbstractPlayerInteraction.java index b7528f8fc3..01d3b869de 100644 --- a/src/scripting/AbstractPlayerInteraction.java +++ b/src/scripting/AbstractPlayerInteraction.java @@ -56,6 +56,7 @@ import tools.MaplePacketCreator; import client.MapleCharacter; import client.MapleCharacter.DelayedQuestUpdate; import client.MapleClient; +import client.MapleJob; import client.MapleQuestStatus; import client.SkillFactory; import client.inventory.Equip; @@ -94,6 +95,18 @@ public class AbstractPlayerInteraction { return c.getPlayer(); } + public int getJobId() { + return getPlayer().getJob().getId(); + } + + public MapleJob getJob(){ + return getPlayer().getJob(); + } + + public int getLevel() { + return getPlayer().getLevel(); + } + public MapleMap getMap() { return c.getPlayer().getMap(); } diff --git a/src/scripting/event/EventInstanceManager.java b/src/scripting/event/EventInstanceManager.java index 6a6e574ceb..87c67d40d4 100644 --- a/src/scripting/event/EventInstanceManager.java +++ b/src/scripting/event/EventInstanceManager.java @@ -36,8 +36,12 @@ import config.YamlConfig; import net.server.audit.LockCollector; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.MonitoredReentrantLock; +import net.server.audit.locks.MonitoredReadLock; import net.server.audit.locks.MonitoredReentrantReadWriteLock; +import net.server.audit.locks.MonitoredWriteLock; +import net.server.audit.locks.factory.MonitoredReadLockFactory; import net.server.audit.locks.factory.MonitoredReentrantLockFactory; +import net.server.audit.locks.factory.MonitoredWriteLockFactory; import net.server.world.MapleParty; import net.server.world.MaplePartyCharacter; import server.maps.MaplePortal; @@ -55,9 +59,6 @@ import constants.inventory.ItemConstants; import constants.net.ServerConstants; import java.awt.Point; import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.locks.ReentrantReadWriteLock; -import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock; -import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; import java.util.logging.Level; import java.util.logging.Logger; import net.server.coordinator.world.MapleEventRecallCoordinator; @@ -91,9 +92,9 @@ public class EventInstanceManager { private MapleExpedition expedition = null; private List mapIds = new LinkedList<>(); - private final ReentrantReadWriteLock lock = new MonitoredReentrantReadWriteLock(MonitoredLockType.EIM, true); - private ReadLock rL = lock.readLock(); - private WriteLock wL = lock.writeLock(); + private final MonitoredReentrantReadWriteLock lock = new MonitoredReentrantReadWriteLock(MonitoredLockType.EIM, true); + private MonitoredReadLock rL = MonitoredReadLockFactory.createLock(lock); + private MonitoredWriteLock wL = MonitoredWriteLockFactory.createLock(lock); private MonitoredReentrantLock pL = MonitoredReentrantLockFactory.createLock(MonitoredLockType.EIM_PARTY, true); private MonitoredReentrantLock sL = MonitoredReentrantLockFactory.createLock(MonitoredLockType.EIM_SCRIPT, true); diff --git a/src/scripting/event/EventScriptManager.java b/src/scripting/event/EventScriptManager.java index 448b0bdfec..1e6afe628b 100644 --- a/src/scripting/event/EventScriptManager.java +++ b/src/scripting/event/EventScriptManager.java @@ -21,9 +21,11 @@ */ package scripting.event; -import java.util.LinkedHashMap; +import java.util.concurrent.ConcurrentHashMap; +import java.util.HashSet; import java.util.Map; import java.util.Map.Entry; +import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; @@ -48,9 +50,10 @@ public class EventScriptManager extends AbstractScriptManager { public EventManager em; } - private Map events = new LinkedHashMap<>(); + private static EventEntry fallback; + private Map events = new ConcurrentHashMap<>(); private boolean active = false; - + public EventScriptManager(Channel cserv, String[] scripts) { super(); for (String script : scripts) { @@ -59,12 +62,15 @@ public class EventScriptManager extends AbstractScriptManager { events.put(script, new EventEntry(iv, new EventManager(cserv, iv, script))); } } + + init(); + fallback = events.remove("0_EXAMPLE"); } public EventManager getEventManager(String event) { EventEntry entry = events.get(event); if (entry == null) { - return null; + return fallback.em; } return entry.em; } @@ -72,8 +78,8 @@ public class EventScriptManager extends AbstractScriptManager { public boolean isActive() { return active; } - - public void init() { + + public final void init() { for (EventEntry entry : events.values()) { try { entry.iv.put("em", entry.em); @@ -84,16 +90,17 @@ public class EventScriptManager extends AbstractScriptManager { } } - active = true; + active = events.size() > 1; // bootup loads only 1 script } private void reloadScripts() { - if (events.isEmpty()) { + Set> eventEntries = new HashSet<>(events.entrySet()); + if (eventEntries.isEmpty()) { return; } - Channel cserv = events.values().iterator().next().em.getChannelServer(); - for (Entry entry : events.entrySet()) { + Channel cserv = eventEntries.iterator().next().getValue().em.getChannelServer(); + for (Entry entry : eventEntries) { String script = entry.getKey(); NashornScriptEngine iv = getScriptEngine("event/" + script + ".js"); events.put(script, new EventEntry(iv, new EventManager(cserv, iv, script))); @@ -112,4 +119,18 @@ public class EventScriptManager extends AbstractScriptManager { entry.em.cancel(); } } + + public void dispose() { + if (events.isEmpty()) { + return; + } + + Set eventEntries = new HashSet<>(events.values()); + events.clear(); + + active = false; + for (EventEntry entry : eventEntries) { + entry.em.cancel(); + } + } } diff --git a/src/scripting/map/MapScriptMethods.java b/src/scripting/map/MapScriptMethods.java index 575cc41ed8..cc94de2edd 100644 --- a/src/scripting/map/MapScriptMethods.java +++ b/src/scripting/map/MapScriptMethods.java @@ -35,7 +35,35 @@ public class MapScriptMethods extends AbstractPlayerInteraction { public MapScriptMethods(MapleClient c) { super(c); } - + + public void displayCygnusIntro() { + switch (c.getPlayer().getMapId()) { + case 913040100: + lockUI(); + c.announce(MaplePacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene0")); + break; + case 913040101: + c.announce(MaplePacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene1")); + break; + case 913040102: + c.announce(MaplePacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene2")); + break; + case 913040103: + c.announce(MaplePacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene3")); + break; + case 913040104: + c.announce(MaplePacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene4")); + break; + case 913040105: + c.announce(MaplePacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene5")); + break; + case 913040106: + lockUI(); + c.announce(MaplePacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene6")); + break; + } + } + public void displayAranIntro() { switch (c.getPlayer().getMapId()) { case 914090010: diff --git a/src/scripting/npc/NPCConversationManager.java b/src/scripting/npc/NPCConversationManager.java index 57c1929aa1..49dae8d220 100644 --- a/src/scripting/npc/NPCConversationManager.java +++ b/src/scripting/npc/NPCConversationManager.java @@ -253,14 +253,6 @@ public class NPCConversationManager extends AbstractPlayerInteraction { return this.getText; } - public int getJobId() { - return getPlayer().getJob().getId(); - } - - public MapleJob getJob(){ - return getPlayer().getJob(); - } - @Override public boolean forceStartQuest(int id) { return forceStartQuest(id, npc); @@ -303,10 +295,6 @@ public class NPCConversationManager extends AbstractPlayerInteraction { getPlayer().gainExp(gain, true, true); } - public int getLevel() { - return getPlayer().getLevel(); - } - @Override public void showEffect(String effect) { getPlayer().getMap().broadcastMessage(MaplePacketCreator.environmentChange(effect, 3)); diff --git a/src/server/MapleStatEffect.java b/src/server/MapleStatEffect.java index 6270afd3d9..667a2295dd 100644 --- a/src/server/MapleStatEffect.java +++ b/src/server/MapleStatEffect.java @@ -27,6 +27,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.HashMap; import java.util.Map; import config.YamlConfig; @@ -60,7 +61,6 @@ import client.inventory.manipulator.MapleInventoryManipulator; import client.status.MonsterStatus; import client.status.MonsterStatusEffect; import constants.inventory.ItemConstants; -import constants.net.ServerConstants; import constants.skills.Aran; import constants.skills.Assassin; import constants.skills.Bandit; @@ -933,7 +933,7 @@ public class MapleStatEffect { applyto.toggleHide(false); return true; } - + if (primary && isHeal()) { affectedPlayers = applyBuff(applyfrom, useMaxRange); } @@ -1162,7 +1162,7 @@ public class MapleStatEffect { private int applyBuff(MapleCharacter applyfrom, boolean useMaxRange) { int affectedc = 1; - + if (isPartyBuff() && (applyfrom.getParty() != null || isGmBuff())) { Rectangle bounds = (!useMaxRange) ? calculateBoundingBox(applyfrom.getPosition(), applyfrom.isFacingLeft()) : new Rectangle(Integer.MIN_VALUE / 2, Integer.MIN_VALUE / 2, Integer.MAX_VALUE, Integer.MAX_VALUE); List affecteds = applyfrom.getMap().getMapObjectsInRect(bounds, Arrays.asList(MapleMapObjectType.PLAYER)); @@ -1181,7 +1181,7 @@ public class MapleStatEffect { } } } - + affectedc += affectedp.size(); // used for heal for (MapleCharacter affected : affectedp) { applyTo(applyfrom, affected, false, null, useMaxRange, affectedc); @@ -1281,7 +1281,11 @@ public class MapleStatEffect { long leftDuration = (starttime + localDuration) - Server.getInstance().getCurrentTime(); if (leftDuration > 0) { - target.announce(MaplePacketCreator.giveBuff((skill ? sourceid : -sourceid), (int) leftDuration, activeStats)); + if (isDash() || isInfusion()) { + target.announce(MaplePacketCreator.givePirateBuff(activeStats, (skill ? sourceid : -sourceid), (int) leftDuration)); + } else { + target.announce(MaplePacketCreator.giveBuff((skill ? sourceid : -sourceid), (int) leftDuration, activeStats)); + } } } @@ -1289,7 +1293,7 @@ public class MapleStatEffect { if (!isMonsterRiding() && !isCouponBuff() && !isMysticDoor() && !isHyperBody() && !isCombo()) { // last mystic door already dispelled if it has been used before. applyto.cancelEffect(this, true, -1); } - + List> localstatups = statups; int localDuration = getBuffLocalDuration(); int localsourceid = sourceid; @@ -1393,12 +1397,11 @@ public class MapleStatEffect { applyto.announce(buff); } - + long starttime = Server.getInstance().getCurrentTime(); //CancelEffectAction cancelAction = new CancelEffectAction(applyto, this, starttime); //ScheduledFuture schedule = TimerManager.getInstance().schedule(cancelAction, localDuration); applyto.registerEffect(this, starttime, starttime + localDuration, false); - if (mbuff != null) { applyto.getMap().broadcastMessage(applyto, mbuff, false); } diff --git a/src/server/MapleStorage.java b/src/server/MapleStorage.java index b8efcadb5d..af551e435c 100644 --- a/src/server/MapleStorage.java +++ b/src/server/MapleStorage.java @@ -22,6 +22,7 @@ import client.MapleClient; import client.inventory.Item; import client.inventory.ItemFactory; import client.inventory.MapleInventoryType; +import constants.game.GameConstants; import java.io.File; import java.sql.Connection; import java.sql.PreparedStatement; @@ -44,6 +45,7 @@ import tools.DatabaseConnection; import tools.MaplePacketCreator; import tools.Pair; import net.server.audit.locks.MonitoredLockType; +import tools.FilePrinter; /** * @@ -67,51 +69,45 @@ public class MapleStorage { this.meso = meso; } - private static MapleStorage create(int id, int world) { - try { - Connection con = DatabaseConnection.getConnection(); - try (PreparedStatement ps = con.prepareStatement("INSERT INTO storages (accountid, world, slots, meso) VALUES (?, ?, 4, 0)")) { - ps.setInt(1, id); - ps.setInt(2, world); - ps.executeUpdate(); - } - - con.close(); - } catch (Exception e) { - e.printStackTrace(); + private static MapleStorage create(int id, int world) throws SQLException { + Connection con = DatabaseConnection.getConnection(); + try (PreparedStatement ps = con.prepareStatement("INSERT INTO storages (accountid, world, slots, meso) VALUES (?, ?, 4, 0)")) { + ps.setInt(1, id); + ps.setInt(2, world); + ps.executeUpdate(); } + con.close(); + return loadOrCreateFromDB(id, world); } public static MapleStorage loadOrCreateFromDB(int id, int world) { - MapleStorage ret = null; - int storeId; try { + MapleStorage ret; Connection con = DatabaseConnection.getConnection(); PreparedStatement ps = con.prepareStatement("SELECT storageid, slots, meso FROM storages WHERE accountid = ? AND world = ?"); ps.setInt(1, id); ps.setInt(2, world); + ResultSet rs = ps.executeQuery(); - if (!rs.next()) { - rs.close(); - ps.close(); - con.close(); - return create(id, world); - } else { - storeId = rs.getInt("storageid"); - ret = new MapleStorage(storeId, (byte) rs.getInt("slots"), rs.getInt("meso")); - rs.close(); - ps.close(); + if (rs.next()) { + ret = new MapleStorage(rs.getInt("storageid"), (byte) rs.getInt("slots"), rs.getInt("meso")); for (Pair item : ItemFactory.STORAGE.loadItems(ret.id, false)) { ret.items.add(item.getLeft()); } + } else { + ret = create(id, world); } + rs.close(); + ps.close(); con.close(); - } catch (SQLException ex) { - ex.printStackTrace(); + + return ret; + } catch (SQLException ex) { // exceptions leading to deploy null storages found thanks to Jefe + FilePrinter.printError(FilePrinter.STORAGE, ex, "SQL error occurred when trying to load storage for accountid " + id + ", world " + GameConstants.WORLD_NAMES[world]); + throw new RuntimeException(ex); } - return ret; } public byte getSlots() { diff --git a/src/server/life/MapleLifeFactory.java b/src/server/life/MapleLifeFactory.java index 3a03929f1a..4d74054ee4 100644 --- a/src/server/life/MapleLifeFactory.java +++ b/src/server/life/MapleLifeFactory.java @@ -102,21 +102,19 @@ public class MapleLifeFactory { MapleData monsterInfoData = monsterData.getChildByPath("info"); List attackInfos = new LinkedList<>(); - MapleMonsterStats stats; + MapleMonsterStats stats = new MapleMonsterStats(); int linkMid = MapleDataTool.getIntConvert("link", monsterInfoData, 0); - if (linkMid == 0) { - stats = new MapleMonsterStats(); - } else { + if (linkMid != 0) { Pair> linkStats = getMonsterStats(linkMid); if (linkStats == null) { return null; } - stats = linkStats.getLeft(); + // thanks resinate for noticing non-propagable infos such as revives getting retrieved attackInfos.addAll(linkStats.getRight()); } - + stats.setHp(MapleDataTool.getIntConvert("maxHP", monsterInfoData)); stats.setFriendly(MapleDataTool.getIntConvert("damagedByMob", monsterInfoData, stats.isFriendly() ? 1 : 0) == 1); stats.setPADamage(MapleDataTool.getIntConvert("PADamage", monsterInfoData)); diff --git a/src/server/life/MapleMonster.java b/src/server/life/MapleMonster.java index cc4aafa00a..4f1cf25adf 100644 --- a/src/server/life/MapleMonster.java +++ b/src/server/life/MapleMonster.java @@ -72,11 +72,11 @@ import tools.Randomizer; import net.server.audit.LockCollector; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.factory.MonitoredReentrantLockFactory; -import net.server.channel.services.ServiceType; -import net.server.channel.services.task.MobAnimationService; -import net.server.channel.services.task.MobClearSkillService; -import net.server.channel.services.task.MobStatusService; -import net.server.channel.services.task.OverallService; +import net.server.services.type.ChannelServices; +import net.server.services.task.channel.MobAnimationService; +import net.server.services.task.channel.MobClearSkillService; +import net.server.services.task.channel.MobStatusService; +import net.server.services.task.channel.OverallService; import net.server.coordinator.world.MapleMonsterAggroCoordinator; import server.MapleStatEffect; import server.loot.MapleLootManager; @@ -338,7 +338,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { } if(animationTime > 0) { - MobAnimationService service = (MobAnimationService) map.getChannelServer().getServiceAccess(ServiceType.MOB_ANIMATION); + MobAnimationService service = (MobAnimationService) map.getChannelServer().getServiceAccess(ChannelServices.MOB_ANIMATION); return service.registerMobOnAnimationEffect(map.getId(), this.hashCode(), animationTime); } else { return true; @@ -770,7 +770,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { return MapleLootManager.retrieveRelevantDrops(this.getId(), lootChars); } - + public MapleCharacter killBy(final MapleCharacter killer) { distributeExperience(killer != null ? killer.getId() : 0); @@ -824,7 +824,6 @@ public class MapleMonster extends AbstractLoadedMapleLife { if(htKilled) { reviveMap.killMonster(ht, killer, true); - ht.broadcastMobHpBar(killer); } } @@ -1041,16 +1040,20 @@ public class MapleMonster extends AbstractLoadedMapleLife { return isBoss() && getTagColor() > 0; } + public void broadcastMonsterStatus() { + Collection mseList = this.getStati().values(); + for (MapleCharacter chr : map.getAllPlayers()) { + announceMonsterStatusInternal(chr.getClient(), mseList); + } + } + public void announceMonsterStatus(MapleClient client) { - statiLock.lock(); - try { - if (stati.size() > 0) { - for (final MonsterStatusEffect mse : this.stati.values()) { - client.announce(MaplePacketCreator.applyMonsterStatus(getObjectId(), mse, null)); - } - } - } finally { - statiLock.unlock(); + announceMonsterStatusInternal(client, this.getStati().values()); + } + + public void announceMonsterStatusInternal(MapleClient client, Collection mseList) { + for (MonsterStatusEffect mse : mseList) { + client.announce(MaplePacketCreator.applyMonsterStatus(getObjectId(), mse, null)); } } @@ -1203,7 +1206,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { if (oldEffect != null) { oldEffect.removeActiveStatus(stat); if (oldEffect.getStati().isEmpty()) { - MobStatusService service = (MobStatusService) map.getChannelServer().getServiceAccess(ServiceType.MOB_STATUS); + MobStatusService service = (MobStatusService) map.getChannelServer().getServiceAccess(ChannelServices.MOB_STATUS); service.interruptMobStatus(mapid, oldEffect); } } @@ -1310,7 +1313,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { statiLock.unlock(); } - MobStatusService service = (MobStatusService) map.getChannelServer().getServiceAccess(ServiceType.MOB_STATUS); + MobStatusService service = (MobStatusService) map.getChannelServer().getServiceAccess(ChannelServices.MOB_STATUS); service.registerMobStatus(mapid, status, cancelTask, duration + animationTime - 100, overtimeAction, overtimeDelay); return true; } @@ -1362,7 +1365,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { statiLock.unlock(); } - MobStatusService service = (MobStatusService) map.getChannelServer().getServiceAccess(ServiceType.MOB_STATUS); + MobStatusService service = (MobStatusService) map.getChannelServer().getServiceAccess(ChannelServices.MOB_STATUS); service.registerMobStatus(map.getId(), effect, cancelTask, duration); } @@ -1561,7 +1564,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { } }; - MobClearSkillService service = (MobClearSkillService) map.getChannelServer().getServiceAccess(ServiceType.MOB_CLEAR_SKILL); + MobClearSkillService service = (MobClearSkillService) map.getChannelServer().getServiceAccess(ChannelServices.MOB_CLEAR_SKILL); service.registerMobClearSkillAction(mmap.getId(), r, cooltime); } @@ -1630,7 +1633,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { } }; - MobClearSkillService service = (MobClearSkillService) map.getChannelServer().getServiceAccess(ServiceType.MOB_CLEAR_SKILL); + MobClearSkillService service = (MobClearSkillService) map.getChannelServer().getServiceAccess(ChannelServices.MOB_CLEAR_SKILL); service.registerMobClearSkillAction(mmap.getId(), r, cooltime); } finally { monsterLock.unlock(); @@ -1678,7 +1681,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { public void run() { int curHp = hp.get(); if(curHp <= 1) { - MobStatusService service = (MobStatusService) map.getChannelServer().getServiceAccess(ServiceType.MOB_STATUS); + MobStatusService service = (MobStatusService) map.getChannelServer().getServiceAccess(ChannelServices.MOB_STATUS); service.interruptMobStatus(map.getId(), status); return; } @@ -1687,7 +1690,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { if (damage >= curHp) { damage = curHp - 1; if (type == 1 || type == 2) { - MobStatusService service = (MobStatusService) map.getChannelServer().getServiceAccess(ServiceType.MOB_STATUS); + MobStatusService service = (MobStatusService) map.getChannelServer().getServiceAccess(ChannelServices.MOB_STATUS); service.interruptMobStatus(map.getId(), status); } } @@ -1744,7 +1747,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { } }; - MobClearSkillService service = (MobClearSkillService) mmap.getChannelServer().getServiceAccess(ServiceType.MOB_CLEAR_SKILL); + MobClearSkillService service = (MobClearSkillService) mmap.getChannelServer().getServiceAccess(ChannelServices.MOB_CLEAR_SKILL); service.registerMobClearSkillAction(mmap.getId(), r, milli); } } finally { @@ -1780,7 +1783,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { public Map getStati() { statiLock.lock(); try { - return Collections.unmodifiableMap(stati); + return new HashMap<>(stati); } finally { statiLock.unlock(); } @@ -2120,7 +2123,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { MapleCharacter chrController = this.getActiveController(); if (chrController == null) { - this.aggroSwitchController(player, true); + this.aggroSwitchController(player, true); } else if (chrController.getId() == player.getId()) { this.setControllerHasAggro(true); } @@ -2227,7 +2230,7 @@ public class MapleMonster extends AbstractLoadedMapleLife { }; // had to schedule this since mob wouldn't stick to puppet aggro who knows why - OverallService service = (OverallService) this.getMap().getChannelServer().getServiceAccess(ServiceType.OVERALL); + OverallService service = (OverallService) this.getMap().getChannelServer().getServiceAccess(ChannelServices.OVERALL); service.registerOverallAction(this.getMap().getId(), r, YamlConfig.config.server.UPDATE_INTERVAL); } diff --git a/src/server/life/MaplePlayerNPC.java b/src/server/life/MaplePlayerNPC.java index bddfba1b71..e49da183a2 100644 --- a/src/server/life/MaplePlayerNPC.java +++ b/src/server/life/MaplePlayerNPC.java @@ -361,11 +361,15 @@ public class MaplePlayerNPC extends AbstractMapleMapObject { int j = 0; for(int i = branchSid; i < nextBranchSid; i++) { if(!usedScriptIds.contains(i)) { - availables.add(i); - j++; - - if(j == 20) { - break; + if (MaplePlayerNPCFactory.isExistentScriptid(i)) { // thanks Ark, Zein, geno, Ariel, JrCl0wn for noticing client crashes due to use of missing scriptids + availables.add(i); + j++; + + if(j == 20) { + break; + } + } else { + break; // after this point no more scriptids expected... } } } diff --git a/src/server/life/MaplePlayerNPCFactory.java b/src/server/life/MaplePlayerNPCFactory.java index b262da2d75..8abc2605da 100644 --- a/src/server/life/MaplePlayerNPCFactory.java +++ b/src/server/life/MaplePlayerNPCFactory.java @@ -19,6 +19,7 @@ */ package server.life; +import constants.net.ServerConstants; import java.io.File; import java.util.HashMap; import java.util.Map; @@ -36,9 +37,15 @@ import provider.MapleDataTool; */ public class MaplePlayerNPCFactory { + private static MapleDataProvider npcData = MapleDataProviderFactory.getDataProvider(new File("wz/Npc.wz")); + private static final Map> dnpcMaps = new HashMap<>(); private static Integer runningDeveloperOid = 2147483000; // 647 slots, long enough + public static boolean isExistentScriptid(int scriptid) { + return npcData.getData(scriptid + ".img") != null; + } + public static void loadDeveloperRoomMetadata(MapleDataProvider npc) { MapleData thisData = npc.getData("9977777.img"); if(thisData != null) { @@ -60,7 +67,7 @@ public class MaplePlayerNPCFactory { } public static void loadFactoryMetadata() { - MapleDataProvider npc = MapleDataProviderFactory.getDataProvider(new File("wz/Npc.wz")); + MapleDataProvider npc = npcData; loadDeveloperRoomMetadata(npc); MapleDataProvider etc = MapleDataProviderFactory.getDataProvider(new File("wz/Etc.wz")); diff --git a/src/server/life/MobSkill.java b/src/server/life/MobSkill.java index e91b05bd65..a5cd921fd5 100644 --- a/src/server/life/MobSkill.java +++ b/src/server/life/MobSkill.java @@ -32,8 +32,8 @@ import client.status.MonsterStatus; import constants.game.GameConstants; import java.util.LinkedList; import java.util.Map; -import net.server.channel.services.ServiceType; -import net.server.channel.services.task.OverallService; +import net.server.services.type.ChannelServices; +import net.server.services.task.channel.OverallService; import tools.Randomizer; import server.maps.MapleMap; import server.maps.MapleMapObject; @@ -117,7 +117,7 @@ public class MobSkill { } }; - OverallService service = (OverallService) monster.getMap().getChannelServer().getServiceAccess(ServiceType.OVERALL); + OverallService service = (OverallService) monster.getMap().getChannelServer().getServiceAccess(ChannelServices.OVERALL); service.registerOverallAction(monster.getMap().getId(), toRun, animationTime); } diff --git a/src/server/life/MobSkillFactory.java b/src/server/life/MobSkillFactory.java index d6f9a416e6..584b73d760 100644 --- a/src/server/life/MobSkillFactory.java +++ b/src/server/life/MobSkillFactory.java @@ -27,11 +27,12 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.concurrent.locks.ReentrantReadWriteLock; -import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock; -import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; import net.server.audit.locks.MonitoredLockType; +import net.server.audit.locks.MonitoredReadLock; import net.server.audit.locks.MonitoredReentrantReadWriteLock; +import net.server.audit.locks.MonitoredWriteLock; +import net.server.audit.locks.factory.MonitoredReadLockFactory; +import net.server.audit.locks.factory.MonitoredWriteLockFactory; import provider.MapleData; import provider.MapleDataProvider; import provider.MapleDataProviderFactory; @@ -46,9 +47,9 @@ public class MobSkillFactory { private static Map mobSkills = new HashMap(); private final static MapleDataProvider dataSource = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/Skill.wz")); private static MapleData skillRoot = dataSource.getData("MobSkill.img"); - private final static ReentrantReadWriteLock dataLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.MOBSKILL_FACTORY); - private final static ReadLock rL = dataLock.readLock(); - private final static WriteLock wL = dataLock.writeLock(); + private final static MonitoredReentrantReadWriteLock dataLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.MOBSKILL_FACTORY); + private final static MonitoredReadLock rL = MonitoredReadLockFactory.createLock(dataLock); + private final static MonitoredWriteLock wL = MonitoredWriteLockFactory.createLock(dataLock); public static MobSkill getMobSkill(final int skillId, final int level) { final String key = skillId + "" + level; diff --git a/src/server/loot/MapleLootManager.java b/src/server/loot/MapleLootManager.java index bcfef5ee69..c1d933b716 100644 --- a/src/server/loot/MapleLootManager.java +++ b/src/server/loot/MapleLootManager.java @@ -56,14 +56,12 @@ public class MapleLootManager { qItemAmount = qCompleteAmount; } - if (qItemAmount <= 0) { - continue; - } + // thanks kvmba for noticing quest items with no required amount failing to be detected as such int qItemStatus = chrInv.hasItem(dropEntry.itemId, qItemAmount); if (qItemStatus == 2) { continue; - } /*else if (restricted && qItemStatus == 1) { + } /*else if (restricted && qItemStatus == 1) { // one-of-a-kind loots should be available everytime, thanks onechord for noticing continue; }*/ } /*else if (restricted && chrInv.hasItem(dropEntry.itemId, 1) > 0) { // thanks Conrad, Legalize for noticing eligible loots not being available to drop for non-killer parties diff --git a/src/server/maps/MapleDoor.java b/src/server/maps/MapleDoor.java index a58f9897bb..89dd65b7ba 100644 --- a/src/server/maps/MapleDoor.java +++ b/src/server/maps/MapleDoor.java @@ -28,8 +28,8 @@ import config.YamlConfig; import tools.Pair; import client.MapleCharacter; -import net.server.channel.services.ServiceType; -import net.server.channel.services.task.OverallService; +import net.server.services.type.ChannelServices; +import net.server.services.task.channel.OverallService; /** * @@ -133,7 +133,7 @@ public class MapleDoor { if (effectTimeLeft > 0) { MapleMap town = destroyDoor.getTown(); - OverallService service = (OverallService) town.getChannelServer().getServiceAccess(ServiceType.OVERALL); + OverallService service = (OverallService) town.getChannelServer().getServiceAccess(ChannelServices.OVERALL); service.registerOverallAction(town.getId(), new Runnable() { @Override public void run() { diff --git a/src/server/maps/MapleDoorObject.java b/src/server/maps/MapleDoorObject.java index 20995c9608..44ff494cd6 100644 --- a/src/server/maps/MapleDoorObject.java +++ b/src/server/maps/MapleDoorObject.java @@ -20,11 +20,14 @@ package server.maps; import java.awt.Point; -import java.util.concurrent.locks.ReentrantReadWriteLock; import client.MapleCharacter; import client.MapleClient; import net.server.audit.locks.MonitoredLockType; +import net.server.audit.locks.MonitoredReadLock; import net.server.audit.locks.MonitoredReentrantReadWriteLock; +import net.server.audit.locks.MonitoredWriteLock; +import net.server.audit.locks.factory.MonitoredReadLockFactory; +import net.server.audit.locks.factory.MonitoredWriteLockFactory; import net.server.world.MapleParty; import tools.MaplePacketCreator; @@ -41,9 +44,9 @@ public class MapleDoorObject extends AbstractMapleMapObject { private int linkedPortalId; private Point linkedPos; - private final ReentrantReadWriteLock locks = new MonitoredReentrantReadWriteLock(MonitoredLockType.PLAYER_DOOR, true); - private ReentrantReadWriteLock.ReadLock rlock = locks.readLock(); - private ReentrantReadWriteLock.WriteLock wlock = locks.writeLock(); + private final MonitoredReentrantReadWriteLock locks = new MonitoredReentrantReadWriteLock(MonitoredLockType.PLAYER_DOOR, true); + private MonitoredReadLock rlock = MonitoredReadLockFactory.createLock(locks); + private MonitoredWriteLock wlock = MonitoredWriteLockFactory.createLock(locks); public MapleDoorObject(int owner, MapleMap destination, MapleMap origin, int townPortalId, Point targetPosition, Point toPosition) { super(); diff --git a/src/server/maps/MapleFootholdTree.java b/src/server/maps/MapleFootholdTree.java index 5d897e681d..ef077fdeb7 100644 --- a/src/server/maps/MapleFootholdTree.java +++ b/src/server/maps/MapleFootholdTree.java @@ -169,25 +169,27 @@ public class MapleFootholdTree { } Collections.sort(xMatches); for (MapleFoothold fh : xMatches) { - if (!fh.isWall() && fh.getY1() != fh.getY2()) { - int calcY; - double s1 = Math.abs(fh.getY2() - fh.getY1()); - double s2 = Math.abs(fh.getX2() - fh.getX1()); - double s4 = Math.abs(p.x - fh.getX1()); - double alpha = Math.atan(s2 / s1); - double beta = Math.atan(s1 / s2); - double s5 = Math.cos(alpha) * (s4 / Math.cos(beta)); - if (fh.getY2() < fh.getY1()) { - calcY = fh.getY1() - (int) s5; + if (!fh.isWall()) { + if (fh.getY1() != fh.getY2()) { + int calcY; + double s1 = Math.abs(fh.getY2() - fh.getY1()); + double s2 = Math.abs(fh.getX2() - fh.getX1()); + double s4 = Math.abs(p.x - fh.getX1()); + double alpha = Math.atan(s2 / s1); + double beta = Math.atan(s1 / s2); + double s5 = Math.cos(alpha) * (s4 / Math.cos(beta)); + if (fh.getY2() < fh.getY1()) { + calcY = fh.getY1() - (int) s5; + } else { + calcY = fh.getY1() + (int) s5; + } + if (calcY >= p.y) { + return fh; + } } else { - calcY = fh.getY1() + (int) s5; - } - if (calcY >= p.y) { - return fh; - } - } else if (!fh.isWall()) { - if (fh.getY1() >= p.y) { - return fh; + if (fh.getY1() >= p.y) { + return fh; + } } } } diff --git a/src/server/maps/MapleMap.java b/src/server/maps/MapleMap.java index a5b90e3711..a76e44bcad 100644 --- a/src/server/maps/MapleMap.java +++ b/src/server/maps/MapleMap.java @@ -55,20 +55,21 @@ import java.util.Random; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReentrantReadWriteLock; -import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock; -import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; import net.server.audit.locks.MonitoredLockType; +import net.server.audit.locks.MonitoredReadLock; import net.server.audit.locks.MonitoredReentrantReadWriteLock; +import net.server.audit.locks.MonitoredWriteLock; +import net.server.audit.locks.factory.MonitoredReadLockFactory; import net.server.audit.locks.factory.MonitoredReentrantLockFactory; +import net.server.audit.locks.factory.MonitoredWriteLockFactory; import java.lang.ref.WeakReference; import net.server.Server; import net.server.coordinator.world.MapleMonsterAggroCoordinator; import net.server.channel.Channel; -import net.server.channel.services.ServiceType; -import net.server.channel.services.task.FaceExpressionService; -import net.server.channel.services.task.MobMistService; -import net.server.channel.services.task.OverallService; +import net.server.services.type.ChannelServices; +import net.server.services.task.channel.FaceExpressionService; +import net.server.services.task.channel.MobMistService; +import net.server.services.task.channel.OverallService; import net.server.world.World; import scripting.map.MapScriptManager; import server.MapleItemInformationProvider; @@ -177,10 +178,10 @@ public class MapleMap { private int timeExpand; //locks - private ReadLock chrRLock; - private WriteLock chrWLock; - private ReadLock objectRLock; - private WriteLock objectWLock; + private MonitoredReadLock chrRLock; + private MonitoredWriteLock chrWLock; + private MonitoredReadLock objectRLock; + private MonitoredWriteLock objectWLock; private Lock lootLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.MAP_LOOT, true); @@ -196,13 +197,13 @@ public class MapleMap { if (this.monsterRate == 0) { this.monsterRate = 1; } - final ReentrantReadWriteLock chrLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.MAP_CHRS, true); - chrRLock = chrLock.readLock(); - chrWLock = chrLock.writeLock(); + final MonitoredReentrantReadWriteLock chrLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.MAP_CHRS, true); + chrRLock = MonitoredReadLockFactory.createLock(chrLock); + chrWLock = MonitoredWriteLockFactory.createLock(chrLock); - final ReentrantReadWriteLock objectLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.MAP_OBJS, true); - objectRLock = objectLock.readLock(); - objectWLock = objectLock.writeLock(); + final MonitoredReentrantReadWriteLock objectLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.MAP_OBJS, true); + objectRLock = MonitoredReadLockFactory.createLock(objectLock); + objectWLock = MonitoredWriteLockFactory.createLock(objectLock); aggroMonitor = new MapleMonsterAggroCoordinator(); } @@ -570,7 +571,7 @@ public class MapleMap { initial.x = xLimits.right; } - Point ret = calcPointBelow(new Point(initial.x, initial.y - 85)); + Point ret = calcPointBelow(new Point(initial.x, initial.y - 85)); // actual drop ranges: default - 120, explosive - 360 if (ret == null) { ret = bsearchDropPos(initial, fallback); } @@ -758,6 +759,10 @@ public class MapleMap { final List otherQuestEntry = new ArrayList<>(); sortDropEntries(YamlConfig.config.server.USE_SPAWN_RELEVANT_LOOT ? mob.retrieveRelevantDrops() : mi.retrieveEffectiveDrop(mob.getId()), dropEntry, visibleQuestEntry, otherQuestEntry, chr); + if (dropEntry.isEmpty() && visibleQuestEntry.isEmpty()) { // thanks resinate + return; + } + registerMobItemDrops(droptype, mobpos, chRate, pos, dropEntry, visibleQuestEntry, otherQuestEntry, globalEntry, chr, mob); } @@ -1333,6 +1338,18 @@ public class MapleMap { return count; } + public int countBosses() { + int count = 0; + + for(MapleMonster mob: getAllMonsters()) { + if (mob.isBoss()) { + count++; + } + } + + return count; + } + public boolean damageMonster(final MapleCharacter chr, final MapleMonster monster, final int damage) { if (monster.getId() == 8800000) { for (MapleMapObject object : chr.getMap().getMapObjects()) { @@ -1388,6 +1405,9 @@ public class MapleMap { spawnedMonstersOnMap.decrementAndGet(); removeMapObject(monster); monster.disposeMapObject(); + if (monster.hasBossHPBar()) { // thanks resinate for noticing boss HPbar not clearing after mob defeat in certain scenarios + broadcastBossHpMessage(monster, monster.hashCode(), monster.makeBossHPBarPacket(), monster.getPosition()); + } return true; } finally { @@ -1462,14 +1482,13 @@ public class MapleMap { if (mons != null) { if (mons.getId() == 8800000) { makeMonsterReal(mons); - mons.aggroUpdateController(); break; } } } } } - + MapleCharacter dropOwner = monster.killBy(chr); if (withDrops && !monster.dropsDisabled()) { if (dropOwner == null) { @@ -1904,10 +1923,7 @@ public class MapleMap { }); monster.aggroUpdateController(); - - if (monster.hasBossHPBar()) { - broadcastBossHpMessage(monster, monster.hashCode(), monster.makeBossHPBarPacket(), monster.getPosition()); - } + updateBossSpawn(monster); spawnedMonstersOnMap.incrementAndGet(); addSelfDestructive(monster); @@ -1946,7 +1962,7 @@ public class MapleMap { public void dismissRemoveAfter(final MapleMonster monster) { Runnable removeAfterAction = monster.popRemoveAfterAction(); if (removeAfterAction != null) { - OverallService service = (OverallService) this.getChannelServer().getServiceAccess(ServiceType.OVERALL); + OverallService service = (OverallService) this.getChannelServer().getServiceAccess(ChannelServices.OVERALL); service.forceRunOverallAction(mapid, removeAfterAction); } } @@ -2009,6 +2025,7 @@ public class MapleMap { }, null); monster.aggroUpdateController(); + updateBossSpawn(monster); if ((monster.getTeam() == 1 || monster.getTeam() == 0) && (isCPQMap() || isCPQMap2())) { List teamS = null; @@ -2025,10 +2042,6 @@ public class MapleMap { } } } - - if (monster.hasBossHPBar()) { - broadcastBossHpMessage(monster, monster.hashCode(), monster.makeBossHPBarPacket(), monster.getPosition()); - } if (monster.getDropPeriodTime() > 0) { //9300102 - Watchhog, 9300061 - Moon Bunny (HPQ), 9300093 - Tylus if (monster.getId() == 9300102) { @@ -2078,10 +2091,7 @@ public class MapleMap { }); monster.aggroUpdateController(); - - if (monster.hasBossHPBar()) { - broadcastBossHpMessage(monster, monster.hashCode(), monster.makeBossHPBarPacket(), monster.getPosition()); - } + updateBossSpawn(monster); spawnedMonstersOnMap.incrementAndGet(); addSelfDestructive(monster); @@ -2105,8 +2115,9 @@ public class MapleMap { public void makeMonsterReal(final MapleMonster monster) { monster.setFake(false); broadcastMessage(MaplePacketCreator.makeMonsterReal(monster)); - + monster.broadcastMonsterStatus(); monster.aggroUpdateController(); + updateBossSpawn(monster); } public void spawnReactor(final MapleReactor reactor) { @@ -2208,7 +2219,7 @@ public class MapleMap { } }; - MobMistService service = (MobMistService) this.getChannelServer().getServiceAccess(ServiceType.MOB_MIST); + MobMistService service = (MobMistService) this.getChannelServer().getServiceAccess(ChannelServices.MOB_MIST); service.registerMobMistCancelAction(mapid, mistSchedule, duration); } @@ -2308,7 +2319,7 @@ public class MapleMap { } private void registerMapSchedule(Runnable r, long delay) { - OverallService service = (OverallService) this.getChannelServer().getServiceAccess(ServiceType.OVERALL); + OverallService service = (OverallService) this.getChannelServer().getServiceAccess(ChannelServices.OVERALL); service.registerOverallAction(mapid, r, delay); } @@ -2795,7 +2806,7 @@ public class MapleMap { public void removePlayer(MapleCharacter chr) { Channel cserv = chr.getClient().getChannelServer(); - FaceExpressionService service = (FaceExpressionService) this.getChannelServer().getServiceAccess(ServiceType.FACE_EXPRESSION); + FaceExpressionService service = (FaceExpressionService) this.getChannelServer().getServiceAccess(ChannelServices.FACE_EXPRESSION); service.unregisterFaceExpression(mapid, chr); chr.unregisterChairBuff(); @@ -2914,6 +2925,21 @@ public class MapleMap { } } + private void updateBossSpawn(MapleMonster monster) { + if (monster.hasBossHPBar()) { + broadcastBossHpMessage(monster, monster.hashCode(), monster.makeBossHPBarPacket(), monster.getPosition()); + } + if (monster.isBoss()) { + if (unclaimOwnership() != null) { + String mobName = MapleMonsterInformationProvider.getInstance().getMobNameFromId(monster.getId()); + if (mobName != null) { + mobName = mobName.trim(); + this.dropMessage(5, "This lawn has been taken siege by " + mobName + "'s forces and will be kept hold until their defeat."); + } + } + } + } + public void broadcastBossHpMessage(MapleMonster mm, int bossHash, final byte[] packet) { broadcastBossHpMessage(mm, bossHash, null, packet, Double.POSITIVE_INFINITY, null); } @@ -3556,7 +3582,7 @@ public class MapleMap { if (reactor.getDelay() > 0) { MapleMap reactorMap = reactor.getMap(); - OverallService service = (OverallService) reactorMap.getChannelServer().getServiceAccess(ServiceType.OVERALL); + OverallService service = (OverallService) reactorMap.getChannelServer().getServiceAccess(ChannelServices.OVERALL); service.registerOverallAction(reactorMap.getId(), new Runnable() { @Override public void run() { @@ -4219,8 +4245,13 @@ public class MapleMap { } } + public MapleCharacter unclaimOwnership() { + MapleCharacter lastOwner = this.mapOwner; + return unclaimOwnership(lastOwner) ? lastOwner : null; + } + public boolean unclaimOwnership(MapleCharacter chr) { - if (mapOwner == chr) { + if (chr != null && mapOwner == chr) { this.mapOwner = null; chr.setOwnedMap(null); @@ -4255,7 +4286,7 @@ public class MapleMap { public void checkMapOwnerActivity() { long timeNow = Server.getInstance().getCurrentTime(); if (timeNow - mapOwnerLastActivityTime > 60000) { - if (unclaimOwnership(mapOwner)) { + if (unclaimOwnership() != null) { this.dropMessage(5, "This lawn is now free real estate."); } } diff --git a/src/server/maps/MapleMapFactory.java b/src/server/maps/MapleMapFactory.java index 55b3f2ba71..d98158e6c6 100644 --- a/src/server/maps/MapleMapFactory.java +++ b/src/server/maps/MapleMapFactory.java @@ -54,7 +54,7 @@ public class MapleMapFactory { nameData = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/String.wz")).getData("Map.img"); mapSource = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/Map.wz")); } - + private static void loadLifeFromWz(MapleMap map, MapleData mapData) { for (MapleData life : mapData.getChildByPath("life")) { life.getName(); @@ -309,9 +309,10 @@ public class MapleMapFactory { } } } + try { - map.setMapName(MapleDataTool.getString("mapName", nameData.getChildByPath(getMapStringName(mapid)), "")); - map.setStreetName(MapleDataTool.getString("streetName", nameData.getChildByPath(getMapStringName(mapid)), "")); + map.setMapName(loadPlaceName(mapid)); + map.setStreetName(loadStreetName(mapid)); } catch (Exception e) { if (mapid / 1000 != 1020) { // explorer job introduction scenes e.printStackTrace(); @@ -434,4 +435,20 @@ public class MapleMapFactory { return builder.toString(); } + public static String loadPlaceName(int mapid) throws Exception { + try { + return MapleDataTool.getString("mapName", nameData.getChildByPath(getMapStringName(mapid)), ""); + } catch (Exception e) { + return ""; + } + } + + public static String loadStreetName(int mapid) throws Exception { + try { + return MapleDataTool.getString("streetName", nameData.getChildByPath(getMapStringName(mapid)), ""); + } catch (Exception e) { + return ""; + } + } + } diff --git a/src/server/maps/MapleMapManager.java b/src/server/maps/MapleMapManager.java index db3df6d49a..bda9c73af3 100644 --- a/src/server/maps/MapleMapManager.java +++ b/src/server/maps/MapleMapManager.java @@ -21,11 +21,12 @@ package server.maps; import java.util.HashMap; import java.util.Map; -import java.util.concurrent.locks.ReentrantReadWriteLock; -import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock; -import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; import net.server.audit.locks.MonitoredLockType; +import net.server.audit.locks.MonitoredReadLock; import net.server.audit.locks.MonitoredReentrantReadWriteLock; +import net.server.audit.locks.MonitoredWriteLock; +import net.server.audit.locks.factory.MonitoredReadLockFactory; +import net.server.audit.locks.factory.MonitoredWriteLockFactory; import scripting.event.EventInstanceManager; public class MapleMapManager { @@ -35,17 +36,17 @@ public class MapleMapManager { private Map maps = new HashMap<>(); - private ReadLock mapsRLock; - private WriteLock mapsWLock; + private MonitoredReadLock mapsRLock; + private MonitoredWriteLock mapsWLock; public MapleMapManager(EventInstanceManager eim, int world, int channel) { this.world = world; this.channel = channel; this.event = eim; - ReentrantReadWriteLock rrwl = new MonitoredReentrantReadWriteLock(MonitoredLockType.MAP_MANAGER); - this.mapsRLock = rrwl.readLock(); - this.mapsWLock = rrwl.writeLock(); + MonitoredReentrantReadWriteLock rrwl = new MonitoredReentrantReadWriteLock(MonitoredLockType.MAP_MANAGER); + this.mapsRLock = MonitoredReadLockFactory.createLock(rrwl); + this.mapsWLock = MonitoredWriteLockFactory.createLock(rrwl); } public MapleMap resetMap(int mapid) { diff --git a/src/server/maps/MapleReactor.java b/src/server/maps/MapleReactor.java index 7530303434..6ec657c0a6 100644 --- a/src/server/maps/MapleReactor.java +++ b/src/server/maps/MapleReactor.java @@ -36,8 +36,8 @@ import server.TimerManager; import tools.MaplePacketCreator; import tools.Pair; import net.server.audit.locks.MonitoredLockType; -import net.server.channel.services.ServiceType; -import net.server.channel.services.task.OverallService; +import net.server.services.type.ChannelServices; +import net.server.services.task.channel.OverallService; import server.partyquest.GuardianSpawnPoint; /** @@ -371,7 +371,7 @@ public class MapleReactor extends AbstractMapleMapObject { delayedRespawnRun = r; - OverallService service = (OverallService) map.getChannelServer().getServiceAccess(ServiceType.OVERALL); + OverallService service = (OverallService) map.getChannelServer().getServiceAccess(ChannelServices.OVERALL); service.registerOverallAction(map.getId(), r, this.getDelay()); } @@ -379,7 +379,7 @@ public class MapleReactor extends AbstractMapleMapObject { Runnable r = delayedRespawnRun; if (r != null) { - OverallService service = (OverallService) map.getChannelServer().getServiceAccess(ServiceType.OVERALL); + OverallService service = (OverallService) map.getChannelServer().getServiceAccess(ChannelServices.OVERALL); service.forceRunOverallAction(map.getId(), r); return true; } else { diff --git a/src/server/quest/MapleQuest.java b/src/server/quest/MapleQuest.java index a33167d190..ab6914542b 100644 --- a/src/server/quest/MapleQuest.java +++ b/src/server/quest/MapleQuest.java @@ -225,7 +225,7 @@ public class MapleQuest { int ixSize = ix.size(); for (int i = 0; i < ixSize; i++) { - String progress = chr.getClient().getAbstractPlayerInteraction().getQuestProgress(infoNumber, i); + String progress = chr.getAbstractPlayerInteraction().getQuestProgress(infoNumber, i); String ixProgress = ix.get(i); if (!progress.contentEquals(ixProgress)) { @@ -387,19 +387,19 @@ public class MapleQuest { public int getStartItemAmountNeeded(int itemid) { MapleQuestRequirement req = startReqs.get(MapleQuestRequirementType.ITEM); if(req == null) - return 0; + return Integer.MIN_VALUE; ItemRequirement ireq = (ItemRequirement) req; - return ireq.getItemAmountNeeded(itemid); + return ireq.getItemAmountNeeded(itemid, false); } public int getCompleteItemAmountNeeded(int itemid) { MapleQuestRequirement req = completeReqs.get(MapleQuestRequirementType.ITEM); if(req == null) - return 0; + return Integer.MAX_VALUE; ItemRequirement ireq = (ItemRequirement) req; - return ireq.getItemAmountNeeded(itemid); + return ireq.getItemAmountNeeded(itemid, true); } public int getMobAmountNeeded(int mid) { diff --git a/src/server/quest/actions/ItemAction.java b/src/server/quest/actions/ItemAction.java index 6d701603bc..aa8b696a45 100644 --- a/src/server/quest/actions/ItemAction.java +++ b/src/server/quest/actions/ItemAction.java @@ -272,7 +272,7 @@ public class ItemAction extends MapleQuestAction { } // thanks onechord for noticing quests unnecessarily giving out "full inventory" from quests that also takes items from players - return chr.getClient().getAbstractPlayerInteraction().canHoldAllAfterRemoving(toAddItemids, toAddQuantity, toRemoveItemids, toRemoveQuantity); + return chr.getAbstractPlayerInteraction().canHoldAllAfterRemoving(toAddItemids, toAddQuantity, toRemoveItemids, toRemoveQuantity); } private boolean canGetItem(ItemData item, MapleCharacter chr) { diff --git a/src/server/quest/requirements/ItemRequirement.java b/src/server/quest/requirements/ItemRequirement.java index 6308ce28f2..67eb679c28 100644 --- a/src/server/quest/requirements/ItemRequirement.java +++ b/src/server/quest/requirements/ItemRequirement.java @@ -96,11 +96,12 @@ public class ItemRequirement extends MapleQuestRequirement { return true; } - public int getItemAmountNeeded(int itemid) { - if(items.containsKey(itemid)) { - return items.get(itemid); - } - - return 0; + public int getItemAmountNeeded(int itemid, boolean complete) { + Integer amount = items.get(itemid); + if (amount != null) { + return amount; + } else { + return complete ? Integer.MAX_VALUE : Integer.MIN_VALUE; + } } } diff --git a/src/tools/IntervalBuilder.java b/src/tools/IntervalBuilder.java index 1b578515b5..f072b4796a 100644 --- a/src/tools/IntervalBuilder.java +++ b/src/tools/IntervalBuilder.java @@ -22,11 +22,12 @@ package tools; import java.awt.geom.Line2D; import java.util.ArrayList; import java.util.List; -import java.util.concurrent.locks.ReentrantReadWriteLock; -import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock; -import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; import net.server.audit.locks.MonitoredLockType; +import net.server.audit.locks.MonitoredReadLock; import net.server.audit.locks.MonitoredReentrantReadWriteLock; +import net.server.audit.locks.MonitoredWriteLock; +import net.server.audit.locks.factory.MonitoredReadLockFactory; +import net.server.audit.locks.factory.MonitoredWriteLockFactory; /** * @@ -36,13 +37,13 @@ public class IntervalBuilder { private List intervalLimits = new ArrayList<>(); - protected ReadLock intervalRlock; - protected WriteLock intervalWlock; + protected MonitoredReadLock intervalRlock; + protected MonitoredWriteLock intervalWlock; public IntervalBuilder() { - ReentrantReadWriteLock locks = new MonitoredReentrantReadWriteLock(MonitoredLockType.INTERVAL, true); - intervalRlock = locks.readLock(); - intervalWlock = locks.writeLock(); + MonitoredReentrantReadWriteLock locks = new MonitoredReentrantReadWriteLock(MonitoredLockType.INTERVAL, true); + intervalRlock = MonitoredReadLockFactory.createLock(locks); + intervalWlock = MonitoredWriteLockFactory.createLock(locks); } private void refitOverlappedIntervals(int st, int en, int newFrom, int newTo) { diff --git a/src/tools/MaplePacketCreator.java b/src/tools/MaplePacketCreator.java index bad5a79881..333b68a145 100644 --- a/src/tools/MaplePacketCreator.java +++ b/src/tools/MaplePacketCreator.java @@ -1086,7 +1086,6 @@ public class MaplePacketCreator { mplew.writeShort(chr.getHp()); mplew.writeBool(false); mplew.writeLong(getTime(Server.getInstance().getCurrentTime())); - mplew.skip(18); return mplew.getPacket(); } @@ -1103,7 +1102,6 @@ public class MaplePacketCreator { mplew.writeInt(spawnPosition.x); // spawn position placement thanks to Arnah (Vertisy) mplew.writeInt(spawnPosition.y); mplew.writeLong(getTime(Server.getInstance().getCurrentTime())); - mplew.skip(18); return mplew.getPacket(); } From d9f87f18a11415355af866e48f61f926532bc688 Mon Sep 17 00:00:00 2001 From: ronancpl Date: Wed, 30 Oct 2019 23:31:15 -0300 Subject: [PATCH 36/37] Script references patch Cleared issue in a few scripts which would be trying to access Java Math library methods with unexpected parameter types. Fixed EllinPQ rewarder NPC handing out an unexpected itemid to the player. Cleared SQL foreign key constraint statement no longer supposed to be used. --- config.yaml | 1 + docs/mychanges_ptbr.txt | 6 +++++- scripts/npc/2090004.js | 4 ++-- scripts/npc/2131001.js | 5 +++-- scripts/npc/2131002.js | 2 +- scripts/npc/2131003.js | 2 +- scripts/npc/2131005.js | 2 +- scripts/npc/2131006.js | 2 +- scripts/npc/2131007.js | 2 +- scripts/npc/2133000.js | 4 ++-- scripts/npc/9000011.js | 2 +- scripts/npc/9201115.js | 4 ++-- scripts/portal/party6_stage501.js | 2 +- scripts/portal/party6_stage502.js | 2 +- scripts/portal/party6_stage503.js | 2 +- scripts/portal/party6_stage504.js | 2 +- scripts/portal/party6_stage505.js | 2 +- scripts/portal/party6_stage506.js | 2 +- scripts/portal/party6_stage507.js | 2 +- scripts/portal/party6_stage508.js | 2 +- scripts/portal/party6_stage509.js | 2 +- scripts/portal/party6_stage510.js | 2 +- scripts/portal/party6_stage511.js | 2 +- scripts/portal/party6_stage512.js | 2 +- scripts/portal/party6_stage513.js | 2 +- scripts/portal/party6_stage514.js | 2 +- scripts/portal/party6_stage515.js | 2 +- sql/db_database.sql | 3 +-- src/client/MapleClient.java | 2 +- src/config/ServerConfig.java | 1 + src/net/MapleServerHandler.java | 1 - 31 files changed, 39 insertions(+), 34 deletions(-) diff --git a/config.yaml b/config.yaml index 7a8ac3c067..1f41bb8dff 100644 --- a/config.yaml +++ b/config.yaml @@ -214,6 +214,7 @@ server: USE_DEBUG_SHOW_PACKET: false USE_SUPPLY_RATE_COUPONS: true #Allows rate coupons to be sold through the Cash Shop. USE_IP_VALIDATION: true #Enables IP checking when logging in. + USE_CHARACTER_ACCOUNT_CHECK: false #Enables one-character-per-account check when logging in. This might be resource intensive. USE_MAXRANGE: true #Will send and receive packets from all events on a map, rather than those of only view range. USE_MAXRANGE_ECHO_OF_HERO: true diff --git a/docs/mychanges_ptbr.txt b/docs/mychanges_ptbr.txt index 4cd46d2581..d0663f13ab 100644 --- a/docs/mychanges_ptbr.txt +++ b/docs/mychanges_ptbr.txt @@ -2233,4 +2233,8 @@ Revisado lógica booleana na detecção de foothold abaixo, não realizando múl Revisado lógica recente de uso de petid único levando a lançamento de exceção (transações de DB implica retirada de item de pet do CS storage na DB antes de colocar o mesmo no inventário). Corrigido portal relacionado a quest em Ariant inesperadamente levando jogadores à passagem secreta de Sleepywood, em caso de conclusão de questline da mesma. Corrigido loop em scripts de quest de associação a Alcadno/Zenumist em Magatia. -Adicionado utilização de dispose em quest scripts para o comando homônimo. \ No newline at end of file +Adicionado utilização de dispose em quest scripts para o comando homônimo. + +30 Outubro 2019, +Corrigido bug em scripts (que possivelmente passou a ocorrer ao utilizar Java8) relacionado ao tentar utilizar métodos da biblioteca Math sem corresponder parâmetros com a assinatura adequada. +Corrigido entrega de itemid inesperado em script relacionado a EllinPQ. \ No newline at end of file diff --git a/scripts/npc/2090004.js b/scripts/npc/2090004.js index e7dc6ff8e0..c4fd175836 100644 --- a/scripts/npc/2090004.js +++ b/scripts/npc/2090004.js @@ -217,7 +217,7 @@ function action(mode, type, selection) { complete = false; } - if(java.lang.Math.random() >= 0.9) //A lucky find! Scroll 60% + if(Math.random() >= 0.9) //A lucky find! Scroll 60% item += 1; if (!complete || !cm.canHold(item, 1)) @@ -251,7 +251,7 @@ function action(mode, type, selection) { var reward; if (rewdSet[selectedItem] instanceof Array) { var length = rewdSet[selectedItem][1] - rewdSet[selectedItem][0]; - reward = rewdSet[selectedItem][0] + java.lang.Math.round(java.lang.Math.random() * length); + reward = rewdSet[selectedItem][0] + Math.round(Math.random() * length); } else reward = rewdSet[selectedItem]; diff --git a/scripts/npc/2131001.js b/scripts/npc/2131001.js index ae9629790e..0c5ed72e01 100644 --- a/scripts/npc/2131001.js +++ b/scripts/npc/2131001.js @@ -13,13 +13,14 @@ function action(mode, type, selection) { return; } if (status == 0) { - cm.sendSimple("My name is Pergen, I am the strongest magician around these parts.#b\r\n#L0#Hey, take these rubbles. You can perform your magic on them.#l"); + cm.sendSimple("My name is #p2131001#, I am the strongest magician around these parts.#b\r\n#L0#Hey, take these rubbles. You can perform your magic on them.#l"); } else if (status == 1) { if (!cm.haveItem(exchangeItem, 100)) { cm.sendNext("You don't have enough... I need at least 100."); cm.dispose(); } else { - cm.sendGetNumber("Hey, that's a good idea! I can give you #i4310000#Perfect Pitch for each 100 #i" + exchangeItem + "##t" + exchangeItem + "# you give me. How many do you want? (Current Items: " + cm.itemQuantity(exchangeItem) + ")", java.lang.Math.min(300, cm.itemQuantity(exchangeItem) / 100), 1, java.lang.Math.min(300, cm.itemQuantity(exchangeItem) / 100)); + // thanks yuxaij for noticing a few methods having parameters not matching the expected Math library function parameter types + cm.sendGetNumber("Hey, that's a good idea! I can give you #i4310000#Perfect Pitch for each 100 #i" + exchangeItem + "##t" + exchangeItem + "# you give me. How many do you want? (Current Items: " + cm.itemQuantity(exchangeItem) + ")", Math.min(300, cm.itemQuantity(exchangeItem) / 100), 1, Math.min(300, cm.itemQuantity(exchangeItem) / 100)); } } else if (status == 2) { if (selection >= 1 && selection <= cm.itemQuantity(exchangeItem) / 100) { diff --git a/scripts/npc/2131002.js b/scripts/npc/2131002.js index 9d32980e37..6a7cff98f6 100644 --- a/scripts/npc/2131002.js +++ b/scripts/npc/2131002.js @@ -5,6 +5,6 @@ */ function start(){ - cm.sendOk("My name is Euryth... As you can see, I am a fairy. People tell me I do not act fairy-like, but... I like making things out of metal objects. Shhh, don't tell this to anyone, but I also like MMA."); + cm.sendOk("My name is #p2131002#... As you can see, I am a fairy. People tell me I do not act fairy-like, but... I like making things out of metal objects. Shhh, don't tell this to anyone, but I also like MMA."); cm.dispose(); } \ No newline at end of file diff --git a/scripts/npc/2131003.js b/scripts/npc/2131003.js index 1c69b58d66..dd5be16d12 100644 --- a/scripts/npc/2131003.js +++ b/scripts/npc/2131003.js @@ -19,7 +19,7 @@ function action(mode, type, selection) { cm.sendNext("You don't have enough... I need at least 100."); cm.dispose(); } else { - cm.sendGetNumber("Hey, that's a good idea! I can give you #i4310000#Perfect Pitch for each 100 #i" + exchangeItem + "##t" + exchangeItem + "# you give me. How many do you want? (Current Items: " + cm.itemQuantity(exchangeItem) + ")", java.lang.Math.min(300, cm.itemQuantity(exchangeItem) / 100), 1, java.lang.Math.min(300, cm.itemQuantity(exchangeItem) / 100)); + cm.sendGetNumber("Hey, that's a good idea! I can give you #i4310000#Perfect Pitch for each 100 #i" + exchangeItem + "##t" + exchangeItem + "# you give me. How many do you want? (Current Items: " + cm.itemQuantity(exchangeItem) + ")", Math.min(300, cm.itemQuantity(exchangeItem) / 100), 1, Math.min(300, cm.itemQuantity(exchangeItem) / 100)); } } else if (status == 2) { if (selection >= 1 && selection <= cm.itemQuantity(exchangeItem) / 100) { diff --git a/scripts/npc/2131005.js b/scripts/npc/2131005.js index 4a1742962c..e51c35030a 100644 --- a/scripts/npc/2131005.js +++ b/scripts/npc/2131005.js @@ -19,7 +19,7 @@ function action(mode, type, selection) { cm.sendNext("You don't have enough... I need at least 100."); cm.dispose(); } else { - cm.sendGetNumber("Hey, that's a good idea! I can give you #i4310000#Perfect Pitch for each 100 #i" + exchangeItem + "##t" + exchangeItem + "# you give me. How many do you want? (Current Items: " + cm.itemQuantity(exchangeItem) + ")", java.lang.Math.min(300, cm.itemQuantity(exchangeItem) / 100), 1, java.lang.Math.min(300, cm.itemQuantity(exchangeItem) / 100)); + cm.sendGetNumber("Hey, that's a good idea! I can give you #i4310000#Perfect Pitch for each 100 #i" + exchangeItem + "##t" + exchangeItem + "# you give me. How many do you want? (Current Items: " + cm.itemQuantity(exchangeItem) + ")", Math.min(300, cm.itemQuantity(exchangeItem) / 100), 1, Math.min(300, cm.itemQuantity(exchangeItem) / 100)); } } else if (status == 2) { if (selection >= 1 && selection <= cm.itemQuantity(exchangeItem) / 100) { diff --git a/scripts/npc/2131006.js b/scripts/npc/2131006.js index c2910b80f4..a19b093243 100644 --- a/scripts/npc/2131006.js +++ b/scripts/npc/2131006.js @@ -19,7 +19,7 @@ function action(mode, type, selection) { cm.sendNext("You don't have enough... I need at least 100."); cm.dispose(); } else { - cm.sendGetNumber("Hey, that's a good idea! I can give you #i4310000#Perfect Pitch for each 100 #i" + exchangeItem + "##t" + exchangeItem + "# you give me. How many do you want? (Current Items: " + cm.itemQuantity(exchangeItem) + ")", java.lang.Math.min(300, cm.itemQuantity(exchangeItem) / 100), 1, java.lang.Math.min(300, cm.itemQuantity(exchangeItem) / 100)); + cm.sendGetNumber("Hey, that's a good idea! I can give you #i4310000#Perfect Pitch for each 100 #i" + exchangeItem + "##t" + exchangeItem + "# you give me. How many do you want? (Current Items: " + cm.itemQuantity(exchangeItem) + ")", Math.min(300, cm.itemQuantity(exchangeItem) / 100), 1, Math.min(300, cm.itemQuantity(exchangeItem) / 100)); } } else if (status == 2) { if (selection >= 1 && selection <= cm.itemQuantity(exchangeItem) / 100) { diff --git a/scripts/npc/2131007.js b/scripts/npc/2131007.js index d145bd0848..fffc7fb562 100644 --- a/scripts/npc/2131007.js +++ b/scripts/npc/2131007.js @@ -19,7 +19,7 @@ function action(mode, type, selection) { cm.sendNext("You don't have enough... I need at least 100."); cm.dispose(); } else { - cm.sendGetNumber("Hey, that's a good idea! I can give you #i4310000#Perfect Pitch for each 100 #i" + exchangeItem + "##t" + exchangeItem + "# you give me. How many do you want? (Current Items: " + cm.itemQuantity(exchangeItem) + ")", java.lang.Math.min(300, cm.itemQuantity(exchangeItem) / 100), 1, java.lang.Math.min(300, cm.itemQuantity(exchangeItem) / 100)); + cm.sendGetNumber("Hey, that's a good idea! I can give you #i4310000#Perfect Pitch for each 100 #i" + exchangeItem + "##t" + exchangeItem + "# you give me. How many do you want? (Current Items: " + cm.itemQuantity(exchangeItem) + ")", Math.min(300, cm.itemQuantity(exchangeItem) / 100), 1, Math.min(300, cm.itemQuantity(exchangeItem) / 100)); } } else if (status == 2) { if (selection >= 1 && selection <= cm.itemQuantity(exchangeItem) / 100) { diff --git a/scripts/npc/2133000.js b/scripts/npc/2133000.js index 68ec447716..e5b3de290b 100644 --- a/scripts/npc/2133000.js +++ b/scripts/npc/2133000.js @@ -111,9 +111,9 @@ function action(mode, type, selection) { cm.dispose(); } } else if (selection == 2){ - if (cm.haveItem(1032061) && !cm.haveItem(1032101) && cm.haveItem(4001198, 10)) { + if (cm.haveItem(1032061) && !cm.haveItem(1032072) && cm.haveItem(4001198, 10)) { cm.gainItem(1032061,-1); - cm.gainItem(1032101, 1); + cm.gainItem(1032072, 1); // thanks yuxaij for noticing unexpected itemid here cm.gainItem(4001198, -10); cm.dispose(); } else { diff --git a/scripts/npc/9000011.js b/scripts/npc/9000011.js index fab1981248..67dbb825bd 100644 --- a/scripts/npc/9000011.js +++ b/scripts/npc/9000011.js @@ -127,7 +127,7 @@ function action(mode, type, selection) { cm.dispose(); return; } - var rand = java.lang.Math.floor(java.lang.Math.random() * pri.length); + var rand = Math.floor(Math.random() * pri.length); if (!cm.haveItem(ite, quan)) { cm.sendOk("You need #b" + quan + " #t" + ite + "##k to exchange it with item."); } else if (cm.getInventory(1).getNextFreeSlot() <= -1 || cm.getInventory(2).getNextFreeSlot() <= -1 || cm.getInventory(3).getNextFreeSlot() <= -1 || cm.getInventory(4).getNextFreeSlot() <= -1) { diff --git a/scripts/npc/9201115.js b/scripts/npc/9201115.js index 05405fd3fb..a8c036ad81 100644 --- a/scripts/npc/9201115.js +++ b/scripts/npc/9201115.js @@ -35,11 +35,11 @@ function action(mode, type, selection) { cm.mapMessage(6, "Engarde! Master Guardians approach!"); for (var i = 0; i < 10; i++) { var mob = eim.getMonster(9400594); - cm.getMap().spawnMonsterOnGroundBelow(mob, new java.awt.Point(-1337 + (java.lang.Math.random() * 1337), 276)); + cm.getMap().spawnMonsterOnGroundBelow(mob, new java.awt.Point(-1337 + (Math.random() * 1337), 276)); } for (var i = 0; i < 20; i++) { var mob = eim.getMonster(9400582); - cm.getMap().spawnMonsterOnGroundBelow(mob, new java.awt.Point(-1337 + (java.lang.Math.random() * 1337), 276)); + cm.getMap().spawnMonsterOnGroundBelow(mob, new java.awt.Point(-1337 + (Math.random() * 1337), 276)); } eim.setIntProperty("glpq6", 1); cm.dispose(); diff --git a/scripts/portal/party6_stage501.js b/scripts/portal/party6_stage501.js index 887accb9f1..2788e39c89 100644 --- a/scripts/portal/party6_stage501.js +++ b/scripts/portal/party6_stage501.js @@ -1,5 +1,5 @@ function enter(pi) { - if (java.lang.Math.random() < 0.1) { + if (Math.random() < 0.1) { pi.playPortalSound(); pi.warp(930000300,"16st"); } else { pi.playPortalSound(); pi.warp(930000300, "02st"); diff --git a/scripts/portal/party6_stage502.js b/scripts/portal/party6_stage502.js index 259846a773..2b9dc73d03 100644 --- a/scripts/portal/party6_stage502.js +++ b/scripts/portal/party6_stage502.js @@ -1,5 +1,5 @@ function enter(pi) { - if (java.lang.Math.random() < 0.1) { + if (Math.random() < 0.1) { pi.playPortalSound(); pi.warp(930000300,"16st"); } else { pi.playPortalSound(); pi.warp(930000300, "03st"); diff --git a/scripts/portal/party6_stage503.js b/scripts/portal/party6_stage503.js index 38bd839b2d..29706f649b 100644 --- a/scripts/portal/party6_stage503.js +++ b/scripts/portal/party6_stage503.js @@ -1,5 +1,5 @@ function enter(pi) { - if (java.lang.Math.random() < 0.1) { + if (Math.random() < 0.1) { pi.playPortalSound(); pi.warp(930000300,"16st"); } else { pi.playPortalSound(); pi.warp(930000300, "04st"); diff --git a/scripts/portal/party6_stage504.js b/scripts/portal/party6_stage504.js index 4ec4244a85..94b7f6d513 100644 --- a/scripts/portal/party6_stage504.js +++ b/scripts/portal/party6_stage504.js @@ -1,5 +1,5 @@ function enter(pi) { - if (java.lang.Math.random() < 0.1) { + if (Math.random() < 0.1) { pi.playPortalSound(); pi.warp(930000300,"16st"); } else { pi.playPortalSound(); pi.warp(930000300, "05st"); diff --git a/scripts/portal/party6_stage505.js b/scripts/portal/party6_stage505.js index afdd71b343..5ae1c318da 100644 --- a/scripts/portal/party6_stage505.js +++ b/scripts/portal/party6_stage505.js @@ -1,5 +1,5 @@ function enter(pi) { - if (java.lang.Math.random() < 0.1) { + if (Math.random() < 0.1) { pi.playPortalSound(); pi.warp(930000300,"16st"); } else { pi.playPortalSound(); pi.warp(930000300, "06st"); diff --git a/scripts/portal/party6_stage506.js b/scripts/portal/party6_stage506.js index 7b57c7125f..1078adff06 100644 --- a/scripts/portal/party6_stage506.js +++ b/scripts/portal/party6_stage506.js @@ -1,5 +1,5 @@ function enter(pi) { - if (java.lang.Math.random() < 0.1) { + if (Math.random() < 0.1) { pi.playPortalSound(); pi.warp(930000300,"16st"); } else { pi.playPortalSound(); pi.warp(930000300, "07st"); diff --git a/scripts/portal/party6_stage507.js b/scripts/portal/party6_stage507.js index 44e43aeb1e..e8f41aa0ac 100644 --- a/scripts/portal/party6_stage507.js +++ b/scripts/portal/party6_stage507.js @@ -1,5 +1,5 @@ function enter(pi) { - if (java.lang.Math.random() < 0.1) { + if (Math.random() < 0.1) { pi.playPortalSound(); pi.warp(930000300,"16st"); } else { pi.playPortalSound(); pi.warp(930000300, "08st"); diff --git a/scripts/portal/party6_stage508.js b/scripts/portal/party6_stage508.js index 5f930d209f..acade52b73 100644 --- a/scripts/portal/party6_stage508.js +++ b/scripts/portal/party6_stage508.js @@ -1,5 +1,5 @@ function enter(pi) { - if (java.lang.Math.random() < 0.1) { + if (Math.random() < 0.1) { pi.playPortalSound(); pi.warp(930000300,"16st"); } else { pi.playPortalSound(); pi.warp(930000300, "09st"); diff --git a/scripts/portal/party6_stage509.js b/scripts/portal/party6_stage509.js index 886fcf046e..57c8694fcb 100644 --- a/scripts/portal/party6_stage509.js +++ b/scripts/portal/party6_stage509.js @@ -1,5 +1,5 @@ function enter(pi) { - if (java.lang.Math.random() < 0.1) { + if (Math.random() < 0.1) { pi.playPortalSound(); pi.warp(930000300,"16st"); } else { pi.playPortalSound(); pi.warp(930000300, "10st"); diff --git a/scripts/portal/party6_stage510.js b/scripts/portal/party6_stage510.js index 777fc0ded7..6632bbd4d1 100644 --- a/scripts/portal/party6_stage510.js +++ b/scripts/portal/party6_stage510.js @@ -1,5 +1,5 @@ function enter(pi) { - if (java.lang.Math.random() < 0.1) { + if (Math.random() < 0.1) { pi.playPortalSound(); pi.warp(930000300,"16st"); } else { pi.playPortalSound(); pi.warp(930000300, "11st"); diff --git a/scripts/portal/party6_stage511.js b/scripts/portal/party6_stage511.js index 253bd5100b..93c7f56cfb 100644 --- a/scripts/portal/party6_stage511.js +++ b/scripts/portal/party6_stage511.js @@ -1,5 +1,5 @@ function enter(pi) { - if (java.lang.Math.random() < 0.1) { + if (Math.random() < 0.1) { pi.playPortalSound(); pi.warp(930000300,"16st"); } else { pi.playPortalSound(); pi.warp(930000300, "12st"); diff --git a/scripts/portal/party6_stage512.js b/scripts/portal/party6_stage512.js index cef1f8877f..8c91b29407 100644 --- a/scripts/portal/party6_stage512.js +++ b/scripts/portal/party6_stage512.js @@ -1,5 +1,5 @@ function enter(pi) { - if (java.lang.Math.random() < 0.1) { + if (Math.random() < 0.1) { pi.playPortalSound(); pi.warp(930000300,"16st"); } else { pi.playPortalSound(); pi.warp(930000300, "13st"); diff --git a/scripts/portal/party6_stage513.js b/scripts/portal/party6_stage513.js index 15828f2585..a27b6cb44e 100644 --- a/scripts/portal/party6_stage513.js +++ b/scripts/portal/party6_stage513.js @@ -1,5 +1,5 @@ function enter(pi) { - if (java.lang.Math.random() < 0.1) { + if (Math.random() < 0.1) { pi.playPortalSound(); pi.warp(930000300,"16st"); } else { pi.playPortalSound(); pi.warp(930000300, "14st"); diff --git a/scripts/portal/party6_stage514.js b/scripts/portal/party6_stage514.js index a2c4ffa187..903971ec18 100644 --- a/scripts/portal/party6_stage514.js +++ b/scripts/portal/party6_stage514.js @@ -1,5 +1,5 @@ function enter(pi) { - if (java.lang.Math.random() < 0.1) { + if (Math.random() < 0.1) { pi.playPortalSound(); pi.warp(930000300,"16st"); } else { pi.playPortalSound(); pi.warp(930000300, "15st"); diff --git a/scripts/portal/party6_stage515.js b/scripts/portal/party6_stage515.js index 221db8bc2e..4c3f689ad4 100644 --- a/scripts/portal/party6_stage515.js +++ b/scripts/portal/party6_stage515.js @@ -1,5 +1,5 @@ function enter(pi) { - if (java.lang.Math.random() < 0.1) { + if (Math.random() < 0.1) { pi.playPortalSound(); pi.warp(930000300,"16st"); } else { pi.playPortalSound(); pi.warp(930000300, "01st"); diff --git a/sql/db_database.sql b/sql/db_database.sql index c0cb3037d1..868307b067 100644 --- a/sql/db_database.sql +++ b/sql/db_database.sql @@ -16473,14 +16473,13 @@ CREATE TABLE IF NOT EXISTS `pets` ( PRIMARY KEY (`petid`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; -ALTER TABLE `inventoryitems` ADD CONSTRAINT `fk_itempetid` FOREIGN KEY (`petid`) REFERENCES `pets` (`petid`) ON DELETE SET NULL ; # thanks Optimist for noticing queries over petid taking too long, shavit for pointing out an improvement using foreign key CREATE TABLE IF NOT EXISTS `petignores` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `petid` int(11) unsigned NOT NULL , `itemid` int(10) unsigned NOT NULL , PRIMARY KEY (`id`), - CONSTRAINT `fk_petignorepetid` FOREIGN KEY (`petid`) REFERENCES `pets` (`petid`) ON DELETE CASCADE + CONSTRAINT `fk_petignorepetid` FOREIGN KEY (`petid`) REFERENCES `pets` (`petid`) ON DELETE CASCADE # thanks Optimist for noticing queries over petid taking too long, shavit for pointing out an improvement using foreign key ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `playerdiseases` ( diff --git a/src/client/MapleClient.java b/src/client/MapleClient.java index 792e3da9ac..84ed707219 100644 --- a/src/client/MapleClient.java +++ b/src/client/MapleClient.java @@ -1233,7 +1233,7 @@ public class MapleClient { } public void checkChar(int accid) { /// issue with multiple chars from same account login found by shavit, resinate - if (true) { + if (!YamlConfig.config.server.USE_CHARACTER_ACCOUNT_CHECK) { return; } diff --git a/src/config/ServerConfig.java b/src/config/ServerConfig.java index b8b0a59dfa..9ad310a292 100644 --- a/src/config/ServerConfig.java +++ b/src/config/ServerConfig.java @@ -58,6 +58,7 @@ public class ServerConfig { public boolean USE_DEBUG_SHOW_PACKET; public boolean USE_SUPPLY_RATE_COUPONS; public boolean USE_IP_VALIDATION; + public boolean USE_CHARACTER_ACCOUNT_CHECK; public boolean USE_MAXRANGE; public boolean USE_MAXRANGE_ECHO_OF_HERO; diff --git a/src/net/MapleServerHandler.java b/src/net/MapleServerHandler.java index 6e8aad2b22..e66377b9fd 100644 --- a/src/net/MapleServerHandler.java +++ b/src/net/MapleServerHandler.java @@ -28,7 +28,6 @@ import java.util.HashSet; import java.util.Calendar; import java.util.concurrent.atomic.AtomicLong; -import config.ServerConfig; import config.YamlConfig; import org.apache.mina.core.service.IoHandlerAdapter; import org.apache.mina.core.session.IdleStatus; From 6d57eb1033aeeed02605eb4cb930b8fc3b15f692 Mon Sep 17 00:00:00 2001 From: ronancpl Date: Thu, 14 Nov 2019 00:49:15 -0300 Subject: [PATCH 37/37] After-quest messages & MCPQ patch + Scroll Generator Fixed an issue within Restore Lost Item functionality. New custom NPC: scroll generator. Trades a scroll for bundles of common miscellaneous items. Revised several lock-acquiring flow scenarios. Fixed pet autopot taking out "negative" amounts from inventory. Added zombify and confuse diseases dispellable by all-cure potions. Patched after-quest messages sometimes allowing player movement, that shouldn't be available until the message box is closed. Reviewed multiclient component, now also evaluating passed HWID alongside remote IP. Fixed missing info about questlines on skillbook announcer NPC after recent updates. Fixed some Aran skills not applying MP consume properly. Cleared a few issues within MCPQ collectable solo/party items and skills. Improved response time on scroll generator by adding a cache for scroll requirements. --- config.yaml | 6 +- docs/mychanges_ptbr.txt | 37 +- scripts/npc/1072008.js | 72 ++-- scripts/npc/2042000.js | 2 +- scripts/npc/9977777.js | 1 + scripts/npc/mapleTV.js | 6 + scripts/npc/scroll_generator.js | 408 ++++++++++++++++++ sql/db_database.sql | 4 +- sql/db_drops.sql | 2 +- src/client/MapleCharacter.java | 88 ++-- src/client/MapleClient.java | 24 +- src/client/MonsterBook.java | 30 +- .../commands/gm6/WarpWorldCommand.java | 1 - .../MapleInventoryManipulator.java | 42 +- .../processor/action/PetAutopotProcessor.java | 34 +- .../processor/stat/AssignAPProcessor.java | 9 +- .../processor/stat/AssignSPProcessor.java | 9 +- src/config/ServerConfig.java | 2 +- src/constants/game/GameConstants.java | 12 - src/constants/inventory/ItemConstants.java | 4 +- src/net/MapleServerHandler.java | 8 +- src/net/mina/MaplePacketDecoder.java | 1 - src/net/server/Server.java | 23 +- src/net/server/channel/Channel.java | 2 +- .../handlers/AbstractDealDamageHandler.java | 7 +- .../channel/handlers/CancelChairHandler.java | 8 +- .../handlers/CashOperationHandler.java | 1 - .../channel/handlers/ChangeMapHandler.java | 1 - .../handlers/PlayerLoggedinHandler.java | 45 +- .../channel/handlers/SpecialMoveHandler.java | 1 - .../channel/handlers/UseCashItemHandler.java | 4 +- .../channel/handlers/UseChairHandler.java | 8 +- .../channel/handlers/UseItemHandler.java | 2 +- .../channel/handlers/UseMountFoodHandler.java | 1 - .../channel/handlers/WeddingHandler.java | 13 +- .../MapleMatchCheckerCoordinator.java | 63 +-- .../session/MapleSessionCoordinator.java | 29 +- .../handlers/login/CharSelectedHandler.java | 3 +- .../login/CharSelectedWithPicHandler.java | 3 +- .../handlers/login/RegisterPicHandler.java | 3 +- .../login/ViewAllCharRegisterPicHandler.java | 3 +- .../login/ViewAllCharSelectedHandler.java | 3 +- .../ViewAllCharSelectedWithPicHandler.java | 3 +- src/net/server/world/MapleParty.java | 8 +- src/scripting/npc/NPCConversationManager.java | 55 ++- src/server/MapleItemInformationProvider.java | 18 +- src/server/MapleMarriage.java | 55 +-- .../MapleSkillbookInformationProvider.java | 19 +- src/server/MapleStatEffect.java | 16 +- src/server/maps/MapleMap.java | 30 +- src/server/maps/MapleMapFactory.java | 4 +- src/server/maps/MapleReactor.java | 10 + .../partyquest/MapleCarnivalFactory.java | 2 +- src/server/quest/MapleQuest.java | 20 +- src/server/quest/actions/FameAction.java | 2 - src/server/quest/actions/ItemAction.java | 1 - .../quest/actions/MapleQuestAction.java | 1 - wz/Quest.wz/Check.img.xml | 2 - wz/Skill.wz/MobSkill.img.xml | 12 +- 59 files changed, 894 insertions(+), 389 deletions(-) create mode 100644 scripts/npc/scroll_generator.js diff --git a/config.yaml b/config.yaml index 1f41bb8dff..35125c96f4 100644 --- a/config.yaml +++ b/config.yaml @@ -239,7 +239,7 @@ server: USE_SERVER_AUTOASSIGNER: true #HeavenMS-builtin autoassigner, uses algorithm based on distributing AP accordingly with required secondary stat on equipments. USE_REFRESH_RANK_MOVE: true USE_ENFORCE_ADMIN_ACCOUNT: false #Forces accounts having GM characters to be treated as a "GM account" by the client (localhost). Some of the GM account perks is the ability to FLY, but unable to TRADE. - USE_ENFORCE_NOVICE_EXPRATE: false #Hardsets experience rate 1x for beginners level 10 or under. Ideal for roaming on novice areas without caring too much about losing some stats. + USE_ENFORCE_NOVICE_EXPRATE: true #Hardsets experience rate 1x for beginners level 10 or under. Ideal for roaming on novice areas without caring too much about losing some stats. USE_ENFORCE_HPMP_SWAP: false #Forces players to reuse stats (via AP Resetting) located on HP/MP pool only inside the HP/MP stats. USE_ENFORCE_MOB_LEVEL_RANGE: true #Players N levels below the killed mob will gain no experience from defeating it. USE_ENFORCE_JOB_LEVEL_RANGE: false #Caps the player level on the minimum required to advance their current jobs. @@ -343,7 +343,7 @@ server: USE_ENHANCED_CHSCROLL: true #Equips even more powerful with chaos upgrade. USE_ENHANCED_CRAFTING: true #Apply chaos scroll on every equip crafted. USE_ENHANCED_CLNSLATE: true #Clean slates can be applied to recover successfully used slots as well. - SCROLL_CHANCE_RATE: 10 #Number of rolls for success on a scroll, set 1 for default. + SCROLL_CHANCE_ROLLS: 10 #Number of rolls for success on a scroll, set 1 for default. CHSCROLL_STAT_RATE: 3 #Number of rolls of stat upgrade on a successfully applied chaos scroll, set 1 for default. CHSCROLL_STAT_RANGE: 6 #Stat upgrade range (-N, N) on chaos scrolls. @@ -414,7 +414,7 @@ server: #Pet Auto-Pot Configuration USE_COMPULSORY_AUTOPOT: true #Pets will consume as many potions as needed to fulfill the AUTOHP/MP ratio threshold. USE_EQUIPS_ON_AUTOPOT: true #Player MaxHP and MaxMP check values on autopot handler will be updated by the HP/MP bonuses on equipped items. - PET_AUTOHP_RATIO: 0.99 #Will automatically consume potions until given ratio of the MaxHP/MaxMP is reached. + PET_AUTOHP_RATIO: 0.99 #Will automatically consume potions until given ratio of the MaxHP/MaxMP is reached. PET_AUTOMP_RATIO: 0.99 #Pet & Mount Configuration diff --git a/docs/mychanges_ptbr.txt b/docs/mychanges_ptbr.txt index d0663f13ab..39c603514e 100644 --- a/docs/mychanges_ptbr.txt +++ b/docs/mychanges_ptbr.txt @@ -2237,4 +2237,39 @@ Adicionado utilização de dispose em quest scripts para o comando homônimo. 30 Outubro 2019, Corrigido bug em scripts (que possivelmente passou a ocorrer ao utilizar Java8) relacionado ao tentar utilizar métodos da biblioteca Math sem corresponder parâmetros com a assinatura adequada. -Corrigido entrega de itemid inesperado em script relacionado a EllinPQ. \ No newline at end of file +Corrigido entrega de itemid inesperado em script relacionado a EllinPQ. + +01 - 03 Novembro 2019, +Corrigido deslize recente em na funcionalidade de recuperação de itens de quest. +Adicionado custom npc para MapleTVs: geradora de scrolls, provê os mesmos após trocar diversos itens ganhos durante jogo. + +04 Novembro 2019, +Revisado diversos fluxos de aquisição de locks ao longo das classes mais relevantes do código-fonte. +Corrigido problema inesperado com funcionalidade restoreLostItem. +Inserido remoção de cash item para dentro da cláusula que checa item no inventário. +Corrigido bug em pet autopot retirando quantidades negativas do inventário. +Corrigido caso de deadlock em tentativa de aquisição de lock inesperada após adquirir os de mapas, que deveriam ter prioridade baixa. + +07 Novembro 2019, +Adicionado cura de debuffs zumbificação e confusão na lista de debuffs a serem curados pela poção "cura-tudo". +Corrigido duplicação em mensagem de pós-quest enviada, em casos onde há a presença de ação que automatiza mensagem guiando jogador para a próxima quest. + +09 - 10 Novembro 2019, +Refatorado certos usos de finalização não-sucedida de quests, que poderiam compartilhar das mecânicas de desistência de quest. +Revisado aquisição de endereço remoto para checagem de transição de jogadores e multi-cliente, agora também avaliando distinção de HWID passado. +Corrigido pós-quests ainda permitindo jogadores a movimentarem enquanto a mensagem está na tela, devido a certo conflito com envio de recompensas permitindo movimentação do jogador. +Corrigido informação de skillbooks por quests não-funcional após refatoração recente. +Corrigido chance de drop de item de quest em El Nath extremamente baixa. + +11 - 12 Novembro 2019, +Corrigido algumas skills de ataque de Aran (double, triple swing) não aplicando consumo de MP devidamente. +Revisado caso com doors levando jogadores a solo abaixo inesperadamente. +Corrigido pots em MCPQ não atuando devidamente para outros jogadores no grupo ou somente para si. +Corrigido buffs random em MCPQ acertando sempre múltiplos jogadores. +Corrigido poção "cura-tudo" em MCPQ: pots pequenos curando todos os jogadores de party, pots grandes não curando slow. +Corrigido caso inesperado em 2nd job de pirata bloqueando saída de jogadores do mapa enquanto não lidarem com todos os mobs. + +13 Novembro 2019, +Corrigido problema no sistema de matching ao tentar rodar ações externas enquanto travando os recursos do sistema, ao criar match. +Corrigido caso onde novos jogadores poderiam ser agregados à party e entrar em campo na MCPQ assim que confirmação de partida e contagem de início fossem efetivados. +Adicionado cache para requerimento de scrolls, assim melhorando tempo de resposta para o novo custom NPC de geração de scrolls. \ No newline at end of file diff --git a/scripts/npc/1072008.js b/scripts/npc/1072008.js index 78226f09d1..03a5973b8a 100644 --- a/scripts/npc/1072008.js +++ b/scripts/npc/1072008.js @@ -5,36 +5,52 @@ **/ var status; - + function start() { status = -1; - action(1,0,0); + action(1, 0, 0); } -function action(mode,type,selection) { - if (status == -1) { - if (cm.getMapId() == 108000502) { - if (!(cm.haveItem(4031856,15))) { - cm.sendNext("Go, and get me 15 #b#t4031856##k."); - cm.dispose(); - } else { - status = 2; - cm.sendNext("Wow, you have brought me 15 #b#t4031856##k! Congratulations. Let me warp you out now."); - } - } else if (cm.getMapId() == 108000501) { - if (!(cm.haveItem(4031857,15))) { - cm.sendNext("Go, and get me 15 #b#t4031857##k."); - cm.dispose(); - } else { - status = 2; - cm.sendNext("Wow, you have brought me 15 #b#t4031857##k! Congratulations. Let me warp you out now."); - } - } else { - cm.sendNext("Error. Please report this."); - cm.dispose(); - } - } else if (status == 2) { - cm.warp(120000101,0); - cm.dispose(); +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && type > 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + + if(status == 0) { + if (cm.getMapId() == 108000502) { + if (!(cm.haveItem(4031856,15))) { + cm.sendSimple("You haven't brought me all the crystals yet. I'm looking forward for your progress, mate! \r\n#b#L1#I would like to leave#l"); + } else { + status++; + cm.sendNext("Wow, you have brought me 15 #b#t4031856##k! Congratulations. Let me warp you out now."); + } + } else if (cm.getMapId() == 108000501) { + if (!(cm.haveItem(4031857,15))) { + cm.sendSimple("You haven't brought me all the crystals yet. I'm looking forward for your progress, mate! \r\n#b#L1#I would like to leave#l"); + } else { + status++; + cm.sendNext("Wow, you have brought me 15 #b#t4031857##k! Congratulations. Let me warp you out now."); + } + } else { + cm.sendNext("Error. Please report this."); + cm.dispose(); + } + } else if (status == 1) { // thanks Lame for noticing players getting stuck in area in certain scenarios + cm.removeAll(4031856); + cm.removeAll(4031857); + cm.warp(120000101,0); + cm.dispose(); + } else if (status == 2) { + cm.warp(120000101,0); + cm.dispose(); + } } -} \ No newline at end of file +} diff --git a/scripts/npc/2042000.js b/scripts/npc/2042000.js index 8d2e7c27bd..cd84aeec75 100644 --- a/scripts/npc/2042000.js +++ b/scripts/npc/2042000.js @@ -437,7 +437,7 @@ function action(mode, type, selection) { cm.sendNext("Oh, and do not worry about turning into a ghost. In the Monster Carnival, #byou will not lose EXP after death#k. So it's really an experience like no other!"); cm.dispose(); } else if (select == 2) { - cm.sendNext("#bProtetor#k basically an invoked item that drastically increases the abilities of the monsters invoked by your group. Protector works until it is demolished by the opposing group, so I'm hoping you'll summon several monsters first, and then bring the Protector."); + cm.sendNext("#bProtector#k is basically an invoked item that drastically increases the abilities of the monsters invoked by your group. Protector works until it is demolished by the opposing group, so I'm hoping you'll summon several monsters first, and then bring the Protector."); } } else if (status == 66) { cm.sendNext("Lastly, while in the Monster Carnival, #byou can not use items / recovery potions that you carry around with you. #kMeanwhile, the monsters let these items fall for good. when, and when you #bget them, the item will immediately activate#k. That's why it's important to know when to get these items."); diff --git a/scripts/npc/9977777.js b/scripts/npc/9977777.js index 9ac781cf1d..e5d2adfb4c 100644 --- a/scripts/npc/9977777.js +++ b/scripts/npc/9977777.js @@ -253,6 +253,7 @@ function writeFeatureTab_CustomNPCs() { addFeature("Dalair: automatized equipment-merger."); addFeature("Donation Box: automatized item-buyer."); addFeature("Coco & Ace of Hearts: C. scroll crafters."); + addFeature("Barry (MapleTV): fill book & exchange items for scroll."); } function writeFeatureTab_Localhostedits() { diff --git a/scripts/npc/mapleTV.js b/scripts/npc/mapleTV.js index 59092f758a..db14d5adab 100644 --- a/scripts/npc/mapleTV.js +++ b/scripts/npc/mapleTV.js @@ -24,6 +24,12 @@ var status; function start() { + if (Packages.config.YamlConfig.config.server.USE_ENABLE_CUSTOM_NPC_SCRIPT) { + cm.dispose(); + cm.openNpc(9201088, "scroll_generator"); + return; + } + status = -1; action(1, 0, 0); } diff --git a/scripts/npc/scroll_generator.js b/scripts/npc/scroll_generator.js new file mode 100644 index 0000000000..b3b3f038c7 --- /dev/null +++ b/scripts/npc/scroll_generator.js @@ -0,0 +1,408 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2019 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* NPC: MapleTV / Larry + + Exchanger NPC: + * Scroll generator + * + * @author Ronan Lana +*/ + +importPackage(Packages.client); +importPackage(Packages.config); +importPackage(Packages.constants.game); +importPackage(Packages.server); +importPackage(Packages.server.life); + +var status; + +var jobWeaponRestricted = [[[2043000, 2043100, 2044000, 2044100, 2043200, 2044200]], [[2043000, 2043100, 2044000, 2044100], [2043000, 2043200, 2044000, 2044200], [2044300, 2044400]], [[2043700, 2043800], [2043700, 2043800], [2043700, 2043800]], [[2044500], [2044600]], [[2044700], [2043300]], [[2044800], [2044900]]]; +var aranWeaponRestricted = [jobWeaponRestricted[1][2][1]]; + +var tier1Scrolls = []; +var tier2Scrolls = [2040000, 2040400, 2040500, 2040600, 2040700, 2040800, 2040900]; +var tier3Scrolls = [2048000, 2049200, 2041000, 2041100, 2041300, 2040100, 2040200, 2040300]; + +var typeTierScrolls = [["PAD", "MAD"], ["STR", "DEX", "INT", "LUK", "ACC", "EVA", "Speed", "Jump"], ["PDD", "MDD", "MHP", "MMP"]]; + +var sgItems = [4003004, 4003005, 4001006, 4006000, 4006001, 4030012]; +var sgToBucket = [100, 50, 37.5, 37.5, 37.5, 200]; +var mesoToBucket = 2800000; + +var sgAppliedItems = [0, 0, 0, 0, 0, 0]; +var sgAppliedMeso = 0; + +var sgBuckets = 0.0; +var sgBookBuckets = 0.0; +var sgItemBuckets = 0.0; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && type > 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + + if(status == 0) { + cm.sendNext("This is the MapleTV Scroll Generator broadcast. Place your supplies or mesos earned throughout your adventure to redeem a prize! You can place #bany amount of supplies#k, however take note that placing #rdifferent supplies#k with #rbigger shots of any of them#k will improve the reward possibilities!"); + } else if(status == 1) { + var sendStr; + + //print("Book: " + sgBookBuckets + " Item: " + sgItemBuckets); + + if(sgItemBuckets > 0.0) sendStr = "With the items you have currently placed, you have #r" + sgBuckets + "#k buckets (#r" + (sgItemBuckets < 1.0 ? sgItemBuckets.toFixed(2) : Math.floor(sgItemBuckets)) + "#k supply buckets) for claiming a prize. Place supplies:"; + else sendStr = "You have placed no supplies yet. Place supplies:"; + + var listStr = ""; + var i; + for(i = 0; i < sgItems.length; i++) { + listStr += "#b#L" + i + "##t" + sgItems[i] + "##k"; + if(sgAppliedItems[i] > 0) listStr += " - " + sgAppliedItems[i]; + listStr += "#l\r\n"; + } + + listStr += "#b#L" + i + "#Mesos#k"; + if(sgAppliedMeso > 0) listStr += " - " + sgAppliedMeso; + listStr += "#l\r\n"; + + cm.sendSimple(sendStr + "\r\n\r\n" + listStr + "#r#L" + (sgItems.length + 2) + "#Retrieve a prize!#l#k\r\n"); + } else if(status == 2) { + if(selection == (sgItems.length + 2)) { + if(sgItemBuckets < 1.0) { + cm.sendPrev("You have set not enough supplies. Insert at least one bucket of #bsupplies#k to claim a prize."); + } else { + generateRandomScroll(); + cm.dispose(); + } + } else { + var tickSel; + if(selection < sgItems.length) { + tickSel = "of #b#t" + sgItems[selection] + "##k"; + curItemQty = cm.getItemQuantity(sgItems[selection]); + } else { + tickSel = "#bmesos#k"; + curItemQty = cm.getMeso(); + } + + curItemSel = selection; + if(curItemQty > 0) { + cm.sendGetText("How many " + tickSel + " do you want to provide? (#r" + curItemQty + "#k available)#k"); + } else { + cm.sendPrev("You have got #rnone#k " + tickSel + " to provide for Scroll Generation. Click '#rBack#k' to return to the main interface."); + } + } + } else if(status == 3) { + var text = cm.getText(); + + try { + var placedQty = parseInt(text); + if(isNaN(placedQty) || placedQty < 0) throw true; + + if(placedQty > curItemQty) { + cm.sendPrev("You cannot insert the given amount of #r" + (curItemSel < sgItems.length ? "#t" + sgItems[curItemSel] + "#" : "mesos") + "#k (#r" + curItemQty + "#k available). Click '#rBack#k' to return to the main interface."); + } else { + if(curItemSel < sgItems.length) sgApplyItem(curItemSel, placedQty); + else sgApplyMeso(placedQty); + + cm.sendPrev("Operation succeeded. Click '#rBack#k' to return to the main interface."); + } + } catch(err) { + cm.sendPrev("You must enter a positive number of supplies to insert. Click '#rBack#k' to return to the main interface."); + } + + status = 2; + } else { + cm.dispose(); + } + } +} + +function getJobTierScrolls() { + var scrolls = []; + + var job = cm.getPlayer().getJob(); + var jobScrolls = jobWeaponRestricted[Math.floor(cm.getPlayer().getJobStyle().getId() / 100)]; + + var jobBranch = GameConstants.getJobBranch(job); + if (jobBranch >= 2) { + Array.prototype.push.apply(scrolls, jobScrolls[Math.floor((job.getId() / 10) % 10) - 1]); + } else { + for (var i = 0; i < jobScrolls.length; i++) { + Array.prototype.push.apply(scrolls, jobScrolls[i]); + } + } + + return scrolls; +} + +function getScrollTypePool(rewardTier) { + var scrolls = []; + switch (rewardTier) { + case 1: + if (cm.getPlayer().isAran()) { + Array.prototype.push.apply(scrolls, aranWeaponRestricted); + } else { + Array.prototype.push.apply(scrolls, getJobTierScrolls()); + } + + Array.prototype.push.apply(scrolls, tier1Scrolls); + break; + case 2: + Array.prototype.push.apply(scrolls, tier2Scrolls); + break; + default: + Array.prototype.push.apply(scrolls, tier3Scrolls); + } + + return scrolls; +} + +function getScrollTier(scrollStats) { + for (var i = 0; i < typeTierScrolls.length; i++) { + for (var j = 0; j < typeTierScrolls[i].length; j++) { + if (scrollStats.get(typeTierScrolls[i][j]) > 0) { + return i + 1; + } + } + } + + return 4; +} + +function getScrollSuccessTier(scrollStats) { + var prop = scrollStats.get("success"); + + if (prop > 90) { + return 3; + } else if (prop < 50) { + return YamlConfig.config.server.SCROLL_CHANCE_ROLLS > 2 ? 2 : 1; + } else { + return YamlConfig.config.server.SCROLL_CHANCE_ROLLS > 2 ? 1 : 2; + } +} + +function getAvailableScrollsPool(baseScrolls, rewardTier, successTier) { + var scrolls = []; + var ii = MapleItemInformationProvider.getInstance(); + + for (var i = 0; i < baseScrolls.length; i++) { + for (var j = 0; j < 100; j++) { + var scrollid = baseScrolls[i] + j; + var scrollStats = ii.getEquipStats(scrollid); + if (scrollStats != null && ii.getScrollReqs(scrollid).isEmpty()) { + var scrollTier = getScrollTier(scrollStats); + if (scrollTier == rewardTier && successTier == getScrollSuccessTier(scrollStats)) { + scrolls.push(scrollid); + } + } + } + } + + return scrolls; +} + +// passive tier buckets... + +function getLevelTier(level) { + return Math.floor((level - 1) / 15) + 1; +} + +function getPlayerCardTierPower() { + var cardset = cm.getPlayer().getMonsterBook().getCardSet(); + var countTier = [0, 0, 0, 0, 0, 0, 0, 0, 0]; + + for (var iterator = cardset.iterator(); iterator.hasNext();) { + var ce = iterator.next(); + + var cardid = ce.getKey(); + var ceTier = Math.floor(cardid / 1000) % 10; + countTier[ceTier] += ce.getValue(); + + if (ceTier >= 8) { // is special card + var mobLevel = MapleLifeFactory.getMonsterLevel(MapleItemInformationProvider.getInstance().getCardMobId(cardid)); + var mobTier = getLevelTier(mobLevel) - 1; + + countTier[mobTier] += (ce.getValue() * 1.2); + } + } + + return countTier; +} + +function calculateMobBookTierBuckets(tierSize, playerCards, tier) { + if (tier < 1) { + return 0.0; + } + + tier--; // started at 1 + var tierHitRate = playerCards[tier] / (tierSize[tier] * 5); + if (tierHitRate > 0.5) { + tierHitRate = 0.5; + } + + return tierHitRate * 4; +} + +function calculateMobBookBuckets() { + var book = cm.getPlayer().getMonsterBook(); + var bookLevelMult = 0.9 + (0.1 * book.getBookLevel()); + + var playerLevelTier = getLevelTier(cm.getPlayer().getLevel()); + if (playerLevelTier > 8) { + playerLevelTier = 8; + } + + var tierSize = MonsterBook.getCardTierSize(); + var playerCards = getPlayerCardTierPower(); + + var prevBuckets = calculateMobBookTierBuckets(tierSize, playerCards, playerLevelTier - 1); + var currBuckets = calculateMobBookTierBuckets(tierSize, playerCards, playerLevelTier); + + return (prevBuckets + currBuckets) * bookLevelMult; +} + +function recalcBuckets() { + sgBookBuckets = calculateMobBookBuckets(); + sgItemBuckets = calculateSuppliesBuckets(); + + var buckets = sgBookBuckets + sgItemBuckets; + if (buckets > 6.0) { + sgBuckets = 6; + } else { + sgBuckets = Math.floor(buckets); + } +} + +// variable buckets... + +function sgApplyItem(idx, amount) { + if (sgAppliedItems[idx] != amount) { + sgAppliedItems[idx] = amount; + recalcBuckets(); + } +} + +function sgApplyMeso(amount) { + if (sgAppliedMeso != amount) { + sgAppliedMeso = amount; + recalcBuckets(); + } +} + +function calculateSuppliesBuckets() { + var suppliesHitRate = 0.0; + for (var i = 0; i < sgItems.length; i++) { + suppliesHitRate += sgAppliedItems[i] / sgToBucket[i]; + } + suppliesHitRate *= 2; + + suppliesHitRate += (sgAppliedMeso / mesoToBucket); + return suppliesHitRate; +} + +function calculateScrollTiers() { + var buckets = sgBuckets; + var tiers = [0, 0, 0]; + while (buckets > 0) { + var pool = []; + for (var i = 0; i < tiers.length; i++) { + if (tiers[i] < 2) { + pool.push(i); + } + } + + var rnd = pool[Math.floor(Math.random() * pool.length)]; + + tiers[rnd]++; + buckets--; + } + + // normalize tiers + for (var i = 0; i < tiers.length; i++) { + tiers[i] = 3 - tiers[i]; + } + + return tiers; +} + +function getRandomScroll(tiers) { + var typeTier = tiers[0], subtypeTier = tiers[1], successTier = tiers[2]; + var scrollTypePool = getScrollTypePool(typeTier); + var scrollPool = getAvailableScrollsPool(scrollTypePool, subtypeTier, successTier); + + if (scrollPool.length > 0) { + return scrollPool[Math.floor(Math.random() * scrollPool.length)]; + } else { + return -1; + } +} + +function performExchange(sgItemid, sgCount) { + if (cm.getMeso() < sgAppliedMeso) { + return false; + } + + for (var i = 0; i < sgItems.length; i++) { + var itemid = sgItems[i]; + var count = sgAppliedItems[i]; + if (count > 0 && !cm.haveItem(itemid, count)) { + return false; + } + } + + cm.gainMeso(-sgAppliedMeso); + + for (var i = 0; i < sgItems.length; i++) { + var itemid = sgItems[i]; + var count = sgAppliedItems[i]; + cm.gainItem(itemid, -count); + } + + cm.gainItem(sgItemid, sgCount); + return true; +} + +function generateRandomScroll() { + if (cm.getPlayer().getInventory(Packages.client.inventory.MapleInventoryType.USE).getNumFreeSlot() >= 1) { + var itemid = getRandomScroll(calculateScrollTiers()); + if (itemid != -1) { + if (performExchange(itemid, 1)) { + cm.sendNext("Transaction accepted! You have received a #r#t" + itemid + "##k."); + } else { + cm.sendOk("Oh, it looks like some items are missing... Please double-check provided items in your inventory before trying to exchange."); + } + } else { + cm.sendOk("Sorry for the inconvenience, but it seems there are no scrolls on store right now... Try again later."); + } + } else { + cm.sendOk("Please look out for a slot available on your USE inventory before trying for a scroll."); + } +} diff --git a/sql/db_database.sql b/sql/db_database.sql index 868307b067..c25e795167 100644 --- a/sql/db_database.sql +++ b/sql/db_database.sql @@ -10439,7 +10439,7 @@ INSERT IGNORE INTO `temp_data` (`dropperid`, `itemid`, `minimum_quantity`, `maxi (3230104, 4031209, 1, 1, 3072, 500000), (3230306, 4031159, 1, 1, 2074, 500000), (9500400, 4031224, 1, 1, 3607, 1000000), -(9500400, 4031223, 1, 1, 3607, 1000000), +(9500400, 4031223, 1, 1, 3608, 1000000), # thanks Lame for noticing Hongbu's gourd unavailable (9420003, 4031400, 1, 1, 8761, 1000000), (9420001, 4031401, 1, 1, 8761, 1000000), (9300097, 4031472, 1, 1, 6301, 100000), @@ -14844,7 +14844,7 @@ INSERT IGNORE INTO `makerrecipedata` (`itemid`, `req_item`, `count`) VALUES (1372009, 4011002, 4), (1372009, 4260004, 28), (1382035, 4011002, 4), - (1382035, 4260004, 28), + (1382035, 4260005, 28), (1372010, 4011003, 4), (1372010, 4260005, 30), (1372032, 4011003, 5), diff --git a/sql/db_drops.sql b/sql/db_drops.sql index bb1ff0cb44..d17bc0adde 100644 --- a/sql/db_drops.sql +++ b/sql/db_drops.sql @@ -17932,7 +17932,7 @@ USE `heavenms`; (8220005, 1002382, 1, 1, 0, 40000), (8220005, 1482012, 1, 1, 0, 40000), (8800002, 4001083, 1, 1, 0, 7000), -(8800002, 4032133, 1, 1, 0, 10000), +(8800002, 4032133, 1, 1, 0, 420000), (8800002, 2000005, 1, 4, 0, 40000), (8800002, 2020015, 1, 4, 0, 3000), (8800002, 2000006, 1, 4, 0, 40000), diff --git a/src/client/MapleCharacter.java b/src/client/MapleCharacter.java index 7fe7e60fd7..406e9014ad 100644 --- a/src/client/MapleCharacter.java +++ b/src/client/MapleCharacter.java @@ -568,9 +568,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public void setSessionTransitionState() { - IoSession session = client.getSession(); - session.setAttribute(MapleClient.CLIENT_TRANSITION); - Server.getInstance().setCharacteridInTransition(session, this.getId()); + client.setCharacterOnSessionTransitionState(this.getId()); } public boolean getCS() { @@ -2803,6 +2801,8 @@ public class MapleCharacter extends AbstractMapleCharacterObject { dispelDebuff(MapleDisease.SEAL); dispelDebuff(MapleDisease.WEAKEN); dispelDebuff(MapleDisease.SLOW); + dispelDebuff(MapleDisease.ZOMBIFY); + dispelDebuff(MapleDisease.CONFUSE); } public void cancelAllDebuffs() { @@ -6792,20 +6792,16 @@ public class MapleCharacter extends AbstractMapleCharacterObject { MapleInventory cashInv = this.getInventory(MapleInventoryType.CASH); if (cashInv == null) return; - if (cpnLock.tryLock()) { - effLock.lock(); - chrLock.lock(); - cashInv.lockInventory(); - try { - revertCouponRates(); - setCouponRates(); - } finally { - cpnLock.unlock(); - - cashInv.unlockInventory(); - chrLock.unlock(); - effLock.unlock(); - } + effLock.lock(); + chrLock.lock(); + cashInv.lockInventory(); + try { + revertCouponRates(); + setCouponRates(); + } finally { + cashInv.unlockInventory(); + chrLock.unlock(); + effLock.unlock(); } } @@ -7509,7 +7505,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public void reloadQuestExpirations() { - for(MapleQuestStatus mqs: getQuests()) { + for(MapleQuestStatus mqs: getStartedQuests()) { if(mqs.getExpirationTime() > 0) { questTimeLimit2(mqs.getQuest(), mqs.getExpirationTime()); } @@ -7690,29 +7686,23 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } public void sitChair(int itemId) { - if (client.tryacquireClient()) { - try { - if (this.isLoggedinWorld()) { - if (itemId >= 1000000) { // sit on item chair - if (chair.get() < 0) { - setChair(itemId); - getMap().broadcastMessage(this, MaplePacketCreator.showChair(this.getId(), itemId), false); - } - announce(MaplePacketCreator.enableActions()); - } else if (itemId >= 0) { // sit on map chair - if (chair.get() < 0) { - setChair(itemId); - if (registerChairBuff()) { - getMap().broadcastMessage(this, MaplePacketCreator.giveForeignChairSkillEffect(this.getId()), false); - } - announce(MaplePacketCreator.cancelChair(itemId)); - } - } else { // stand up - unsitChairInternal(); - } + if (this.isLoggedinWorld()) { + if (itemId >= 1000000) { // sit on item chair + if (chair.get() < 0) { + setChair(itemId); + getMap().broadcastMessage(this, MaplePacketCreator.showChair(this.getId(), itemId), false); } - } finally { - client.releaseClient(); + announce(MaplePacketCreator.enableActions()); + } else if (itemId >= 0) { // sit on map chair + if (chair.get() < 0) { + setChair(itemId); + if (registerChairBuff()) { + getMap().broadcastMessage(this, MaplePacketCreator.giveForeignChairSkillEffect(this.getId()), false); + } + announce(MaplePacketCreator.cancelChair(itemId)); + } + } else { // stand up + unsitChairInternal(); } } } @@ -9974,9 +9964,9 @@ public class MapleCharacter extends AbstractMapleCharacterObject { awardQuestPoint(YamlConfig.config.server.QUEST_POINT_PER_QUEST_COMPLETE); } qs.setCompleted(qs.getCompleted() + 1); // count quest completed Jayd's idea - + announceUpdateQuest(DelayedQuestUpdate.COMPLETE, questid, qs.getCompletionTime()); - announceUpdateQuest(DelayedQuestUpdate.INFO, qs); + //announceUpdateQuest(DelayedQuestUpdate.INFO, qs); // happens after giving rewards, for non-next quests only } else if (qs.getStatus().equals(MapleQuestStatus.Status.NOT_STARTED)) { announceUpdateQuest(DelayedQuestUpdate.UPDATE, qs, false); if (qs.getInfoNumber() > 0) { @@ -9987,19 +9977,9 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } private void expireQuest(MapleQuest quest) { - MapleQuestStatus mqs = getQuest(quest); - if(mqs.getStatus().equals(MapleQuestStatus.Status.COMPLETED)) { - return; + if (quest.forfeit(this)) { + announce(MaplePacketCreator.questExpire(quest.getId())); } - - if(System.currentTimeMillis() < mqs.getExpirationTime()) { - return; - } - - announce(MaplePacketCreator.questExpire(quest.getId())); - MapleQuestStatus newStatus = new MapleQuestStatus(quest, MapleQuestStatus.Status.NOT_STARTED); - newStatus.setForfeited(mqs.getForfeited() + 1); - updateQuestStatus(newStatus); } public void cancelQuestExpirationTask() { diff --git a/src/client/MapleClient.java b/src/client/MapleClient.java index 84ed707219..aad0849b22 100644 --- a/src/client/MapleClient.java +++ b/src/client/MapleClient.java @@ -74,7 +74,6 @@ import scripting.quest.QuestScriptManager; import server.life.MapleMonster; import server.ThreadManager; import server.maps.*; -import server.quest.MapleQuest; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.factory.MonitoredReentrantLockFactory; @@ -997,14 +996,9 @@ public class MapleClient { family. } */ - for (MapleQuestStatus status : player.getStartedQuests()) { //This is for those quests that you have to stay logged in for a certain amount of time - MapleQuest quest = status.getQuest(); - if (quest.getTimeLimit() > 0) { - MapleQuestStatus newStatus = new MapleQuestStatus(quest, MapleQuestStatus.Status.NOT_STARTED); - newStatus.setForfeited(player.getQuest(quest).getForfeited() + 1); - player.updateQuestStatus(newStatus); - } - } + + player.forfeitExpirableQuests(); //This is for those quests that you have to stay logged in for a certain amount of time + if (guild != null) { final Server server = Server.getInstance(); server.setGuildMemberOnline(player, false, player.getClient().getChannel()); @@ -1059,7 +1053,8 @@ public class MapleClient { MapleSessionCoordinator.getInstance().closeSession(session, false); session.removeAttribute(MapleClient.CLIENT_KEY); } - if (!Server.getInstance().hasCharacteridInTransition(session)) { + + if (!Server.getInstance().hasCharacteridInTransition(this)) { updateLoginState(MapleClient.LOGIN_NOTLOGGEDIN); } @@ -1085,6 +1080,12 @@ public class MapleClient { this.send = null; //this.session = null; } + + public void setCharacterOnSessionTransitionState(int cid) { + this.updateLoginState(MapleClient.LOGIN_SERVER_TRANSITION); + session.setAttribute(MapleClient.CLIENT_TRANSITION); + Server.getInstance().setCharacteridInTransition(this, cid); + } public int getChannel() { return channel; @@ -1544,8 +1545,7 @@ public class MapleClient { player.saveCharToDB(); - player.getClient().updateLoginState(MapleClient.LOGIN_SERVER_TRANSITION); - player.setSessionTransitionState(); + player.setSessionTransitionState(); try { announce(MaplePacketCreator.getChannelChange(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]))); } catch (IOException e) { diff --git a/src/client/MonsterBook.java b/src/client/MonsterBook.java index 6190b45f26..235362d78f 100644 --- a/src/client/MonsterBook.java +++ b/src/client/MonsterBook.java @@ -29,6 +29,7 @@ import java.util.Collections; import java.util.LinkedHashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.HashSet; import java.util.Set; import java.util.concurrent.locks.Lock; import java.util.concurrent.Semaphore; @@ -46,10 +47,10 @@ public final class MonsterBook { private Map cards = new LinkedHashMap<>(); private Lock lock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.BOOK); - private Set> getCardSet() { + public Set> getCardSet() { lock.lock(); try { - return Collections.unmodifiableSet(cards.entrySet()); + return new HashSet<>(cards.entrySet()); } finally { lock.unlock(); } @@ -242,4 +243,29 @@ public final class MonsterBook { e.printStackTrace(); } } + + public static int[] getCardTierSize() { + try { + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("SELECT COUNT(*) FROM monstercarddata GROUP BY floor(cardid / 1000);"); + ResultSet rs = ps.executeQuery(); + + rs.last(); + int[] tierSizes = new int[rs.getRow()]; + rs.beforeFirst(); + + while (rs.next()) { + tierSizes[rs.getRow() - 1] = rs.getInt(1); + } + + rs.close(); + ps.close(); + con.close(); + + return tierSizes; + } catch (SQLException e) { + e.printStackTrace(); + return new int[0]; + } + } } diff --git a/src/client/command/commands/gm6/WarpWorldCommand.java b/src/client/command/commands/gm6/WarpWorldCommand.java index 00496f32eb..abd54a85c0 100644 --- a/src/client/command/commands/gm6/WarpWorldCommand.java +++ b/src/client/command/commands/gm6/WarpWorldCommand.java @@ -52,7 +52,6 @@ public class WarpWorldCommand extends Command { String[] socket = server.getInetSocket(worldb, c.getChannel()); c.getWorldServer().removePlayer(player); player.getMap().removePlayer(player);//LOL FORGOT THIS >< - c.updateLoginState(MapleClient.LOGIN_SERVER_TRANSITION); player.setSessionTransitionState(); player.setWorld(worldb); player.saveCharToDB();//To set the new world :O (true because else 2 player instances are created, one in both worlds) diff --git a/src/client/inventory/manipulator/MapleInventoryManipulator.java b/src/client/inventory/manipulator/MapleInventoryManipulator.java index ed3338d7da..68ce8d698b 100644 --- a/src/client/inventory/manipulator/MapleInventoryManipulator.java +++ b/src/client/inventory/manipulator/MapleInventoryManipulator.java @@ -72,21 +72,12 @@ public class MapleInventoryManipulator { MapleCharacter chr = c.getPlayer(); MapleInventoryType type = ItemConstants.getInventoryType(itemId); - if (c.tryacquireClient()) { - try { - MapleInventory inv = chr.getInventory(type); - inv.lockInventory(); - try { - return addByIdInternal(c, chr, type, inv, itemId, quantity, owner, petid, flag, expiration); - } finally { - inv.unlockInventory(); - } - } finally { - c.releaseClient(); - } - } else { - c.announce(MaplePacketCreator.enableActions()); - return false; + MapleInventory inv = chr.getInventory(type); + inv.lockInventory(); + try { + return addByIdInternal(c, chr, type, inv, itemId, quantity, owner, petid, flag, expiration); + } finally { + inv.unlockInventory(); } } @@ -187,21 +178,12 @@ public class MapleInventoryManipulator { MapleCharacter chr = c.getPlayer(); MapleInventoryType type = item.getInventoryType(); - if (c.tryacquireClient()) { - try { - MapleInventory inv = chr.getInventory(type); - inv.lockInventory(); - try { - return addFromDropInternal(c, chr, type, inv, item, show, petId); - } finally { - inv.unlockInventory(); - } - } finally { - c.releaseClient(); - } - } else { - c.announce(MaplePacketCreator.enableActions()); - return false; + MapleInventory inv = chr.getInventory(type); + inv.lockInventory(); + try { + return addFromDropInternal(c, chr, type, inv, item, show, petId); + } finally { + inv.unlockInventory(); } } diff --git a/src/client/processor/action/PetAutopotProcessor.java b/src/client/processor/action/PetAutopotProcessor.java index 367b16e57d..0bb2c79c30 100644 --- a/src/client/processor/action/PetAutopotProcessor.java +++ b/src/client/processor/action/PetAutopotProcessor.java @@ -88,6 +88,12 @@ public class PetAutopotProcessor { int useCount = 0, qtyCount = 0; MapleStatEffect stat = null; + + maxHp = chr.getCurrentMaxHp(); + maxMp = chr.getCurrentMaxMp(); + + curHp = chr.getHp(); + curMp = chr.getMp(); MapleInventory useInv = chr.getInventory(MapleInventoryType.USE); useInv.lockInventory(); @@ -112,13 +118,7 @@ public class PetAutopotProcessor { stat = MapleItemInformationProvider.getInstance().getItemEffect(toUse.getItemId()); hasHpGain = stat.getHp() > 0 || stat.getHpRate() > 0.0; hasMpGain = stat.getMp() > 0 || stat.getMpRate() > 0.0; - - maxHp = chr.getCurrentMaxHp(); - maxMp = chr.getCurrentMaxMp(); - - curHp = chr.getHp(); - curMp = chr.getMp(); - + incHp = stat.getHp(); if(incHp <= 0 && hasHpGain) incHp = Math.ceil(maxHp * stat.getHpRate()); @@ -127,11 +127,21 @@ public class PetAutopotProcessor { if (YamlConfig.config.server.USE_COMPULSORY_AUTOPOT) { if (hasHpGain) { - qtyCount = (int) Math.ceil(((YamlConfig.config.server.PET_AUTOHP_RATIO * maxHp) - curHp) / incHp); + double hpRatio = (YamlConfig.config.server.PET_AUTOHP_RATIO * maxHp) - curHp; + if (hpRatio > 0.0) { + qtyCount = (int) Math.ceil(hpRatio / incHp); + } } if (hasMpGain) { - qtyCount = Math.max(qtyCount, (int) Math.ceil(((YamlConfig.config.server.PET_AUTOMP_RATIO * maxMp) - curMp) / incMp)); + double mpRatio = ((YamlConfig.config.server.PET_AUTOMP_RATIO * maxMp) - curMp); + if (mpRatio > 0.0) { + qtyCount = Math.max(qtyCount, (int) Math.ceil(mpRatio / incMp)); + } + } + + if (qtyCount < 0) { // thanks Flint, Kevs for noticing an issue where negative counts were getting achieved + qtyCount = 0; } } else { qtyCount = 1; // non-compulsory autopot concept thanks to marcuswoon @@ -162,8 +172,10 @@ public class PetAutopotProcessor { useInv.unlockInventory(); } - for (int i = 0; i < useCount; i++) { - stat.applyTo(chr); + if (stat != null) { + for (int i = 0; i < useCount; i++) { + stat.applyTo(chr); + } } chr.announce(MaplePacketCreator.enableActions()); diff --git a/src/client/processor/stat/AssignAPProcessor.java b/src/client/processor/stat/AssignAPProcessor.java index 4edb87bbb5..dcf2488e93 100644 --- a/src/client/processor/stat/AssignAPProcessor.java +++ b/src/client/processor/stat/AssignAPProcessor.java @@ -348,14 +348,7 @@ public class AssignAPProcessor { if(slea.available() < 16) { AutobanFactory.PACKET_EDIT.alert(chr, "Didn't send full packet for Auto Assign."); - final MapleClient client = c; - ThreadManager.getInstance().newTask(new Runnable() { - @Override - public void run() { - client.disconnect(false, false); - } - }); - + c.disconnect(true, false); return; } diff --git a/src/client/processor/stat/AssignSPProcessor.java b/src/client/processor/stat/AssignSPProcessor.java index d27522c05c..cf100fd8ce 100644 --- a/src/client/processor/stat/AssignSPProcessor.java +++ b/src/client/processor/stat/AssignSPProcessor.java @@ -51,14 +51,7 @@ public class AssignSPProcessor { AutobanFactory.PACKET_EDIT.alert(player, "tried to packet edit in distributing sp."); FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to use skill " + skillid + " without it being in their job."); - final MapleClient client = c; - ThreadManager.getInstance().newTask(new Runnable() { - @Override - public void run() { - client.disconnect(true, false); - } - }); - + c.disconnect(true, false); return false; } diff --git a/src/config/ServerConfig.java b/src/config/ServerConfig.java index 9ad310a292..ea40b0b2ad 100644 --- a/src/config/ServerConfig.java +++ b/src/config/ServerConfig.java @@ -187,7 +187,7 @@ public class ServerConfig { public boolean USE_ENHANCED_CHSCROLL; public boolean USE_ENHANCED_CRAFTING; public boolean USE_ENHANCED_CLNSLATE; - public int SCROLL_CHANCE_RATE; + public int SCROLL_CHANCE_ROLLS; public int CHSCROLL_STAT_RATE; public int CHSCROLL_STAT_RANGE; diff --git a/src/constants/game/GameConstants.java b/src/constants/game/GameConstants.java index 358b2d1ef1..ea8174cfe4 100644 --- a/src/constants/game/GameConstants.java +++ b/src/constants/game/GameConstants.java @@ -490,18 +490,6 @@ public class GameConstants { } } - public static int getHiddenSkill(final int skill) { - switch (skill) { - case Aran.HIDDEN_FULL_DOUBLE: - case Aran.HIDDEN_FULL_TRIPLE: - return Aran.FULL_SWING; - case Aran.HIDDEN_OVER_DOUBLE: - case Aran.HIDDEN_OVER_TRIPLE: - return Aran.OVER_SWING; - } - return skill; - } - public static int getSkillBook(final int job) { if (job >= 2210 && job <= 2218) { return job - 2209; diff --git a/src/constants/inventory/ItemConstants.java b/src/constants/inventory/ItemConstants.java index 6d2934b1b6..dae6df6b89 100644 --- a/src/constants/inventory/ItemConstants.java +++ b/src/constants/inventory/ItemConstants.java @@ -170,11 +170,11 @@ public final class ItemConstants { } public static boolean isPartyItem(int itemId) { - return itemId >= 2022430 && itemId <= 2022433; + return itemId >= 2022430 && itemId <= 2022433 || itemId >= 2022160 && itemId <= 2022163; } public static boolean isPartyAllcure(int itemId) { - return itemId == 2022433; + return itemId == 2022433 || itemId == 2022163; } public static boolean isHiredMerchant(int itemId) { diff --git a/src/net/MapleServerHandler.java b/src/net/MapleServerHandler.java index e66377b9fd..3922c847c8 100644 --- a/src/net/MapleServerHandler.java +++ b/src/net/MapleServerHandler.java @@ -242,14 +242,14 @@ public class MapleServerHandler extends IoHandlerAdapter { long timeNow = Server.getInstance().getCurrentTime(); long timeThen = timeNow - 15000; + Set pingClients = new HashSet<>(); idleLock.lock(); try { for(Entry mc : idleSessions.entrySet()) { if(timeNow - mc.getValue() >= 15000) { - mc.getKey().testPing(timeThen); + pingClients.add(mc.getKey()); } } - idleSessions.clear(); if(!tempIdleSessions.isEmpty()) { @@ -267,6 +267,10 @@ public class MapleServerHandler extends IoHandlerAdapter { } finally { idleLock.unlock(); } + + for(MapleClient c : pingClients) { + c.testPing(timeThen); + } } private void idleManagerTask() { diff --git a/src/net/mina/MaplePacketDecoder.java b/src/net/mina/MaplePacketDecoder.java index ad90d7dc1e..30695ab3f8 100644 --- a/src/net/mina/MaplePacketDecoder.java +++ b/src/net/mina/MaplePacketDecoder.java @@ -33,7 +33,6 @@ import tools.HexTool; import tools.MapleAESOFB; import tools.data.input.ByteArrayByteStream; import tools.data.input.GenericLittleEndianAccessor; -import net.opcodes.RecvOpcode; import tools.FilePrinter; public class MaplePacketDecoder extends CumulativeProtocolDecoder { diff --git a/src/net/server/Server.java b/src/net/server/Server.java index f5f351d72d..b8f0e62a50 100644 --- a/src/net/server/Server.java +++ b/src/net/server/Server.java @@ -106,7 +106,6 @@ import tools.AutoJCE; import tools.DatabaseConnection; import tools.FilePrinter; import tools.Pair; -import org.apache.mina.core.session.IoSession; public class Server { @@ -1730,12 +1729,12 @@ public class Server { } } - private static String getRemoteIp(IoSession session) { - return MapleSessionCoordinator.getSessionRemoteAddress(session); + private static String getRemoteHost(MapleClient client) { + return MapleSessionCoordinator.getSessionRemoteHost(client.getSession()); } - public void setCharacteridInTransition(IoSession session, int charId) { - String remoteIp = getRemoteIp(session); + public void setCharacteridInTransition(MapleClient client, int charId) { + String remoteIp = getRemoteHost(client); lgnWLock.lock(); try { @@ -1745,12 +1744,12 @@ public class Server { } } - public boolean validateCharacteridInTransition(IoSession session, int charId) { + public boolean validateCharacteridInTransition(MapleClient client, int charId) { if (!YamlConfig.config.server.USE_IP_VALIDATION) { return true; } - String remoteIp = getRemoteIp(session); + String remoteIp = getRemoteHost(client); lgnWLock.lock(); try { @@ -1761,12 +1760,12 @@ public class Server { } } - public Integer freeCharacteridInTransition(IoSession session) { + public Integer freeCharacteridInTransition(MapleClient client) { if (!YamlConfig.config.server.USE_IP_VALIDATION) { return null; } - String remoteIp = getRemoteIp(session); + String remoteIp = getRemoteHost(client); lgnWLock.lock(); try { @@ -1776,13 +1775,13 @@ public class Server { } } - public boolean hasCharacteridInTransition(IoSession session) { + public boolean hasCharacteridInTransition(MapleClient client) { if (!YamlConfig.config.server.USE_IP_VALIDATION) { return true; } - String remoteIp = getRemoteIp(session); - + String remoteIp = getRemoteHost(client); + lgnRLock.lock(); try { return transitioningChars.containsKey(remoteIp); diff --git a/src/net/server/channel/Channel.java b/src/net/server/channel/Channel.java index 07a4eea3c5..df6b7440f0 100644 --- a/src/net/server/channel/Channel.java +++ b/src/net/server/channel/Channel.java @@ -375,7 +375,7 @@ public final class Channel { for (Integer cid : playersAway) { MapleCharacter chr = wserv.getPlayerStorage().getCharacterById(cid); if (chr != null && chr.isLoggedin()) { - chr.getClient().disconnect(true, false); + chr.getClient().forceDisconnect(); } } } diff --git a/src/net/server/channel/handlers/AbstractDealDamageHandler.java b/src/net/server/channel/handlers/AbstractDealDamageHandler.java index a39a2155d7..d0455c3c99 100644 --- a/src/net/server/channel/handlers/AbstractDealDamageHandler.java +++ b/src/net/server/channel/handlers/AbstractDealDamageHandler.java @@ -113,10 +113,11 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl public boolean ranged, magic; public int speed = 4; public Point position = new Point(); + public MapleStatEffect getAttackEffect(MapleCharacter chr, Skill theSkill) { Skill mySkill = theSkill; if (mySkill == null) { - mySkill = SkillFactory.getSkill(GameConstants.getHiddenSkill(skill)); + mySkill = SkillFactory.getSkill(skill); } int skillLevel = chr.getSkillLevel(mySkill); @@ -149,8 +150,8 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl return; } if (attack.skill != 0) { - theSkill = SkillFactory.getSkill(GameConstants.getHiddenSkill(attack.skill)); //returns back the skill id if its not a hidden skill so we are gucci - attackEffect = attack.getAttackEffect(player, theSkill); + theSkill = SkillFactory.getSkill(attack.skill); // thanks Conrad for noticing some Aran skills not consuming MP + attackEffect = attack.getAttackEffect(player, theSkill); //returns back the player's attack effect so we are gucci if (attackEffect == null) { player.announce(MaplePacketCreator.enableActions()); return; diff --git a/src/net/server/channel/handlers/CancelChairHandler.java b/src/net/server/channel/handlers/CancelChairHandler.java index e6672f5c44..74a4cdbae9 100644 --- a/src/net/server/channel/handlers/CancelChairHandler.java +++ b/src/net/server/channel/handlers/CancelChairHandler.java @@ -37,6 +37,12 @@ public final class CancelChairHandler extends AbstractMaplePacketHandler { return; } - mc.sitChair(id); + if (c.tryacquireClient()) { + try { + mc.sitChair(id); + } finally { + c.releaseClient(); + } + } } } diff --git a/src/net/server/channel/handlers/CashOperationHandler.java b/src/net/server/channel/handlers/CashOperationHandler.java index 62e92cdf0e..ea776e240e 100644 --- a/src/net/server/channel/handlers/CashOperationHandler.java +++ b/src/net/server/channel/handlers/CashOperationHandler.java @@ -40,7 +40,6 @@ import server.CashShop; import server.CashShop.CashItem; import server.CashShop.CashItemFactory; import client.inventory.manipulator.MapleInventoryManipulator; -import constants.net.ServerConstants; import server.MapleItemInformationProvider; import tools.FilePrinter; import tools.MaplePacketCreator; diff --git a/src/net/server/channel/handlers/ChangeMapHandler.java b/src/net/server/channel/handlers/ChangeMapHandler.java index 6e9658b424..40700b28b0 100644 --- a/src/net/server/channel/handlers/ChangeMapHandler.java +++ b/src/net/server/channel/handlers/ChangeMapHandler.java @@ -62,7 +62,6 @@ public final class ChangeMapHandler extends AbstractMaplePacketHandler { String[] socket = c.getChannelServer().getIP().split(":"); chr.getCashShop().open(false); - c.updateLoginState(MapleClient.LOGIN_SERVER_TRANSITION); chr.setSessionTransitionState(); try { c.announce(MaplePacketCreator.getChannelChange(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]))); diff --git a/src/net/server/channel/handlers/PlayerLoggedinHandler.java b/src/net/server/channel/handlers/PlayerLoggedinHandler.java index 49df1547bb..137e48b2b9 100644 --- a/src/net/server/channel/handlers/PlayerLoggedinHandler.java +++ b/src/net/server/channel/handlers/PlayerLoggedinHandler.java @@ -126,13 +126,7 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { } MapleCharacter player = wserv.getPlayerStorage().getCharacterById(cid); - boolean newcomer = false; - IoSession session = c.getSession(); - if (!server.validateCharacteridInTransition(session, cid)) { - c.disconnect(true, false); - return; - } String remoteHwid; if (player == null) { @@ -141,25 +135,37 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { c.disconnect(true, false); return; } - + } else { + remoteHwid = player.getClient().getHWID(); + } + + int hwidLen = remoteHwid.length(); + session.setAttribute(MapleClient.CLIENT_HWID, remoteHwid); + session.setAttribute(MapleClient.CLIENT_NIBBLEHWID, remoteHwid.substring(hwidLen - 8, hwidLen)); + c.setHWID(remoteHwid); + + if (!server.validateCharacteridInTransition(c, cid)) { + c.disconnect(true, false); + return; + } + + boolean newcomer = false; + if (player == null) { try { player = MapleCharacter.loadCharFromDB(cid, c, true); newcomer = true; } catch (SQLException e) { e.printStackTrace(); } - } else { - remoteHwid = player.getClient().getHWID(); + + if (player == null) { //If you are still getting null here then please just uninstall the game >.>, we dont need you fucking with the logs + c.disconnect(true, false); + return; + } } - - if (player == null) { //If you are still getting null here then please just uninstall the game >.>, we dont need you fucking with the logs - c.disconnect(true, false); - return; - } - c.setPlayer(player); c.setAccID(player.getAccountID()); - + boolean allowLogin = true; /* is this check really necessary? @@ -211,11 +217,6 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { player.newClient(c); } - int hwidLen = remoteHwid.length(); - session.setAttribute(MapleClient.CLIENT_HWID, remoteHwid); - session.setAttribute(MapleClient.CLIENT_NIBBLEHWID, remoteHwid.substring(hwidLen - 8, hwidLen)); - c.setHWID(remoteHwid); - cserv.addPlayer(player); wserv.addPlayer(player); player.setEnteredChannelWorld(); @@ -386,7 +387,7 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { player.announceBattleshipHp(); } } - + player.buffExpireTask(); player.diseaseExpireTask(); player.skillCooldownTask(); diff --git a/src/net/server/channel/handlers/SpecialMoveHandler.java b/src/net/server/channel/handlers/SpecialMoveHandler.java index c1c8b3abae..cf988013d8 100644 --- a/src/net/server/channel/handlers/SpecialMoveHandler.java +++ b/src/net/server/channel/handlers/SpecialMoveHandler.java @@ -33,7 +33,6 @@ import client.MapleCharacter; import client.MapleClient; import client.Skill; import client.SkillFactory; -import constants.net.ServerConstants; import constants.skills.Brawler; import constants.skills.Corsair; import constants.skills.DarkKnight; diff --git a/src/net/server/channel/handlers/UseCashItemHandler.java b/src/net/server/channel/handlers/UseCashItemHandler.java index 117c5342ae..7146eba05d 100644 --- a/src/net/server/channel/handlers/UseCashItemHandler.java +++ b/src/net/server/channel/handlers/UseCashItemHandler.java @@ -635,11 +635,11 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler { position = it.getPosition(); } } + + MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.CASH, position, (short) 1, true, false); } finally { cashInv.unlockInventory(); } - - MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.CASH, position, (short) 1, true, false); } private static boolean getIncubatedItem(MapleClient c, int id) { diff --git a/src/net/server/channel/handlers/UseChairHandler.java b/src/net/server/channel/handlers/UseChairHandler.java index 93de1bd830..857fcdb704 100644 --- a/src/net/server/channel/handlers/UseChairHandler.java +++ b/src/net/server/channel/handlers/UseChairHandler.java @@ -37,6 +37,12 @@ public final class UseChairHandler extends AbstractMaplePacketHandler { return; } - c.getPlayer().sitChair(itemId); + if (c.tryacquireClient()) { + try { + c.getPlayer().sitChair(itemId); + } finally { + c.releaseClient(); + } + } } } diff --git a/src/net/server/channel/handlers/UseItemHandler.java b/src/net/server/channel/handlers/UseItemHandler.java index 29878407f3..61f04cfec5 100644 --- a/src/net/server/channel/handlers/UseItemHandler.java +++ b/src/net/server/channel/handlers/UseItemHandler.java @@ -53,7 +53,7 @@ public final class UseItemHandler extends AbstractMaplePacketHandler { int itemId = slea.readInt(); Item toUse = chr.getInventory(MapleInventoryType.USE).getItem(slot); if (toUse != null && toUse.getQuantity() > 0 && toUse.getItemId() == itemId) { - if (itemId == 2022178 || itemId == 2050004) { + if (itemId == 2050004) { chr.dispelDebuffs(); remove(c, slot); return; diff --git a/src/net/server/channel/handlers/UseMountFoodHandler.java b/src/net/server/channel/handlers/UseMountFoodHandler.java index dde7452092..3325baa280 100644 --- a/src/net/server/channel/handlers/UseMountFoodHandler.java +++ b/src/net/server/channel/handlers/UseMountFoodHandler.java @@ -31,7 +31,6 @@ import constants.game.ExpTable; import net.AbstractMaplePacketHandler; import client.inventory.manipulator.MapleInventoryManipulator; import tools.MaplePacketCreator; -import tools.Pair; import tools.data.input.SeekableLittleEndianAccessor; /** diff --git a/src/net/server/channel/handlers/WeddingHandler.java b/src/net/server/channel/handlers/WeddingHandler.java index 6fca323515..2c51dd728c 100644 --- a/src/net/server/channel/handlers/WeddingHandler.java +++ b/src/net/server/channel/handlers/WeddingHandler.java @@ -58,20 +58,18 @@ public final class WeddingHandler extends AbstractMaplePacketHandler { MapleInventoryType type = ItemConstants.getInventoryType(itemid); MapleInventory chrInv = chr.getInventory(type); + Item newItem = null; chrInv.lockInventory(); try { Item item = chrInv.getItem((byte) slot); if (item != null) { if (!item.isUntradeable()) { if (itemid == item.getItemId() && quantity <= item.getQuantity()) { - Item newItem = item.copy(); + newItem = item.copy(); marriage.addGiftItem(groomWishlist, newItem); MapleInventoryManipulator.removeFromSlot(c, type, slot, quantity, false, false); - - if (YamlConfig.config.server.USE_ENFORCE_MERCHANT_SAVE) chr.saveCharToDB(false); - marriage.saveGiftItemsToDb(c, groomWishlist, cid); - + MapleKarmaManipulator.toggleKarmaFlagToUntradeable(newItem); marriage.setIntProperty(groomWishlistProp, giftCount + 1); @@ -84,6 +82,11 @@ public final class WeddingHandler extends AbstractMaplePacketHandler { } finally { chrInv.unlockInventory(); } + + if (newItem != null) { + if (YamlConfig.config.server.USE_ENFORCE_MERCHANT_SAVE) chr.saveCharToDB(false); + marriage.saveGiftItemsToDb(c, groomWishlist, cid); + } } else { c.announce(Wedding.OnWeddingGiftResult((byte) 0xE, marriage.getWishlistItems(groomWishlist), null)); } diff --git a/src/net/server/coordinator/matchchecker/MapleMatchCheckerCoordinator.java b/src/net/server/coordinator/matchchecker/MapleMatchCheckerCoordinator.java index 5bfe6cf0c8..421b4aec3d 100644 --- a/src/net/server/coordinator/matchchecker/MapleMatchCheckerCoordinator.java +++ b/src/net/server/coordinator/matchchecker/MapleMatchCheckerCoordinator.java @@ -22,7 +22,6 @@ package net.server.coordinator.matchchecker; import client.MapleCharacter; import net.server.PlayerStorage; import net.server.Server; -import net.server.coordinator.matchchecker.AbstractMatchCheckerListener; import net.server.coordinator.matchchecker.MatchCheckerListenerFactory.MatchCheckerType; import net.server.world.World; import java.util.Collections; @@ -260,19 +259,19 @@ public class MapleMatchCheckerCoordinator { } } - private void createMatchConfirmationInternal(MatchCheckerType matchType, int world, int leaderCid, AbstractMatchCheckerListener leaderListener, Set players, String message) { + private MapleMatchCheckingElement createMatchConfirmationInternal(MatchCheckerType matchType, int world, int leaderCid, AbstractMatchCheckerListener leaderListener, Set players, String message) { MapleMatchCheckingElement mmce = new MapleMatchCheckingElement(matchType, leaderCid, world, leaderListener, players, message); for (Integer cid : players) { matchEntries.put(cid, mmce); } - mmce.dispatchMatchCreated(); - acceptMatchElement(mmce, leaderCid); + return mmce; } public boolean createMatchConfirmation(MatchCheckerType matchType, int world, int leaderCid, Set players, String message) { + MapleMatchCheckingElement mmce = null; try { semaphorePool.acquire(); try { @@ -280,8 +279,7 @@ public class MapleMatchCheckerCoordinator { try { if (isMatchingAvailable(players)) { AbstractMatchCheckerListener leaderListener = matchType.getListener(); - createMatchConfirmationInternal(matchType, world, leaderCid, leaderListener, players, message); - return true; + mmce = createMatchConfirmationInternal(matchType, world, leaderCid, leaderListener, players, message); } else { reenablePlayerMatching(players); } @@ -296,7 +294,12 @@ public class MapleMatchCheckerCoordinator { ie.printStackTrace(); } - return false; + if (mmce != null) { + mmce.dispatchMatchCreated(); + return true; + } else { + return false; + } } private void disposeMatchElement(MapleMatchCheckingElement mmce) { @@ -320,16 +323,12 @@ public class MapleMatchCheckerCoordinator { if (mmce.acceptEntry(cid)) { unpoolMatchPlayer(cid); disposeMatchElement(mmce); - - mmce.dispatchMatchResult(true); } } private void denyMatchElement(MapleMatchCheckingElement mmce, int cid) { unpoolMatchPlayer(cid); disposeMatchElement(mmce); - - mmce.dispatchMatchResult(false); } private void dismissMatchElement(MapleMatchCheckingElement mmce, int cid) { @@ -337,35 +336,32 @@ public class MapleMatchCheckerCoordinator { unpoolMatchPlayer(cid); disposeMatchElement(mmce); - - mmce.dispatchMatchDismissed(); } public boolean answerMatchConfirmation(int cid, boolean accept) { + MapleMatchCheckingElement mmce = null; try { semaphorePool.acquire(); try { while (matchEntries.containsKey(cid)) { if (poolMatchPlayer(cid)) { try { - MapleMatchCheckingElement mmce = matchEntries.get(cid); + mmce = matchEntries.get(cid); if (mmce != null) { synchronized (mmce) { if (!mmce.isMatchActive()) { // thanks Alex (CanIGetaPR) for noticing that exploiters could stall on match checking matchEntries.remove(cid); - return false; - } - - if (accept) { - acceptMatchElement(mmce, cid); + mmce = null; } else { - denyMatchElement(mmce, cid); - matchEntries.remove(cid); + if (accept) { + acceptMatchElement(mmce, cid); + } else { + denyMatchElement(mmce, cid); + matchEntries.remove(cid); + } } } - - return true; } } finally { unpoolMatchPlayer(cid); @@ -379,26 +375,30 @@ public class MapleMatchCheckerCoordinator { ie.printStackTrace(); } + if (mmce != null) { + mmce.dispatchMatchResult(accept); + } + return false; } public boolean dismissMatchConfirmation(int cid) { + MapleMatchCheckingElement mmce = null; try { semaphorePool.acquire(); try { while (matchEntries.containsKey(cid)) { if (poolMatchPlayer(cid)) { try { - MapleMatchCheckingElement mmce = matchEntries.get(cid); + mmce = matchEntries.get(cid); if (mmce != null) { synchronized (mmce) { if (!mmce.isMatchActive()) { - return false; + mmce = null; + } else { + dismissMatchElement(mmce, cid); } - - dismissMatchElement(mmce, cid); - return true; } } } finally { @@ -413,7 +413,12 @@ public class MapleMatchCheckerCoordinator { ie.printStackTrace(); } - return false; + if (mmce != null) { + mmce.dispatchMatchDismissed(); + return true; + } else { + return false; + } } } diff --git a/src/net/server/coordinator/session/MapleSessionCoordinator.java b/src/net/server/coordinator/session/MapleSessionCoordinator.java index a071247052..cf922b2c58 100644 --- a/src/net/server/coordinator/session/MapleSessionCoordinator.java +++ b/src/net/server/coordinator/session/MapleSessionCoordinator.java @@ -224,6 +224,16 @@ public class MapleSessionCoordinator { public static String getSessionRemoteAddress(IoSession session) { return (String) session.getAttribute(MapleClient.CLIENT_REMOTE_ADDRESS); } + + public static String getSessionRemoteHost(IoSession session) { + String nibbleHwid = (String) session.getAttribute(MapleClient.CLIENT_NIBBLEHWID); + + if (nibbleHwid != null) { + return getSessionRemoteAddress(session) + "-" + nibbleHwid; + } else { + return getSessionRemoteAddress(session); + } + } private static MapleClient getSessionClient(IoSession session) { return (MapleClient) session.getAttribute(MapleClient.CLIENT_KEY); @@ -246,7 +256,7 @@ public class MapleSessionCoordinator { public boolean canStartLoginSession(IoSession session) { if (!YamlConfig.config.server.DETERRED_MULTICLIENT) return true; - String remoteHost = getSessionRemoteAddress(session); + String remoteHost = getSessionRemoteHost(session); Lock lock = getCoodinatorLock(remoteHost); try { @@ -306,7 +316,9 @@ public class MapleSessionCoordinator { } public void closeLoginSession(IoSession session) { - String remoteHost = getSessionRemoteAddress(session); + String nibbleHwid = (String) session.removeAttribute(MapleClient.CLIENT_NIBBLEHWID); + String remoteHost = getSessionRemoteHost(session); + Set lrh = loginRemoteHosts.get(remoteHost); if (lrh != null) { lrh.remove(session); @@ -314,8 +326,7 @@ public class MapleSessionCoordinator { loginRemoteHosts.remove(remoteHost); } } - - String nibbleHwid = (String) session.removeAttribute(MapleClient.CLIENT_NIBBLEHWID); + if (nibbleHwid != null) { onlineRemoteHwids.remove(nibbleHwid); @@ -337,7 +348,7 @@ public class MapleSessionCoordinator { return AntiMulticlientResult.SUCCESS; } - String remoteHost = getSessionRemoteAddress(session); + String remoteHost = getSessionRemoteHost(session); Lock lock = getCoodinatorLock(remoteHost); try { @@ -403,9 +414,10 @@ public class MapleSessionCoordinator { } public AntiMulticlientResult attemptGameSession(IoSession session, int accountId, String remoteHwid) { - String remoteHost = getSessionRemoteAddress(session); + String remoteHost = getSessionRemoteHost(session); if (!YamlConfig.config.server.DETERRED_MULTICLIENT) { associateRemoteHostHwid(remoteHost, remoteHwid); + associateRemoteHostHwid(getSessionRemoteAddress(session), remoteHwid); // no HWID information on the loggedin newcomer session... return AntiMulticlientResult.SUCCESS; } @@ -451,6 +463,7 @@ public class MapleSessionCoordinator { // updated session CLIENT_HWID attribute will be set when the player log in the game onlineRemoteHwids.add(remoteHwid); associateRemoteHostHwid(remoteHost, remoteHwid); + associateRemoteHostHwid(getSessionRemoteAddress(session), remoteHwid); associateHwidAccountIfAbsent(remoteHwid, accountId); return AntiMulticlientResult.SUCCESS; @@ -486,7 +499,7 @@ public class MapleSessionCoordinator { } MapleClient client = new MapleClient(null, null, session); - Integer cid = Server.getInstance().freeCharacteridInTransition(session); + Integer cid = Server.getInstance().freeCharacteridInTransition(client); if (cid != null) { try { client.setAccID(MapleCharacter.loadCharFromDB(cid, client, false).getAccountID()); @@ -535,7 +548,7 @@ public class MapleSessionCoordinator { } public String getGameSessionHwid(IoSession session) { - String remoteHost = getSessionRemoteAddress(session); + String remoteHost = getSessionRemoteHost(session); return cachedHostHwids.get(remoteHost); } diff --git a/src/net/server/handlers/login/CharSelectedHandler.java b/src/net/server/handlers/login/CharSelectedHandler.java index 00d2cbc22c..e378ad1b6c 100644 --- a/src/net/server/handlers/login/CharSelectedHandler.java +++ b/src/net/server/handlers/login/CharSelectedHandler.java @@ -101,8 +101,7 @@ public final class CharSelectedHandler extends AbstractMaplePacketHandler { } server.unregisterLoginState(c); - c.updateLoginState(MapleClient.LOGIN_SERVER_TRANSITION); - server.setCharacteridInTransition(session, charId); + c.setCharacterOnSessionTransitionState(charId); try { c.announce(MaplePacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId)); diff --git a/src/net/server/handlers/login/CharSelectedWithPicHandler.java b/src/net/server/handlers/login/CharSelectedWithPicHandler.java index 5ee43ec4b5..26f89ccd21 100644 --- a/src/net/server/handlers/login/CharSelectedWithPicHandler.java +++ b/src/net/server/handlers/login/CharSelectedWithPicHandler.java @@ -84,8 +84,7 @@ public class CharSelectedWithPicHandler extends AbstractMaplePacketHandler { } server.unregisterLoginState(c); - c.updateLoginState(MapleClient.LOGIN_SERVER_TRANSITION); - server.setCharacteridInTransition(session, charId); + c.setCharacterOnSessionTransitionState(charId); try { c.announce(MaplePacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId)); diff --git a/src/net/server/handlers/login/RegisterPicHandler.java b/src/net/server/handlers/login/RegisterPicHandler.java index 759eacf26a..4de8d673fe 100644 --- a/src/net/server/handlers/login/RegisterPicHandler.java +++ b/src/net/server/handlers/login/RegisterPicHandler.java @@ -86,8 +86,7 @@ public final class RegisterPicHandler extends AbstractMaplePacketHandler { } server.unregisterLoginState(c); - c.updateLoginState(MapleClient.LOGIN_SERVER_TRANSITION); - server.setCharacteridInTransition(session, charId); + c.setCharacterOnSessionTransitionState(charId); try { c.announce(MaplePacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId)); diff --git a/src/net/server/handlers/login/ViewAllCharRegisterPicHandler.java b/src/net/server/handlers/login/ViewAllCharRegisterPicHandler.java index 008913d9ad..a4a9f5235b 100644 --- a/src/net/server/handlers/login/ViewAllCharRegisterPicHandler.java +++ b/src/net/server/handlers/login/ViewAllCharRegisterPicHandler.java @@ -89,8 +89,7 @@ public final class ViewAllCharRegisterPicHandler extends AbstractMaplePacketHand } server.unregisterLoginState(c); - c.updateLoginState(MapleClient.LOGIN_SERVER_TRANSITION); - server.setCharacteridInTransition(session, charId); + c.setCharacterOnSessionTransitionState(charId); try { c.announce(MaplePacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId)); diff --git a/src/net/server/handlers/login/ViewAllCharSelectedHandler.java b/src/net/server/handlers/login/ViewAllCharSelectedHandler.java index 3a829a314d..e2f458b4bb 100644 --- a/src/net/server/handlers/login/ViewAllCharSelectedHandler.java +++ b/src/net/server/handlers/login/ViewAllCharSelectedHandler.java @@ -112,8 +112,7 @@ public final class ViewAllCharSelectedHandler extends AbstractMaplePacketHandler } server.unregisterLoginState(c); - c.updateLoginState(MapleClient.LOGIN_SERVER_TRANSITION); - server.setCharacteridInTransition(session, charId); + c.setCharacterOnSessionTransitionState(charId); try { c.announce(MaplePacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId)); diff --git a/src/net/server/handlers/login/ViewAllCharSelectedWithPicHandler.java b/src/net/server/handlers/login/ViewAllCharSelectedWithPicHandler.java index b736856482..aeb6e3208b 100644 --- a/src/net/server/handlers/login/ViewAllCharSelectedWithPicHandler.java +++ b/src/net/server/handlers/login/ViewAllCharSelectedWithPicHandler.java @@ -90,8 +90,7 @@ public class ViewAllCharSelectedWithPicHandler extends AbstractMaplePacketHandle } server.unregisterLoginState(c); - c.updateLoginState(MapleClient.LOGIN_SERVER_TRANSITION); - server.setCharacteridInTransition(session, charId); + c.setCharacterOnSessionTransitionState(charId); try { c.announce(MaplePacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId)); diff --git a/src/net/server/world/MapleParty.java b/src/net/server/world/MapleParty.java index ec7aaa167e..7d0d40191b 100644 --- a/src/net/server/world/MapleParty.java +++ b/src/net/server/world/MapleParty.java @@ -356,7 +356,7 @@ public class MapleParty { party = player.getWorldServer().createParty(partyplayer); player.setParty(party); player.setMPC(partyplayer); - player.getMap().addPartyMember(player); + player.getMap().addPartyMember(player, party.getId()); player.silentPartyUpdate(); player.updatePartySearchAvailability(false); @@ -383,7 +383,7 @@ public class MapleParty { if (party != null) { if (party.getMembers().size() < 6) { MaplePartyCharacter partyplayer = new MaplePartyCharacter(player); - player.getMap().addPartyMember(player); + player.getMap().addPartyMember(player, party.getId()); world.updateParty(party.getId(), PartyOperation.JOIN, partyplayer); player.receivePartyMemberHP(); @@ -433,7 +433,7 @@ public class MapleParty { } else { MapleMap map = player.getMap(); if (map != null) { - map.removePartyMember(player); + map.removePartyMember(player, party.getId()); } MonsterCarnival mcpq = player.getMonsterCarnival(); @@ -472,7 +472,7 @@ public class MapleParty { List partyMembers = emc.getPartyMembersOnline(); MapleMap map = emc.getMap(); - if(map != null) map.removePartyMember(emc); + if(map != null) map.removePartyMember(emc, party.getId()); MonsterCarnival mcpq = player.getMonsterCarnival(); if (mcpq != null) { diff --git a/src/scripting/npc/NPCConversationManager.java b/src/scripting/npc/NPCConversationManager.java index 49dae8d220..2df36ef2a5 100644 --- a/src/scripting/npc/NPCConversationManager.java +++ b/src/scripting/npc/NPCConversationManager.java @@ -719,6 +719,45 @@ public class NPCConversationManager extends AbstractPlayerInteraction { mc.changeMap(out, out.getPortal(0)); } } + + private int isCPQParty(MapleMap lobby, MapleParty party) { + int cpqMinLvl, cpqMaxLvl; + + if (lobby.isCPQLobby()) { + cpqMinLvl = 30; + cpqMaxLvl = 50; + } else { + cpqMinLvl = 51; + cpqMaxLvl = 70; + } + + List partyMembers = party.getPartyMembers(); + for (MaplePartyCharacter pchr : partyMembers) { + if (pchr.getLevel() >= cpqMinLvl && pchr.getLevel() <= cpqMaxLvl) { + if (lobby.getCharacterById(pchr.getId()) == null) { + return 1; // party member detected out of area + } + } else { + return 2; // party member doesn't fit requirements + } + } + + return 0; + } + + private int canStartCPQ(MapleMap lobby, MapleParty party, MapleParty challenger) { + int ret = isCPQParty(lobby, party); + if (ret != 0) { + return ret; + } + + ret = isCPQParty(lobby, challenger); + if (ret != 0) { + return -ret; + } + + return 0; + } public void startCPQ(final MapleCharacter challenger, final int field) { try { @@ -779,7 +818,13 @@ public class NPCConversationManager extends AbstractPlayerInteraction { return; } - new MonsterCarnival(getPlayer().getParty(), challenger.getParty(), mapid, true, (field / 100) % 10); + MapleParty lobbyParty = getPlayer().getParty(), challengerParty = challenger.getParty(); + int status = canStartCPQ(lobbyMap, lobbyParty, challengerParty); + if (status == 0) { + new MonsterCarnival(lobbyParty, challengerParty, mapid, true, (field / 100) % 10); + } else { + warpoutCPQLobby(lobbyMap); + } } }, 11000); } catch (Exception e) { @@ -828,7 +873,13 @@ public class NPCConversationManager extends AbstractPlayerInteraction { return; } - new MonsterCarnival(getPlayer().getParty(), challenger.getParty(), mapid, false, (field / 1000) % 10); + MapleParty lobbyParty = getPlayer().getParty(), challengerParty = challenger.getParty(); + int status = canStartCPQ(lobbyMap, lobbyParty, challengerParty); + if (status == 0) { + new MonsterCarnival(lobbyParty, challengerParty, mapid, false, (field / 1000) % 10); + } else { + warpoutCPQLobby(lobbyMap); + } } }, 10000); } catch (Exception e) { diff --git a/src/server/MapleItemInformationProvider.java b/src/server/MapleItemInformationProvider.java index 6ce159d95a..d0713ed1b6 100644 --- a/src/server/MapleItemInformationProvider.java +++ b/src/server/MapleItemInformationProvider.java @@ -101,6 +101,7 @@ public class MapleItemInformationProvider { protected Map equipLevelInfoCache = new HashMap<>(); protected Map equipLevelReqCache = new HashMap<>(); protected Map equipMaxLevelCache = new HashMap<>(); + protected Map> scrollReqsCache = new HashMap<>(); protected Map wholePriceCache = new HashMap<>(); protected Map unitPriceCache = new HashMap<>(); protected Map projectileWatkCache = new HashMap<>(); @@ -594,15 +595,20 @@ public class MapleItemInformationProvider { } public List getScrollReqs(int itemId) { + if (scrollReqsCache.containsKey(itemId)) { + return scrollReqsCache.get(itemId); + } + List ret = new ArrayList<>(); MapleData data = getItemData(itemId); data = data.getChildByPath("req"); - if (data == null) { - return ret; - } - for (MapleData req : data.getChildren()) { - ret.add(MapleDataTool.getInt(req)); + if (data != null) { + for (MapleData req : data.getChildren()) { + ret.add(MapleDataTool.getInt(req)); + } } + + scrollReqsCache.put(itemId, ret); return ret; } @@ -620,7 +626,7 @@ public class MapleItemInformationProvider { } public static boolean rollSuccessChance(double propPercent) { - return Math.random() >= testYourLuck(propPercent / 100.0, YamlConfig.config.server.SCROLL_CHANCE_RATE); + return Math.random() >= testYourLuck(propPercent / 100.0, YamlConfig.config.server.SCROLL_CHANCE_ROLLS); } private static short getMaximumShortMaxIfOverflow(int value1, int value2) { diff --git a/src/server/MapleMarriage.java b/src/server/MapleMarriage.java index 5d75c62040..8a4c912a08 100644 --- a/src/server/MapleMarriage.java +++ b/src/server/MapleMarriage.java @@ -69,18 +69,10 @@ public class MapleMarriage extends EventInstanceManager { } public List getGiftItems(MapleClient c, boolean groom) { - if (c.tryacquireClient()) { - try { - List gifts = getGiftItemsList(groom); - synchronized (gifts) { - return new LinkedList<>(gifts); - } - } finally { - c.releaseClient(); - } + List gifts = getGiftItemsList(groom); + synchronized (gifts) { + return new LinkedList<>(gifts); } - - return new LinkedList<>(); } private List getGiftItemsList(boolean groom) { @@ -130,7 +122,9 @@ public class MapleMarriage extends EventInstanceManager { Connection con = DatabaseConnection.getConnection(); ItemFactory.MARRIAGE_GIFTS.saveItems(new LinkedList>(), chr.getId(), con); con.close(); - } catch (SQLException sqle) {} + } catch (SQLException sqle) { + sqle.printStackTrace(); + } for (Item item : gifts) { MapleInventoryManipulator.addFromDrop(chr.getClient(), item, false); @@ -144,18 +138,13 @@ public class MapleMarriage extends EventInstanceManager { public static List loadGiftItemsFromDb(MapleClient c, int cid) { List items = new LinkedList<>(); - if (c.tryacquireClient()) { - try { - try { - for (Pair it : ItemFactory.MARRIAGE_GIFTS.loadItems(cid, false)) { - items.add(it.getLeft()); - } - } catch (SQLException sqle) { - sqle.printStackTrace(); - } - } finally { - c.releaseClient(); + + try { + for (Pair it : ItemFactory.MARRIAGE_GIFTS.loadItems(cid, false)) { + items.add(it.getLeft()); } + } catch (SQLException sqle) { + sqle.printStackTrace(); } return items; @@ -170,19 +159,13 @@ public class MapleMarriage extends EventInstanceManager { for (Item it : giftItems) { items.add(new Pair<>(it, it.getInventoryType())); } - - if (c.tryacquireClient()) { - try { - try { - Connection con = DatabaseConnection.getConnection(); - ItemFactory.MARRIAGE_GIFTS.saveItems(items, cid, con); - con.close(); - } catch (SQLException sqle) { - sqle.printStackTrace(); - } - } finally { - c.releaseClient(); - } + + try { + Connection con = DatabaseConnection.getConnection(); + ItemFactory.MARRIAGE_GIFTS.saveItems(items, cid, con); + con.close(); + } catch (SQLException sqle) { + sqle.printStackTrace(); } } } diff --git a/src/server/MapleSkillbookInformationProvider.java b/src/server/MapleSkillbookInformationProvider.java index f144d21c51..57e9d8309e 100644 --- a/src/server/MapleSkillbookInformationProvider.java +++ b/src/server/MapleSkillbookInformationProvider.java @@ -19,10 +19,8 @@ */ package server; -import java.io.BufferedReader; import java.io.File; import java.io.IOException; -import java.io.InputStreamReader; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; @@ -67,25 +65,12 @@ public class MapleSkillbookInformationProvider { static String driver = "com.mysql.jdbc.Driver"; static String username = "root"; static String password = ""; - - static String wzPath = "wz"; + static String rootDirectory = "."; - static InputStreamReader fileReader = null; - static BufferedReader bufferedReader = null; - - static int initialStringLength = 50; - static int skillbookMinItemid = 2280000; static int skillbookMaxItemid = 2300000; // exclusively - static byte status = 0; - static int questId = -1; - static int isCompleteState = 0; - - static int currentItemid = 0; - static int currentCount = 0; - static { loadSkillbooks(); } @@ -106,7 +91,7 @@ public class MapleSkillbookInformationProvider { int itemcount = MapleDataTool.getInt("count", questItemData, 0); if (isSkillBook(itemid) && itemcount > 0) { - foundSkillbooks.put(currentItemid, SkillBookEntry.QUEST); + foundSkillbooks.put(itemid, SkillBookEntry.QUEST); } } diff --git a/src/server/MapleStatEffect.java b/src/server/MapleStatEffect.java index 667a2295dd..d16363d74b 100644 --- a/src/server/MapleStatEffect.java +++ b/src/server/MapleStatEffect.java @@ -262,6 +262,7 @@ public class MapleStatEffect { } if (MapleDataTool.getInt("weakness", source, 0) > 0) { cure.add(MapleDisease.WEAKEN); + cure.add(MapleDisease.SLOW); } if (MapleDataTool.getInt("curse", source, 0) > 0) { cure.add(MapleDisease.CURSE); @@ -1070,7 +1071,7 @@ public class MapleStatEffect { if (isMagicDoor() && !FieldLimit.DOOR.check(applyto.getMap().getFieldLimit())) { // Magic Door int y = applyto.getFh(); if (y == 0) { - y = applyto.getPosition().y; + y = applyto.getMap().getGroundBelow(applyto.getPosition()).y; // thanks Lame for pointing out unusual cases of doors sending players on ground below } Point doorPosition = new Point(applyto.getPosition().x, y); MapleDoor door = new MapleDoor(applyto, doorPosition); @@ -1118,7 +1119,7 @@ public class MapleStatEffect { } } } else { - int amount = opposition.getMembers().size() - 1; + int amount = opposition.getMembers().size(); int randd = (int) Math.floor(Math.random() * amount); MapleCharacter chrApp = applyfrom.getMap().getCharacterById(opposition.getMemberByPos(randd).getId()); if (chrApp != null && chrApp.getMap().isCPQMap()) { @@ -1132,16 +1133,7 @@ public class MapleStatEffect { } } else if (cureDebuffs.size() > 0) { // by Drago-Dragohe4rt for (final MapleDisease debuff : cureDebuffs) { - if (applyfrom.getParty() != null) { - for (MaplePartyCharacter mpc : applyfrom.getParty().getPartyMembers()) { - MapleCharacter chr = mpc.getPlayer(); - if (chr != null) { - chr.dispelDebuff(debuff); - } - } - } else { - applyfrom.dispelDebuff(debuff); - } + applyfrom.dispelDebuff(debuff); } } else if (mobSkill > 0 && mobSkillLevel > 0) { MobSkill ms = MobSkillFactory.getMobSkill(mobSkill, mobSkillLevel); diff --git a/src/server/maps/MapleMap.java b/src/server/maps/MapleMap.java index a76e44bcad..32b3d0dab9 100644 --- a/src/server/maps/MapleMap.java +++ b/src/server/maps/MapleMap.java @@ -70,6 +70,7 @@ import net.server.services.type.ChannelServices; import net.server.services.task.channel.FaceExpressionService; import net.server.services.task.channel.MobMistService; import net.server.services.task.channel.OverallService; +import net.server.world.MapleParty; import net.server.world.World; import scripting.map.MapScriptManager; import server.MapleItemInformationProvider; @@ -2413,8 +2414,7 @@ public class MapleMap { return null; } - private void addPartyMemberInternal(MapleCharacter chr) { - int partyid = chr.getPartyId(); + private void addPartyMemberInternal(MapleCharacter chr, int partyid) { if (partyid == -1) { return; } @@ -2430,8 +2430,7 @@ public class MapleMap { } } - private void removePartyMemberInternal(MapleCharacter chr) { - int partyid = chr.getPartyId(); + private void removePartyMemberInternal(MapleCharacter chr, int partyid) { if (partyid == -1) { return; } @@ -2446,19 +2445,19 @@ public class MapleMap { } } - public void addPartyMember(MapleCharacter chr) { + public void addPartyMember(MapleCharacter chr, int partyid) { chrWLock.lock(); try { - addPartyMemberInternal(chr); + addPartyMemberInternal(chr, partyid); } finally { chrWLock.unlock(); } } - public void removePartyMember(MapleCharacter chr) { + public void removePartyMember(MapleCharacter chr, int partyid) { chrWLock.lock(); try { - removePartyMemberInternal(chr); + removePartyMemberInternal(chr, partyid); } finally { chrWLock.unlock(); } @@ -2475,12 +2474,15 @@ public class MapleMap { public void addPlayer(final MapleCharacter chr) { int chrSize; + MapleParty party = chr.getParty(); chrWLock.lock(); try { characters.add(chr); chrSize = characters.size(); - addPartyMemberInternal(chr); + if (party != null && party.getMemberById(chr.getId()) != null) { + addPartyMemberInternal(chr, party.getId()); + } itemMonitorTimeout = 1; } finally { chrWLock.unlock(); @@ -2810,9 +2812,13 @@ public class MapleMap { service.unregisterFaceExpression(mapid, chr); chr.unregisterChairBuff(); + MapleParty party = chr.getParty(); chrWLock.lock(); try { - removePartyMemberInternal(chr); + if (party != null && party.getMemberById(chr.getId()) != null) { + removePartyMemberInternal(chr, party.getId()); + } + characters.remove(chr); } finally { chrWLock.unlock(); @@ -3559,7 +3565,7 @@ public class MapleMap { @Override public void run() { - reactor.lockReactor(); + reactor.hitLockReactor(); try { if(reactor.getReactorType() == 100) { if (reactor.getShouldCollect() == true && mapitem != null && mapitem == getMapObject(mapitem.getObjectId())) { @@ -3603,7 +3609,7 @@ public class MapleMap { } } } finally { - reactor.unlockReactor(); + reactor.hitUnlockReactor(); } } } diff --git a/src/server/maps/MapleMapFactory.java b/src/server/maps/MapleMapFactory.java index d98158e6c6..dd483131d2 100644 --- a/src/server/maps/MapleMapFactory.java +++ b/src/server/maps/MapleMapFactory.java @@ -274,10 +274,10 @@ public class MapleMapFactory { MapleData mcData = mapData.getChildByPath("monsterCarnival"); if (mcData != null) { map.setDeathCP(MapleDataTool.getIntConvert("deathCP", mcData, 0)); - map.setMaxMobs(MapleDataTool.getIntConvert("mobGenMax", mcData, Integer.MAX_VALUE)); // thanks Atoot for noticing CPQ1 bf. 3 & 4 not accepting spawns due to undefined limits + map.setMaxMobs(MapleDataTool.getIntConvert("mobGenMax", mcData, 20)); // thanks Atoot for noticing CPQ1 bf. 3 & 4 not accepting spawns due to undefined limits, Lame for noticing a need to cap mob spawns even on such undefined limits map.setTimeDefault(MapleDataTool.getIntConvert("timeDefault", mcData, 0)); map.setTimeExpand(MapleDataTool.getIntConvert("timeExpand", mcData, 0)); - map.setMaxReactors(MapleDataTool.getIntConvert("guardianGenMax", mcData, Integer.MAX_VALUE)); + map.setMaxReactors(MapleDataTool.getIntConvert("guardianGenMax", mcData, 16)); MapleData guardianGenData = mcData.getChildByPath("guardianGenPos"); for (MapleData node : guardianGenData.getChildren()) { GuardianSpawnPoint pt = new GuardianSpawnPoint(new Point(MapleDataTool.getIntConvert("x", node), MapleDataTool.getIntConvert("y", node))); diff --git a/src/server/maps/MapleReactor.java b/src/server/maps/MapleReactor.java index 6ec657c0a6..0202127f7e 100644 --- a/src/server/maps/MapleReactor.java +++ b/src/server/maps/MapleReactor.java @@ -86,6 +86,16 @@ public class MapleReactor extends AbstractMapleMapObject { public void unlockReactor() { reactorLock.unlock(); } + + public void hitLockReactor() { + hitLock.lock(); + reactorLock.lock(); + } + + public void hitUnlockReactor() { + reactorLock.unlock(); + hitLock.unlock(); + } public void setState(byte state) { this.state = state; diff --git a/src/server/partyquest/MapleCarnivalFactory.java b/src/server/partyquest/MapleCarnivalFactory.java index 7f006f1714..c0c93884c1 100644 --- a/src/server/partyquest/MapleCarnivalFactory.java +++ b/src/server/partyquest/MapleCarnivalFactory.java @@ -59,7 +59,7 @@ public class MapleCarnivalFactory { if (multi) { return skills.get(multiTargetedSkills.get((int) (Math.random() * multiTargetedSkills.size()))); } else { - return skills.get(multiTargetedSkills.get((int) (Math.random() * multiTargetedSkills.size()))); + return skills.get(singleTargetedSkills.get((int) (Math.random() * singleTargetedSkills.size()))); } } diff --git a/src/server/quest/MapleQuest.java b/src/server/quest/MapleQuest.java index ab6914542b..73f08f5ed5 100644 --- a/src/server/quest/MapleQuest.java +++ b/src/server/quest/MapleQuest.java @@ -305,16 +305,20 @@ public class MapleQuest { for (MapleQuestAction a : acts) { a.run(chr, selection); } + if (!this.hasNextQuestAction()) { + chr.announceUpdateQuest(MapleCharacter.DelayedQuestUpdate.INFO, chr.getQuest(this)); + } } } public void reset(MapleCharacter chr) { - chr.updateQuestStatus(new MapleQuestStatus(this, MapleQuestStatus.Status.NOT_STARTED)); + MapleQuestStatus newStatus = new MapleQuestStatus(this, MapleQuestStatus.Status.NOT_STARTED); + chr.updateQuestStatus(newStatus); } - public void forfeit(MapleCharacter chr) { + public boolean forfeit(MapleCharacter chr) { if (!chr.getQuest(this).getStatus().equals(Status.STARTED)) { - return; + return false; } if (timeLimit > 0) { chr.announce(MaplePacketCreator.removeQuestTimeLimit(id)); @@ -322,6 +326,7 @@ public class MapleQuest { MapleQuestStatus newStatus = new MapleQuestStatus(this, MapleQuestStatus.Status.NOT_STARTED); newStatus.setForfeited(chr.getQuest(this).getForfeited() + 1); chr.updateQuestStatus(newStatus); + return true; } public boolean forceStart(MapleCharacter chr, int npc) { @@ -584,7 +589,7 @@ public class MapleQuest { } public boolean restoreLostItem(MapleCharacter chr, int itemid) { - if (chr.getQuest(this).equals(MapleQuestStatus.Status.STARTED)) { + if (chr.getQuest(this).getStatus().equals(MapleQuestStatus.Status.STARTED)) { ItemAction itemAct = (ItemAction) startActs.get(MapleQuestActionType.ITEM); if (itemAct != null) { return itemAct.restoreLostItem(chr, itemid); @@ -620,6 +625,13 @@ public class MapleQuest { } } + public boolean hasNextQuestAction() { + Map acts = completeActs; + MapleQuestAction mqa = acts.get(MapleQuestActionType.NEXTQUEST); + + return mqa != null; + } + public String getName() { return name; } diff --git a/src/server/quest/actions/FameAction.java b/src/server/quest/actions/FameAction.java index aee2b04298..e37b88a1be 100644 --- a/src/server/quest/actions/FameAction.java +++ b/src/server/quest/actions/FameAction.java @@ -22,12 +22,10 @@ package server.quest.actions; import client.MapleCharacter; -import client.MapleStat; import provider.MapleData; import provider.MapleDataTool; import server.quest.MapleQuest; import server.quest.MapleQuestActionType; -import tools.MaplePacketCreator; /** * diff --git a/src/server/quest/actions/ItemAction.java b/src/server/quest/actions/ItemAction.java index aa8b696a45..15b69c64fc 100644 --- a/src/server/quest/actions/ItemAction.java +++ b/src/server/quest/actions/ItemAction.java @@ -24,7 +24,6 @@ package server.quest.actions; import client.MapleCharacter; import client.MapleClient; import client.inventory.Item; -import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; import constants.inventory.ItemConstants; import java.util.ArrayList; diff --git a/src/server/quest/actions/MapleQuestAction.java b/src/server/quest/actions/MapleQuestAction.java index db361fb120..7dfd57f2bd 100644 --- a/src/server/quest/actions/MapleQuestAction.java +++ b/src/server/quest/actions/MapleQuestAction.java @@ -19,7 +19,6 @@ package server.quest.actions; import client.MapleCharacter; -import client.MapleQuestStatus; import provider.MapleData; import server.quest.MapleQuest; import server.quest.MapleQuestActionType; diff --git a/wz/Quest.wz/Check.img.xml b/wz/Quest.wz/Check.img.xml index f94af3a935..25900a598e 100644 --- a/wz/Quest.wz/Check.img.xml +++ b/wz/Quest.wz/Check.img.xml @@ -50201,8 +50201,6 @@ - - diff --git a/wz/Skill.wz/MobSkill.img.xml b/wz/Skill.wz/MobSkill.img.xml index 49011b15d9..fdd8ed5669 100644 --- a/wz/Skill.wz/MobSkill.img.xml +++ b/wz/Skill.wz/MobSkill.img.xml @@ -13724,12 +13724,12 @@ - - - - - - + + + + + +