diff --git a/build/built-jar.properties b/build/built-jar.properties index 7311569e8c..5ea7e1c439 100644 --- a/build/built-jar.properties +++ b/build/built-jar.properties @@ -1,4 +1,4 @@ -#Fri, 11 Aug 2017 12:31:17 -0300 +#Wed, 16 Aug 2017 14:03:06 -0300 C\:\\Nexon\\MapleSolaxia\\MapleSolaxiaV2= diff --git a/build/classes/client/MapleCharacter$10.class b/build/classes/client/MapleCharacter$10.class index 9b7a894adb..cee02c826f 100644 Binary files a/build/classes/client/MapleCharacter$10.class and b/build/classes/client/MapleCharacter$10.class differ diff --git a/build/classes/client/MapleCharacter$11.class b/build/classes/client/MapleCharacter$11.class index 3f9e7d9232..1a58dcba63 100644 Binary files a/build/classes/client/MapleCharacter$11.class and b/build/classes/client/MapleCharacter$11.class differ diff --git a/build/classes/client/MapleCharacter$12.class b/build/classes/client/MapleCharacter$12.class index c4b23428aa..6e26f9a30b 100644 Binary files a/build/classes/client/MapleCharacter$12.class and b/build/classes/client/MapleCharacter$12.class differ diff --git a/build/classes/client/MapleCharacter$13.class b/build/classes/client/MapleCharacter$13.class index 3fce9478df..9b4b1b71f1 100644 Binary files a/build/classes/client/MapleCharacter$13.class and b/build/classes/client/MapleCharacter$13.class differ diff --git a/build/classes/client/MapleCharacter$14.class b/build/classes/client/MapleCharacter$14.class index 8e056a79aa..d9e66b9308 100644 Binary files a/build/classes/client/MapleCharacter$14.class and b/build/classes/client/MapleCharacter$14.class differ diff --git a/build/classes/client/MapleCharacter$15.class b/build/classes/client/MapleCharacter$15.class index ec174e4dde..3caa0e3237 100644 Binary files a/build/classes/client/MapleCharacter$15.class and b/build/classes/client/MapleCharacter$15.class differ diff --git a/build/classes/client/MapleCharacter$16.class b/build/classes/client/MapleCharacter$16.class index 04706d3dac..a749b2ffdb 100644 Binary files a/build/classes/client/MapleCharacter$16.class and b/build/classes/client/MapleCharacter$16.class differ diff --git a/build/classes/client/MapleCharacter$17.class b/build/classes/client/MapleCharacter$17.class index 5a3f33b882..81358aab12 100644 Binary files a/build/classes/client/MapleCharacter$17.class and b/build/classes/client/MapleCharacter$17.class differ diff --git a/build/classes/client/MapleCharacter$18.class b/build/classes/client/MapleCharacter$18.class index 71efd409b3..388ca80bac 100644 Binary files a/build/classes/client/MapleCharacter$18.class and b/build/classes/client/MapleCharacter$18.class differ diff --git a/build/classes/client/MapleCharacter$19.class b/build/classes/client/MapleCharacter$19.class index c490aa03f2..09c784a034 100644 Binary files a/build/classes/client/MapleCharacter$19.class and b/build/classes/client/MapleCharacter$19.class differ diff --git a/build/classes/client/MapleCharacter$2.class b/build/classes/client/MapleCharacter$2.class index f42b1dcc60..58f8ac90fe 100644 Binary files a/build/classes/client/MapleCharacter$2.class and b/build/classes/client/MapleCharacter$2.class differ diff --git a/build/classes/client/MapleCharacter$20.class b/build/classes/client/MapleCharacter$20.class index b863df73a1..e28de2b650 100644 Binary files a/build/classes/client/MapleCharacter$20.class and b/build/classes/client/MapleCharacter$20.class differ diff --git a/build/classes/client/MapleCharacter$3.class b/build/classes/client/MapleCharacter$3.class index 328df5d9dc..099c1c0e30 100644 Binary files a/build/classes/client/MapleCharacter$3.class and b/build/classes/client/MapleCharacter$3.class differ diff --git a/build/classes/client/MapleCharacter$4.class b/build/classes/client/MapleCharacter$4.class index 38444603a6..b90a570914 100644 Binary files a/build/classes/client/MapleCharacter$4.class and b/build/classes/client/MapleCharacter$4.class differ diff --git a/build/classes/client/MapleCharacter$5.class b/build/classes/client/MapleCharacter$5.class index f202f61729..1fb0f7f8b0 100644 Binary files a/build/classes/client/MapleCharacter$5.class and b/build/classes/client/MapleCharacter$5.class differ diff --git a/build/classes/client/MapleCharacter$6.class b/build/classes/client/MapleCharacter$6.class index 2cffab5245..145f1b5334 100644 Binary files a/build/classes/client/MapleCharacter$6.class and b/build/classes/client/MapleCharacter$6.class differ diff --git a/build/classes/client/MapleCharacter$7.class b/build/classes/client/MapleCharacter$7.class index de56774164..4ff6a6c8d1 100644 Binary files a/build/classes/client/MapleCharacter$7.class and b/build/classes/client/MapleCharacter$7.class differ diff --git a/build/classes/client/MapleCharacter$8.class b/build/classes/client/MapleCharacter$8.class index d1e984f74a..ba7192089d 100644 Binary files a/build/classes/client/MapleCharacter$8.class and b/build/classes/client/MapleCharacter$8.class differ diff --git a/build/classes/client/MapleCharacter$9.class b/build/classes/client/MapleCharacter$9.class index 83520f4307..cc4636d63e 100644 Binary files a/build/classes/client/MapleCharacter$9.class and b/build/classes/client/MapleCharacter$9.class differ diff --git a/build/classes/client/MapleCharacter$FameStatus.class b/build/classes/client/MapleCharacter$FameStatus.class index 0bc4699a53..4e7b2b52df 100644 Binary files a/build/classes/client/MapleCharacter$FameStatus.class and b/build/classes/client/MapleCharacter$FameStatus.class differ diff --git a/build/classes/client/MapleCharacter$MapleBuffStatValueHolder.class b/build/classes/client/MapleCharacter$MapleBuffStatValueHolder.class index ff3e2327b1..8c1f27df90 100644 Binary files a/build/classes/client/MapleCharacter$MapleBuffStatValueHolder.class and b/build/classes/client/MapleCharacter$MapleBuffStatValueHolder.class differ diff --git a/build/classes/client/MapleCharacter$MapleCoolDownValueHolder.class b/build/classes/client/MapleCharacter$MapleCoolDownValueHolder.class index 103dda5c50..67feccb01c 100644 Binary files a/build/classes/client/MapleCharacter$MapleCoolDownValueHolder.class and b/build/classes/client/MapleCharacter$MapleCoolDownValueHolder.class differ diff --git a/build/classes/client/MapleCharacter$SkillEntry.class b/build/classes/client/MapleCharacter$SkillEntry.class index 9f2d016036..9545bfb4d3 100644 Binary files a/build/classes/client/MapleCharacter$SkillEntry.class and b/build/classes/client/MapleCharacter$SkillEntry.class differ diff --git a/build/classes/client/MapleCharacter.class b/build/classes/client/MapleCharacter.class index 0b4f4b4d86..8fab864028 100644 Binary files a/build/classes/client/MapleCharacter.class and b/build/classes/client/MapleCharacter.class differ diff --git a/build/classes/client/MapleClient.class b/build/classes/client/MapleClient.class index c8daf85dc9..e3a5a1afbf 100644 Binary files a/build/classes/client/MapleClient.class and b/build/classes/client/MapleClient.class differ diff --git a/build/classes/client/command/Commands$1.class b/build/classes/client/command/Commands$1.class index cff43e3f86..0fa85b3271 100644 Binary files a/build/classes/client/command/Commands$1.class and b/build/classes/client/command/Commands$1.class differ diff --git a/build/classes/client/command/Commands.class b/build/classes/client/command/Commands.class index 9a450a951f..6ef0c37868 100644 Binary files a/build/classes/client/command/Commands.class and b/build/classes/client/command/Commands.class differ diff --git a/build/classes/client/inventory/Equip$1.class b/build/classes/client/inventory/Equip$1.class index f626cb9812..7bf6c14dc6 100644 Binary files a/build/classes/client/inventory/Equip$1.class and b/build/classes/client/inventory/Equip$1.class differ diff --git a/build/classes/client/inventory/Equip$ScrollResult.class b/build/classes/client/inventory/Equip$ScrollResult.class index fd818c1789..040f1fb976 100644 Binary files a/build/classes/client/inventory/Equip$ScrollResult.class and b/build/classes/client/inventory/Equip$ScrollResult.class differ diff --git a/build/classes/client/inventory/Equip$StatUpgrade.class b/build/classes/client/inventory/Equip$StatUpgrade.class index 4fdb1d4946..70c7d780ad 100644 Binary files a/build/classes/client/inventory/Equip$StatUpgrade.class and b/build/classes/client/inventory/Equip$StatUpgrade.class differ diff --git a/build/classes/client/inventory/Equip.class b/build/classes/client/inventory/Equip.class index e24f2e4576..084b16dedd 100644 Binary files a/build/classes/client/inventory/Equip.class and b/build/classes/client/inventory/Equip.class differ diff --git a/build/classes/constants/ServerConstants.class b/build/classes/constants/ServerConstants.class index 85c952ec4d..26baa4a7d4 100644 Binary files a/build/classes/constants/ServerConstants.class and b/build/classes/constants/ServerConstants.class differ diff --git a/build/classes/net/server/channel/handlers/GeneralChatHandler.class b/build/classes/net/server/channel/handlers/GeneralChatHandler.class index a029474f54..74486d2eea 100644 Binary files a/build/classes/net/server/channel/handlers/GeneralChatHandler.class and b/build/classes/net/server/channel/handlers/GeneralChatHandler.class differ diff --git a/build/classes/net/server/channel/handlers/UseItemHandler.class b/build/classes/net/server/channel/handlers/UseItemHandler.class index c51bd63006..e0dcc94650 100644 Binary files a/build/classes/net/server/channel/handlers/UseItemHandler.class and b/build/classes/net/server/channel/handlers/UseItemHandler.class differ diff --git a/build/classes/scripting/event/EventInstanceManager$3.class b/build/classes/scripting/event/EventInstanceManager$3.class index 008216a501..454389bfc6 100644 Binary files a/build/classes/scripting/event/EventInstanceManager$3.class and b/build/classes/scripting/event/EventInstanceManager$3.class differ diff --git a/build/classes/scripting/event/EventInstanceManager.class b/build/classes/scripting/event/EventInstanceManager.class index d3f5685bcf..35b8d9df15 100644 Binary files a/build/classes/scripting/event/EventInstanceManager.class and b/build/classes/scripting/event/EventInstanceManager.class differ diff --git a/build/classes/scripting/event/EventManager.class b/build/classes/scripting/event/EventManager.class index 9a8a6c3938..0ad88f128a 100644 Binary files a/build/classes/scripting/event/EventManager.class and b/build/classes/scripting/event/EventManager.class differ diff --git a/build/classes/scripting/reactor/ReactorActionManager$1.class b/build/classes/scripting/reactor/ReactorActionManager$1.class index d91aebff3f..325a8a0065 100644 Binary files a/build/classes/scripting/reactor/ReactorActionManager$1.class and b/build/classes/scripting/reactor/ReactorActionManager$1.class differ diff --git a/build/classes/scripting/reactor/ReactorActionManager$2.class b/build/classes/scripting/reactor/ReactorActionManager$2.class index 8b8825b906..d242047c25 100644 Binary files a/build/classes/scripting/reactor/ReactorActionManager$2.class and b/build/classes/scripting/reactor/ReactorActionManager$2.class differ diff --git a/build/classes/scripting/reactor/ReactorActionManager.class b/build/classes/scripting/reactor/ReactorActionManager.class index cde02d0c19..103d60ccbb 100644 Binary files a/build/classes/scripting/reactor/ReactorActionManager.class and b/build/classes/scripting/reactor/ReactorActionManager.class differ diff --git a/build/classes/server/MapleInventoryManipulator.class b/build/classes/server/MapleInventoryManipulator.class index 6243beaab3..2c31ffc838 100644 Binary files a/build/classes/server/MapleInventoryManipulator.class and b/build/classes/server/MapleInventoryManipulator.class differ diff --git a/build/classes/server/MapleItemInformationProvider$RewardItem.class b/build/classes/server/MapleItemInformationProvider$RewardItem.class index 9d55b0c8ca..2a3b667040 100644 Binary files a/build/classes/server/MapleItemInformationProvider$RewardItem.class and b/build/classes/server/MapleItemInformationProvider$RewardItem.class differ diff --git a/build/classes/server/MapleItemInformationProvider$scriptedItem.class b/build/classes/server/MapleItemInformationProvider$scriptedItem.class index 19b4aed669..e7f80b5d43 100644 Binary files a/build/classes/server/MapleItemInformationProvider$scriptedItem.class and b/build/classes/server/MapleItemInformationProvider$scriptedItem.class differ diff --git a/build/classes/server/MapleItemInformationProvider.class b/build/classes/server/MapleItemInformationProvider.class index ea4745fcd9..294ac70745 100644 Binary files a/build/classes/server/MapleItemInformationProvider.class and b/build/classes/server/MapleItemInformationProvider.class differ diff --git a/build/classes/server/MapleStatEffect.class b/build/classes/server/MapleStatEffect.class index 0880bf148c..056337374a 100644 Binary files a/build/classes/server/MapleStatEffect.class and b/build/classes/server/MapleStatEffect.class differ diff --git a/build/classes/server/maps/MapleDoor.class b/build/classes/server/maps/MapleDoor.class index c884928094..89afb5dbf4 100644 Binary files a/build/classes/server/maps/MapleDoor.class and b/build/classes/server/maps/MapleDoor.class differ diff --git a/build/classes/server/maps/MapleMap$1.class b/build/classes/server/maps/MapleMap$1.class index 790c202a54..99fbbef1fe 100644 Binary files a/build/classes/server/maps/MapleMap$1.class and b/build/classes/server/maps/MapleMap$1.class differ diff --git a/build/classes/server/maps/MapleMap$10.class b/build/classes/server/maps/MapleMap$10.class index 37ded8a47a..f64ae9e97f 100644 Binary files a/build/classes/server/maps/MapleMap$10.class and b/build/classes/server/maps/MapleMap$10.class differ diff --git a/build/classes/server/maps/MapleMap$11.class b/build/classes/server/maps/MapleMap$11.class index 3922c9d10d..40be89cfd8 100644 Binary files a/build/classes/server/maps/MapleMap$11.class and b/build/classes/server/maps/MapleMap$11.class differ diff --git a/build/classes/server/maps/MapleMap$12.class b/build/classes/server/maps/MapleMap$12.class index 32cb4069c9..d50ae39779 100644 Binary files a/build/classes/server/maps/MapleMap$12.class and b/build/classes/server/maps/MapleMap$12.class differ diff --git a/build/classes/server/maps/MapleMap$13.class b/build/classes/server/maps/MapleMap$13.class index a8ab525771..6d16aa16ad 100644 Binary files a/build/classes/server/maps/MapleMap$13.class and b/build/classes/server/maps/MapleMap$13.class differ diff --git a/build/classes/server/maps/MapleMap$14.class b/build/classes/server/maps/MapleMap$14.class index d221d204c7..c83b5ec594 100644 Binary files a/build/classes/server/maps/MapleMap$14.class and b/build/classes/server/maps/MapleMap$14.class differ diff --git a/build/classes/server/maps/MapleMap$15.class b/build/classes/server/maps/MapleMap$15.class index 29d70c2e65..a8c5da30ea 100644 Binary files a/build/classes/server/maps/MapleMap$15.class and b/build/classes/server/maps/MapleMap$15.class differ diff --git a/build/classes/server/maps/MapleMap$16.class b/build/classes/server/maps/MapleMap$16.class index a88fdd8db8..b1c7556c67 100644 Binary files a/build/classes/server/maps/MapleMap$16.class and b/build/classes/server/maps/MapleMap$16.class differ diff --git a/build/classes/server/maps/MapleMap$17.class b/build/classes/server/maps/MapleMap$17.class index 295148f495..a1ec45f6db 100644 Binary files a/build/classes/server/maps/MapleMap$17.class and b/build/classes/server/maps/MapleMap$17.class differ diff --git a/build/classes/server/maps/MapleMap$18.class b/build/classes/server/maps/MapleMap$18.class index 3a9ddd605b..3f7f3d8977 100644 Binary files a/build/classes/server/maps/MapleMap$18.class and b/build/classes/server/maps/MapleMap$18.class differ diff --git a/build/classes/server/maps/MapleMap$19.class b/build/classes/server/maps/MapleMap$19.class index c198c7f073..5cdb09a35d 100644 Binary files a/build/classes/server/maps/MapleMap$19.class and b/build/classes/server/maps/MapleMap$19.class differ diff --git a/build/classes/server/maps/MapleMap$2.class b/build/classes/server/maps/MapleMap$2.class index 5bb740faf3..02bff450c5 100644 Binary files a/build/classes/server/maps/MapleMap$2.class and b/build/classes/server/maps/MapleMap$2.class differ diff --git a/build/classes/server/maps/MapleMap$20.class b/build/classes/server/maps/MapleMap$20.class index 7757ed86a1..ec3e1aa759 100644 Binary files a/build/classes/server/maps/MapleMap$20.class and b/build/classes/server/maps/MapleMap$20.class differ diff --git a/build/classes/server/maps/MapleMap$21.class b/build/classes/server/maps/MapleMap$21.class index 907852ad1b..12e0dbcfb1 100644 Binary files a/build/classes/server/maps/MapleMap$21.class and b/build/classes/server/maps/MapleMap$21.class differ diff --git a/build/classes/server/maps/MapleMap$22.class b/build/classes/server/maps/MapleMap$22.class index 0f08e82e8d..944856d5e5 100644 Binary files a/build/classes/server/maps/MapleMap$22.class and b/build/classes/server/maps/MapleMap$22.class differ diff --git a/build/classes/server/maps/MapleMap$23.class b/build/classes/server/maps/MapleMap$23.class index c1eff523ed..d7c623e376 100644 Binary files a/build/classes/server/maps/MapleMap$23.class and b/build/classes/server/maps/MapleMap$23.class differ diff --git a/build/classes/server/maps/MapleMap$24.class b/build/classes/server/maps/MapleMap$24.class index 9d26c31856..c6e7cf5114 100644 Binary files a/build/classes/server/maps/MapleMap$24.class and b/build/classes/server/maps/MapleMap$24.class differ diff --git a/build/classes/server/maps/MapleMap$25.class b/build/classes/server/maps/MapleMap$25.class index c8d83c6712..bc85539ba5 100644 Binary files a/build/classes/server/maps/MapleMap$25.class and b/build/classes/server/maps/MapleMap$25.class differ diff --git a/build/classes/server/maps/MapleMap$26.class b/build/classes/server/maps/MapleMap$26.class index cdbb750bce..241c16a95e 100644 Binary files a/build/classes/server/maps/MapleMap$26.class and b/build/classes/server/maps/MapleMap$26.class differ diff --git a/build/classes/server/maps/MapleMap$27.class b/build/classes/server/maps/MapleMap$27.class index 37f7141fbc..c821ff4e41 100644 Binary files a/build/classes/server/maps/MapleMap$27.class and b/build/classes/server/maps/MapleMap$27.class differ diff --git a/build/classes/server/maps/MapleMap$28.class b/build/classes/server/maps/MapleMap$28.class index e2c284b3bd..5c5366f058 100644 Binary files a/build/classes/server/maps/MapleMap$28.class and b/build/classes/server/maps/MapleMap$28.class differ diff --git a/build/classes/server/maps/MapleMap$29$1.class b/build/classes/server/maps/MapleMap$29$1.class index 3c1bcd00e5..2bfa533a11 100644 Binary files a/build/classes/server/maps/MapleMap$29$1.class and b/build/classes/server/maps/MapleMap$29$1.class differ diff --git a/build/classes/server/maps/MapleMap$29.class b/build/classes/server/maps/MapleMap$29.class index a55f375b0f..6ada0fa16b 100644 Binary files a/build/classes/server/maps/MapleMap$29.class and b/build/classes/server/maps/MapleMap$29.class differ diff --git a/build/classes/server/maps/MapleMap$3.class b/build/classes/server/maps/MapleMap$3.class index 0fb597c1aa..b75af0bd03 100644 Binary files a/build/classes/server/maps/MapleMap$3.class and b/build/classes/server/maps/MapleMap$3.class differ diff --git a/build/classes/server/maps/MapleMap$30.class b/build/classes/server/maps/MapleMap$30.class index c063b72f3f..15fc3ba638 100644 Binary files a/build/classes/server/maps/MapleMap$30.class and b/build/classes/server/maps/MapleMap$30.class differ diff --git a/build/classes/server/maps/MapleMap$4.class b/build/classes/server/maps/MapleMap$4.class index 2126da4576..79e7c02890 100644 Binary files a/build/classes/server/maps/MapleMap$4.class and b/build/classes/server/maps/MapleMap$4.class differ diff --git a/build/classes/server/maps/MapleMap$5.class b/build/classes/server/maps/MapleMap$5.class index c419e7398f..0422437ebc 100644 Binary files a/build/classes/server/maps/MapleMap$5.class and b/build/classes/server/maps/MapleMap$5.class differ diff --git a/build/classes/server/maps/MapleMap$6.class b/build/classes/server/maps/MapleMap$6.class index 01bd01c2a9..084b4527bf 100644 Binary files a/build/classes/server/maps/MapleMap$6.class and b/build/classes/server/maps/MapleMap$6.class differ diff --git a/build/classes/server/maps/MapleMap$7.class b/build/classes/server/maps/MapleMap$7.class index 8f059461d8..7eaeecc36b 100644 Binary files a/build/classes/server/maps/MapleMap$7.class and b/build/classes/server/maps/MapleMap$7.class differ diff --git a/build/classes/server/maps/MapleMap$8.class b/build/classes/server/maps/MapleMap$8.class index bc66f24371..049106adb9 100644 Binary files a/build/classes/server/maps/MapleMap$8.class and b/build/classes/server/maps/MapleMap$8.class differ diff --git a/build/classes/server/maps/MapleMap$9.class b/build/classes/server/maps/MapleMap$9.class index 282d3dc875..8104d0dc07 100644 Binary files a/build/classes/server/maps/MapleMap$9.class and b/build/classes/server/maps/MapleMap$9.class differ diff --git a/build/classes/server/maps/MapleMap$ActivateItemReactor$1.class b/build/classes/server/maps/MapleMap$ActivateItemReactor$1.class index 144099d1e4..ccba4e8fd6 100644 Binary files a/build/classes/server/maps/MapleMap$ActivateItemReactor$1.class and b/build/classes/server/maps/MapleMap$ActivateItemReactor$1.class differ diff --git a/build/classes/server/maps/MapleMap$ActivateItemReactor.class b/build/classes/server/maps/MapleMap$ActivateItemReactor.class index 50fc48dcb7..3d42c445a6 100644 Binary files a/build/classes/server/maps/MapleMap$ActivateItemReactor.class and b/build/classes/server/maps/MapleMap$ActivateItemReactor.class differ diff --git a/build/classes/server/maps/MapleMap$ExpireMapItemJob.class b/build/classes/server/maps/MapleMap$ExpireMapItemJob.class index ecc495f178..82ea60a696 100644 Binary files a/build/classes/server/maps/MapleMap$ExpireMapItemJob.class and b/build/classes/server/maps/MapleMap$ExpireMapItemJob.class differ diff --git a/build/classes/server/maps/MapleMap.class b/build/classes/server/maps/MapleMap.class index 19dd863c62..77cad7ac6c 100644 Binary files a/build/classes/server/maps/MapleMap.class and b/build/classes/server/maps/MapleMap.class differ diff --git a/build/classes/server/maps/MapleMapFactory.class b/build/classes/server/maps/MapleMapFactory.class index f0bf091a62..d2b770fadb 100644 Binary files a/build/classes/server/maps/MapleMapFactory.class and b/build/classes/server/maps/MapleMapFactory.class differ diff --git a/dist/MapleSolaxia.jar b/dist/MapleSolaxia.jar index 71dec0ee41..e21bb3d05e 100644 Binary files a/dist/MapleSolaxia.jar and b/dist/MapleSolaxia.jar differ diff --git a/docs/mychanges_ptbr.txt b/docs/mychanges_ptbr.txt index 3c33402331..daf1fd7960 100644 --- a/docs/mychanges_ptbr.txt +++ b/docs/mychanges_ptbr.txt @@ -438,4 +438,17 @@ Resolvido problema com GMs de level alto recebendo bloqueio MWLB. 07 - 10 Agosto 2017, Adicionada Magatia PQ. Resolvido bug no Dojo impedindo mesma party de tentar entrar de novo se saiu sem acabá-la. -Resolvido bugs nos scripts de 2nd job. \ No newline at end of file +Resolvido bugs nos scripts de 2nd job. + +14 Agosto 2017, +Resolvidos alguns bugs em alguns NPCs e mapa de Mu Lung. +Resolvido algumas inconsistências entre MapleCharacter <-> MaplePartyCharacter, ocasionando infos erroneas em Guilds. + +15 Agosto 2017, +Rebalanceado ganho de equip exp. +Atualizado amostra na tela de lvup stats de equips para os jogadores. +Reactors agora dropam itens de quest somente se o player possui a mesma ativada. + +16 Agosto 2017, +Consertado corrente de quests da Temple of Time. Agora Pink Bean é alcancável. +Adicionadas algumas chairs ao SQL. \ No newline at end of file diff --git a/docs/todo.txt b/docs/todo.txt index c5de8c33f0..ada33b571c 100644 --- a/docs/todo.txt +++ b/docs/todo.txt @@ -21,9 +21,7 @@ ToDo / Missing features list: --------------------------- ** Basic PQs ** -- Zakum Party Quest - Amoria Party Quest -- Magatia Party Quest --------------------------- @@ -51,8 +49,6 @@ ToDo / Missing features list: --------------------------- ** GM/ADMIN ** -- Create a Gm/admin command list -- Set level for Gm and Admin commands. Example: Player = 0 / Donator = 1 / JuniorGm = 2 / Gm = 3 / SuperGm = 4 / Developer = 5 / Admin = 6 --------------------------- ==================================== \ No newline at end of file diff --git a/nbproject/private/private.xml b/nbproject/private/private.xml index 2aeac23582..928890d149 100644 --- a/nbproject/private/private.xml +++ b/nbproject/private/private.xml @@ -3,7 +3,11 @@ - file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/scripting/event/EventInstanceManager.java + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/client/inventory/Equip.java + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/client/command/Commands.java + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/sql/db_database.sql + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/constants/ServerConstants.java + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/sql/db_shopupdate.sql diff --git a/scripts/event/Boats.js b/scripts/event/Boats.js index 583cd2b471..89da243556 100644 --- a/scripts/event/Boats.js +++ b/scripts/event/Boats.js @@ -44,8 +44,8 @@ function scheduleNew() { function stopentry() { em.setProperty("entry","false"); - Orbis_Boat_Cabin.resetReactors(); //boxes - Ellinia_Boat_Cabin.resetReactors(); + Orbis_Boat_Cabin.clearMapObjects(); //boxes + Ellinia_Boat_Cabin.clearMapObjects(); } function takeoff() { diff --git a/scripts/event/Hak.js b/scripts/event/Hak.js index e99036f018..8ef63fda16 100644 --- a/scripts/event/Hak.js +++ b/scripts/event/Hak.js @@ -10,9 +10,7 @@ var map; var timeOnRide = 60; //Seconds var onRide; -function init() { - -} +function init() {} function setup() { var eim = em.newInstance("Hak_" + + em.getProperty("player")); diff --git a/scripts/npc/2091006.js b/scripts/npc/2091006.js index bd83ffc017..929dc9ec1f 100644 --- a/scripts/npc/2091006.js +++ b/scripts/npc/2091006.js @@ -53,7 +53,7 @@ function action(mode, type, selection) { if (mode == 0) { cm.sendNext("#b(As I took my hand off the bulletin board, the mysterious energy that was covering my disappeared as well.)"); } else { - cm.getPlayer().saveLocation("DOJO"); + cm.getPlayer().saveLocation("MIRROR"); cm.warp(925020000, 4); } cm.dispose(); diff --git a/scripts/npc/2103000.js b/scripts/npc/2103000.js index d259008ad4..5458677a55 100644 --- a/scripts/npc/2103000.js +++ b/scripts/npc/2103000.js @@ -41,7 +41,7 @@ function action(mode, type, selection) { if(cm.isQuestStarted(3900) && cm.getPlayer().getQuestInfo(3900) != 5) { cm.sendOk("#b(You drink the water from the oasis and feel refreshed.)", 2); //TODO: Update quest progress. - cm.getPlayer().updateQuestInfo(3900, 5); + cm.getPlayer().updateQuestInfo(3900, "5"); } cm.dispose(); } diff --git a/scripts/npc/9201143.js b/scripts/npc/9201143.js index 0258f48c65..b02b59cf8a 100644 --- a/scripts/npc/9201143.js +++ b/scripts/npc/9201143.js @@ -1,249 +1,11 @@ -/* @Author SharpAceX / Ronan +/* @Author SharpAceX Name: Steward Map(s): Foyer - Info: Steward / Commands + Info: Steward NPC ID: 9201143.js */ -var status; - -var comm_lv6 = []; -var desc_lv6 = []; - -var comm_lv5 = []; -var desc_lv5 = []; - -var comm_lv4 = []; -var desc_lv4 = []; - -var comm_lv3 = []; -var desc_lv3 = []; - -var comm_lv2 = []; -var desc_lv2 = []; - -var comm_lv1 = []; -var desc_lv1 = []; - -var levels = ["Common", "Donator", "JrGM", "GM", "SuperGM", "Developer", "Admin"]; - -var comm_cursor, desc_cursor; - -function addCommand(comm, desc) { - comm_cursor.add(comm); - desc_cursor.add(desc); -} - -function writeSolaxiaCommandsLv6() { //Admin - comm_cursor = comm_lv6; - desc_cursor = desc_lv6; - - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); -} - -function writeSolaxiaCommandsLv5() { //Developer - comm_cursor = comm_lv5; - desc_cursor = desc_lv5; - - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); -} - -function writeSolaxiaCommandsLv4() { //SuperGM - comm_cursor = comm_lv4; - desc_cursor = desc_lv4; - - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); -} - -function writeSolaxiaCommandsLv3() { //GM - comm_cursor = comm_lv3; - desc_cursor = desc_lv3; - - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); - addCommand("", ""); -} - -function writeSolaxiaCommandsLv2() { //JrGM - comm_cursor = comm_lv2; - desc_cursor = desc_lv2; - - addCommand("hide", ""); - addCommand("unhide", ""); - addCommand("sp", ""); - addCommand("ap", ""); - addCommand("empowerme", ""); - addCommand("buffmap", ""); - addCommand("buff", ""); - addCommand("bomb", ""); - addCommand("dc", ""); - addCommand("cleardrops", ""); - addCommand("clearslot", ""); - addCommand("warp", ""); - addCommand("warpto", ""); - addCommand("summon", ""); - addCommand("gmshop", ""); - addCommand("heal", ""); - addCommand("item", ""); - addCommand("level", ""); - addCommand("levelpro", ""); - addCommand("setstat", ""); - addCommand("maxstat", ""); - addCommand("maxskill", ""); - addCommand("mesos", ""); - addCommand("search", ""); - addCommand("jail", ""); - addCommand("unjail", ""); - addCommand("unbug", ""); -} - -function writeSolaxiaCommandsLv1() { //Donator - comm_cursor = comm_lv1; - desc_cursor = desc_lv1; - - addCommand("buffme", ""); - addCommand("goto", ""); - addCommand("recharge", ""); - addCommand("whereami", ""); -} - -function writeSolaxiaCommandsLv0() { //Common - comm_cursor = comm_lv0; - desc_cursor = desc_lv0; - - addCommand("commands", ""); - addCommand("time", ""); - addCommand("staff", ""); - addCommand("uptime", ""); - addCommand("gacha", ""); - addCommand("whatdropsfrom", ""); - addCommand("whodrops", ""); - addCommand("dispose", ""); - addCommand("equiplv", ""); - addCommand("rates", ""); - addCommand("online", ""); - addCommand("gm", ""); - addCommand("bug", ""); - addCommand("joinevent", ""); - addCommand("leaveevent", ""); - addCommand("bosshp", ""); - addCommand("ranks", ""); - - -} - -function writeSolaxiaCommands() { - writeSolaxiaCommandsLv0(); //Common - writeSolaxiaCommandsLv1(); //Donator - writeSolaxiaCommandsLv2(); //JrGM - writeSolaxiaCommandsLv3(); //GM - writeSolaxiaCommandsLv4(); //Developer - writeSolaxiaCommandsLv5(); //SuperGM - writeSolaxiaCommandsLv6(); //Admin -} - function start() { - if(cm.getPlayer.getCS()) { - writeSolaxiaCommands(); - action(1, 0, 0); - } else { - cm.sendNext("At your service, my friend."); - cm.dispose(); - } -} - -function action(mode, type, selection) { - if (mode == -1) { - cm.dispose(); - } else { - if (mode == 0 && status == 0) { - cm.dispose(); - return; - } - if (mode == 1) - status++; - else - status--; - - if (status == 0) { - var sendStr = "There are all available commands for you:\r\n\r\n#b"; - for(var i = 0; i < cm.getGmLevel(); i++) { - sendStr += "#L" + i + "#" + levels[i] + "#l\r\n"; - } - - cm.sendSimple(sendStr); - } else if(status == 1) { - var lvComm, lvDesc; - - if(selection == 0) { - lvComm = comm_lv1; - lvDesc = desc_lv1; - } else if(selection == 1) { - lvComm = comm_lv2; - lvDesc = desc_lv2; - } else if(selection == 2) { - lvComm = comm_lv3; - lvDesc = desc_lv3; - } else if(selection == 3) { - lvComm = comm_lv4; - lvDesc = desc_lv4; - } else if(selection == 4) { - lvComm = comm_lv5; - lvDesc = desc_lv5; - } else { - lvComm = comm_lv6; - lvDesc = desc_lv6; - } - - var sendStr = "The following commands are available for #b" + levels[selection] + "#k:\r\n\r\n"; - for(var i = 0; i < lvComm.length; i++) { - sendStr += " #L" + i + "# " + lvComm[i] + " - " + lvDesc[i]; - sendStr += "#l\r\n"; - } - - cm.sendPrev(sendStr); - } - } + cm.sendNext("At your service, my friend."); + cm.dispose(); } diff --git a/scripts/npc/commands.js b/scripts/npc/commands.js new file mode 100644 index 0000000000..669ec493a5 --- /dev/null +++ b/scripts/npc/commands.js @@ -0,0 +1,288 @@ +/* @Author Ronan + * @Author Vcoc + Name: Steward + Map(s): Foyer + Info: Commands + Script: commands.js +*/ + +/* +Please, keep the commands organized! +*/ + +var status; + +var comm_lv6 = []; +var desc_lv6 = []; + +var comm_lv5 = []; +var desc_lv5 = []; + +var comm_lv4 = []; +var desc_lv4 = []; + +var comm_lv3 = []; +var desc_lv3 = []; + +var comm_lv2 = []; +var desc_lv2 = []; + +var comm_lv1 = []; +var desc_lv1 = []; + +var comm_lv0 = []; +var desc_lv0 = []; + +var levels = ["Common", "Donator", "JrGM", "GM", "SuperGM", "Developer", "Admin"]; + +var comm_cursor, desc_cursor; + +function addCommand(comm, desc) { + comm_cursor.push(comm); + desc_cursor.push(desc); +} + +function writeSolaxiaCommandsLv6() { //Admin + comm_cursor = comm_lv6; + desc_cursor = desc_lv6; + + addCommand("warpworld", ""); + addCommand("saveall", ""); + addCommand("dcall", ""); + addCommand("mapplayers", ""); + addCommand("getacc", ""); + addCommand("shutdown", ""); + addCommand("shutdownnow", ""); + addCommand("clearquestcache", ""); + addCommand("clearquest", ""); +} + +function writeSolaxiaCommandsLv5() { //Developer + comm_cursor = comm_lv5; + desc_cursor = desc_lv5; + + addCommand("debugmonster", ""); + addCommand("debugpacket", ""); + addCommand("debugnearestportal", ""); + addCommand("debugnearestspawnpoint", ""); + addCommand("debugpos", ""); + addCommand("debugmap", ""); + addCommand("debugmobsp", ""); + addCommand("debugevent", ""); + addCommand("debugareas", ""); + addCommand("debugreactors", ""); + addCommand("debugcoupons", ""); + addCommand("debugplayercoupons", ""); + addCommand("debugtimer", ""); +} + +function writeSolaxiaCommandsLv4() { //SuperGM + comm_cursor = comm_lv4; + desc_cursor = desc_lv4; + + addCommand("servermessage", ""); + addCommand("proitem", ""); + addCommand("seteqstat", ""); + addCommand("exprate", ""); + addCommand("mesorate", ""); + addCommand("droprate", ""); + addCommand("bossdroprate", ""); + addCommand("itemvac", ""); + addCommand("forcevac", ""); + addCommand("zakum", ""); + addCommand("horntail", ""); + addCommand("pinkbean", ""); + addCommand("pap", ""); + addCommand("pianus", ""); + addCommand("playernpc", ""); + addCommand("face", ""); + addCommand("hair", ""); +} + +function writeSolaxiaCommandsLv3() { //GM + comm_cursor = comm_lv3; + desc_cursor = desc_lv3; + + addCommand("spawn", ""); + addCommand("mutemap", ""); + addCommand("checkdmg", ""); + addCommand("inmap", ""); + addCommand("reloadevents", ""); + addCommand("reloaddrops", ""); + addCommand("reloadportals", ""); + addCommand("reloadmap", ""); + addCommand("hpmp", ""); + addCommand("music", ""); + addCommand("monitor", ""); + addCommand("monitors", ""); + addCommand("ignore", ""); + addCommand("ignored", ""); + addCommand("pos", ""); + addCommand("togglecoupon", ""); + addCommand("chat", ""); + addCommand("fame", ""); + addCommand("giftnx", ""); //Ronan, muda esse comando para "givenx", faz mais sentido. XD + addCommand("vp", ""); //Ronan, muda esse comando para "givevp", faz mais sentido. XD + addCommand("id", ""); + addCommand("expeds", ""); + addCommand("kill", ""); + addCommand("seed", ""); + addCommand("killall", ""); + addCommand("notice", ""); + addCommand("rip", ""); + addCommand("openportal", ""); + addCommand("closeportals", ""); + addCommand("pe", ""); + addCommand("startevent", ""); + addCommand("endevent", ""); + addCommand("online2", ""); + addCommand("warpsnowball", ""); + addCommand("ban", ""); + addCommand("unban", ""); + addCommand("healmap", ""); + addCommand("healperson", ""); + addCommand("hurt", ""); + addCommand("killmap", ""); + addCommand("night", ""); + addCommand("npc", ""); +} + +function writeSolaxiaCommandsLv2() { //JrGM + comm_cursor = comm_lv2; + desc_cursor = desc_lv2; + + addCommand("hide", ""); + addCommand("unhide", ""); + addCommand("sp", ""); + addCommand("ap", ""); + addCommand("empowerme", ""); + addCommand("buffmap", ""); + addCommand("buff", ""); + addCommand("bomb", ""); + addCommand("dc", ""); + addCommand("cleardrops", ""); + addCommand("clearslot", ""); + addCommand("warp", ""); + addCommand("warpto", ""); + addCommand("warphere", ""); + addCommand("gmshop", ""); + addCommand("heal", ""); + addCommand("item", ""); + addCommand("level", ""); + addCommand("levelpro", ""); + addCommand("setstat", ""); + addCommand("maxstat", ""); + addCommand("maxskill", ""); + addCommand("mesos", ""); + addCommand("search", ""); + addCommand("jail", ""); + addCommand("unjail", ""); + addCommand("job", ""); + addCommand("unbug", ""); +} + +function writeSolaxiaCommandsLv1() { //Donator + comm_cursor = comm_lv1; + desc_cursor = desc_lv1; + + addCommand("buffme", ""); + addCommand("goto", ""); + addCommand("recharge", ""); + addCommand("whereami", ""); +} + +function writeSolaxiaCommandsLv0() { //Common + comm_cursor = comm_lv0; + desc_cursor = desc_lv0; + + addCommand("commands", ""); + addCommand("time", ""); + addCommand("staff", ""); + addCommand("uptime", ""); + addCommand("gacha", ""); + addCommand("whatdropsfrom", ""); + addCommand("whodrops", ""); + addCommand("dispose", ""); + addCommand("equiplv", ""); + addCommand("rates", ""); + addCommand("online", ""); + addCommand("gm", ""); + addCommand("bug", ""); + // addCommand("points", ""); //Caso for usar o comando @points, a linha ja foi adicionada, basta remover os // + addCommand("joinevent", ""); + addCommand("leaveevent", ""); + addCommand("bosshp", ""); + addCommand("ranks", ""); +} + +function writeSolaxiaCommands() { + writeSolaxiaCommandsLv0(); //Common + writeSolaxiaCommandsLv1(); //Donator + writeSolaxiaCommandsLv2(); //JrGM + writeSolaxiaCommandsLv3(); //GM + writeSolaxiaCommandsLv4(); //Developer + writeSolaxiaCommandsLv5(); //SuperGM + writeSolaxiaCommandsLv6(); //Admin +} + +function start() { + status = -1; + writeSolaxiaCommands(); + 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) { + var sendStr = "There are all available commands for you:\r\n\r\n#b"; + for(var i = 0; i < cm.getPlayer().gmLevel(); i++) { + sendStr += "#L" + i + "#" + levels[i] + "#l\r\n"; + } + + cm.sendSimple(sendStr); + } else if(status == 1) { + var lvComm, lvDesc; + + if(selection == 0) { + lvComm = comm_lv1; + lvDesc = desc_lv1; + } else if(selection == 1) { + lvComm = comm_lv2; + lvDesc = desc_lv2; + } else if(selection == 2) { + lvComm = comm_lv3; + lvDesc = desc_lv3; + } else if(selection == 3) { + lvComm = comm_lv4; + lvDesc = desc_lv4; + } else if(selection == 4) { + lvComm = comm_lv5; + lvDesc = desc_lv5; + } else { + lvComm = comm_lv6; + lvDesc = desc_lv6; + } + + var sendStr = "The following commands are available for #b" + levels[selection] + "#k:\r\n\r\n"; + for(var i = 0; i < lvComm.length; i++) { + sendStr += " #L" + i + "# " + lvComm[i] + " - " + lvDesc[i]; + sendStr += "#l\r\n"; + } + + cm.sendPrev(sendStr); + } else { + cm.dispose(); + } + } +} diff --git a/scripts/portal/timeQuest.js b/scripts/portal/timeQuest.js index 3f4b357d28..e5644ed6b8 100644 --- a/scripts/portal/timeQuest.js +++ b/scripts/portal/timeQuest.js @@ -43,10 +43,13 @@ function enter(pi) { pi.warp(270040100, "out00"); } else { if(map > 200) { + pi.playerMessage(5, "As the time starts to flow oddly, you are transported back to a safe lane."); pi.warp(270030000, "in00"); } else if(map > 100) { + pi.playerMessage(5, "As the time starts to flow oddly, you are transported back to a safe lane."); pi.warp(270020000, "in00"); } else { + pi.playerMessage(5, "As the time starts to flow oddly, you are transported back to a safe lane."); pi.warp(270010000, "in00"); } } diff --git a/scripts/quest/3507.js b/scripts/quest/3507.js new file mode 100644 index 0000000000..5aee0c2b0d --- /dev/null +++ b/scripts/quest/3507.js @@ -0,0 +1,10 @@ +function end(mode, type, selection) { + if(qm.isQuestCompleted(3523) || qm.isQuestCompleted(3524) || qm.isQuestCompleted(3525) || qm.isQuestCompleted(3526) || qm.isQuestCompleted(3527) || 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?"); + } + + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/3514.js b/scripts/quest/3514.js index 70e0a29e17..98ed1d529c 100644 --- a/scripts/quest/3514.js +++ b/scripts/quest/3514.js @@ -23,12 +23,46 @@ * The sorcerer who sells emotions */ +importPackage(Packages.client); + +function start(mode, type, selection) { + if(qm.getPlayer().getMeso() >= 1000000) { + if(qm.canHold(2022337, 1)) { + qm.gainItem(2022337, 1); + qm.gainMeso(-1000000); + + //qm.sendOk("Nice doing business with you~~."); + qm.startQuest(3514); + } else { + qm.sendOk("Check out for a slot on your USE inventory first."); + } + } else { + qm.sendOk("Oy, you don't have the money. I charge #r1,000,000 mesos#k for the emotion potion. No money, no deal."); + } + + qm.dispose(); +} + +function usedPotion(ch) { + return ch.getBuffSource(MapleBuffStat.HPREC) == 2022337; +} + function end(mode, type, selection) { - if(qm.haveItem(2022337)) { - qm.sendOk("Are you scared to drink the potion? I can assure you it's only a minor #rside effect#k."); + if(!usedPotion(qm.getPlayer())) { + if(qm.haveItem(2022337)) { + qm.sendOk("Are you scared to drink the potion? I can assure you it has only a minor #rside effect#k."); + } else { + if(qm.canHold(2022337)) { + qm.gainItem(2022337, 1); + qm.sendOk("Lost it? Luckily for you I managed to recover it back. Take it."); + } else { + qm.sendOk("Lost it? Luckily for you I managed to recover it back. Make a room to get it."); + } + } } else { - qm.sendOk("It seems the potion worked and your emotions are no longer frozen."); + qm.sendOk("It seems the potion worked and your emotions are no longer frozen. And, oh, my... You're ailing bad, #bpurge#k that out quickly."); + qm.gainExp(891500 * qm.getPlayer().getExpRate()); qm.completeQuest(3514); } - qm.dispose(); + qm.dispose(); } \ No newline at end of file diff --git a/scripts/quest/3523.js b/scripts/quest/3523.js index 1ed260e28e..5ee5f05777 100644 --- a/scripts/quest/3523.js +++ b/scripts/quest/3523.js @@ -25,8 +25,8 @@ function start(mode, type, selection) { qm.startQuest(); - qm.getPlayer().updateQuestInfo(3507, 1); + //qm.getPlayer().updateQuestInfo(3507, "1"); qm.completeQuest(); - qm.sendOk("You have regained your memories and are now allowed to go to #m270020000#."); + qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass."); qm.dispose(); } \ No newline at end of file diff --git a/scripts/quest/3524.js b/scripts/quest/3524.js index c06b98f18e..744ca4f701 100644 --- a/scripts/quest/3524.js +++ b/scripts/quest/3524.js @@ -25,8 +25,8 @@ function start(mode, type, selection) { qm.startQuest(); - qm.getPlayer().updateQuestInfo(3507, 1); + //qm.getPlayer().updateQuestInfo(3507, "1"); qm.completeQuest(); - qm.sendOk("You have regained your memories and are now allowed to go to #m270020000#."); + qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass."); qm.dispose(); } \ No newline at end of file diff --git a/scripts/quest/3525.js b/scripts/quest/3525.js index 8d7f0a7d42..76d31b4b92 100644 --- a/scripts/quest/3525.js +++ b/scripts/quest/3525.js @@ -25,8 +25,8 @@ function start(mode, type, selection) { qm.startQuest(); - qm.getPlayer().updateQuestInfo(3507, 1); + //qm.getPlayer().updateQuestInfo(3507, "1"); qm.completeQuest(); - qm.sendOk("You have regained your memories and are now allowed to go to #m270020000#."); + qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass."); qm.dispose(); } \ No newline at end of file diff --git a/scripts/quest/3526.js b/scripts/quest/3526.js index 0519eb59f2..295dc91cd5 100644 --- a/scripts/quest/3526.js +++ b/scripts/quest/3526.js @@ -25,8 +25,8 @@ function start(mode, type, selection) { qm.startQuest(); - qm.getPlayer().updateQuestInfo(3507, 1); + //qm.getPlayer().updateQuestInfo(3507, "1"); qm.completeQuest(); - qm.sendOk("You have regained your memories and are now allowed to go to #m270020000#."); + qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass."); qm.dispose(); } \ No newline at end of file diff --git a/scripts/quest/3527.js b/scripts/quest/3527.js index e6176463f3..5ba2606c08 100644 --- a/scripts/quest/3527.js +++ b/scripts/quest/3527.js @@ -25,8 +25,8 @@ function start(mode, type, selection) { qm.startQuest(); - qm.getPlayer().updateQuestInfo(3507, 1); + //qm.getPlayer().updateQuestInfo(3507, "1"); qm.completeQuest(); - qm.sendOk("You have regained your memories and are now allowed to go to #m270020000#."); + qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass."); qm.dispose(); } \ No newline at end of file diff --git a/scripts/quest/3539.js b/scripts/quest/3539.js index e6176463f3..5ba2606c08 100644 --- a/scripts/quest/3539.js +++ b/scripts/quest/3539.js @@ -25,8 +25,8 @@ function start(mode, type, selection) { qm.startQuest(); - qm.getPlayer().updateQuestInfo(3507, 1); + //qm.getPlayer().updateQuestInfo(3507, "1"); qm.completeQuest(); - qm.sendOk("You have regained your memories and are now allowed to go to #m270020000#."); + qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass."); qm.dispose(); } \ No newline at end of file diff --git a/scripts/reactor/9102000.js b/scripts/reactor/9102000.js index 0b7c8a5a8f..1ee5ca9029 100644 --- a/scripts/reactor/9102000.js +++ b/scripts/reactor/9102000.js @@ -21,9 +21,9 @@ */ /** * @author BubblesDev - * @purpose Drops Blue Primrose Seeds (4001100) + * @purpose Sky-ride to Orbis box * @map Primrose Hill */ function act() { - rm.dropItems(); + rm.dropItems(true, 2, 25, 100); } \ No newline at end of file diff --git a/scripts/reactor/9102001.js b/scripts/reactor/9102001.js index 83819c9b26..11df051e63 100644 --- a/scripts/reactor/9102001.js +++ b/scripts/reactor/9102001.js @@ -24,5 +24,5 @@ * Box of Magic Library */ function act() { - rm.dropItems(); + rm.dropItems(true, 2, 25, 100); } \ No newline at end of file diff --git a/sql/db_database.sql b/sql/db_database.sql index 3bd4345473..c6532a8622 100644 --- a/sql/db_database.sql +++ b/sql/db_database.sql @@ -21060,8 +21060,11 @@ INSERT INTO `shops` (`shopid`, `npcid`) VALUES (9270057, 9270057), (9270065, 9270065); - -- Rudi Shop (Happyville) -INSERT INTO `shops` (`shopid`, `npcid`) VALUES ( 57, 2002001 ); + -- missing shops +INSERT INTO `shops` (`shopid`, `npcid`) VALUES +( 57, 2002001 ), +(1052116, 1052116); + INSERT INTO `shopitems` ( `shopid`, `itemid`, `price`, `position`) VALUES ( 57, 3990000, 500, 1 ), ( 57, 3990001, 500, 2 ), @@ -21179,9 +21182,39 @@ INSERT INTO `shopitems` ( `shopid`, `itemid`, `price`, `position`) VALUES ( 57, 3992037, 500, 114), ( 57, 3992038, 500, 115), --- missing CBD shop data +-- missing shop data (9270027, 2022213, 6800, 104), -(9270027, 2022212, 3200, 108); +(9270027, 2022212, 3200, 108), +(1052116, 2070000, 500, 104), +(1052116, 2022015, 12000, 108), +(1052116, 2061000, 1, 112), +(1052116, 2060000, 1, 116), +(1052116, 2030000, 400, 120), +(1052116, 2050003, 500, 124), +(1052116, 2050002, 300, 128), +(1052116, 2050001, 200, 132), +(1052116, 2050000, 200, 136), +(1052116, 2020028, 3000, 140), +(1052116, 2010004, 310, 144), +(1052116, 2010003, 100, 148), +(1052116, 2010001, 106, 152), +(1052116, 2010002, 50, 156), +(1052116, 2010000, 30, 160), +(1052116, 2001002, 4000, 164), +(1052116, 2001001, 2300, 168), +(1052116, 2001000, 3200, 172), +(1052116, 2022000, 1650, 176), +(1052116, 2022003, 1100, 180), +(1052116, 2002005, 500, 184), +(1052116, 2002004, 500, 188), +(1052116, 2002002, 500, 192), +(1052116, 2002001, 400, 196), +(1052116, 2002000, 500, 200), +(1052116, 2000006, 620, 204), +(1052116, 2000003, 200, 208), +(1052116, 2000002, 320, 212), +(1052116, 2000001, 160, 216), +(1052116, 2000000, 50, 220); CREATE TABLE IF NOT EXISTS `skillmacros` ( `id` int(11) NOT NULL AUTO_INCREMENT, diff --git a/sql/db_drops.sql b/sql/db_drops.sql index 1c49aee28e..3dca457790 100644 --- a/sql/db_drops.sql +++ b/sql/db_drops.sql @@ -15494,7 +15494,6 @@ USE `maplesolaxia`; (8200002, 2044401, 1, 1, 0, 750), (8200002, 2290066, 1, 1, 0, 1000), (8200002, 2330004, 1, 1, 0, 400), -(8200002, 2386022, 1, 1, 0, 20000), (8200002, 2290131, 1, 1, 0, 1000), (8200002, 4004000, 1, 1, 0, 3000), (8200002, 4010002, 1, 1, 0, 7000), @@ -19865,11 +19864,9 @@ USE `maplesolaxia`; (9300270, 2022432, 1, 1, 0, 200000), (9300270, 2022433, 1, 1, 0, 200000), (6090002, 4000414, 1, 1, 0, 400000), - (9300147, 4001132, 1, 1, 0, 400000), (9300148, 4001133, 1, 1, 0, 100000); - # update quest reactor items UPDATE reactordrops SET questid=2086 WHERE itemid=4031165; UPDATE reactordrops SET questid=3407 WHERE itemid=4031141; @@ -20101,7 +20098,23 @@ USE `maplesolaxia`; (2612004, 2020007, 3, -1), (2612004, 2020008, 3, -1), (2612004, 2020009, 3, -1), - (2612004, 2020010, 3, -1); + (2612004, 2020010, 3, -1), + (9102000, 2010000, 2, -1), + (9102000, 2010001, 2, -1), + (9102000, 2010002, 2, -1), + (9102000, 2010003, 2, -1), + (9102000, 2010004, 2, -1), + (9102000, 2020000, 2, -1), + (9102000, 2020001, 2, -1), + (9102000, 2020002, 2, -1), + (9102001, 2010000, 2, -1), + (9102001, 2010001, 2, -1), + (9102001, 2010002, 2, -1), + (9102001, 2010003, 2, -1), + (9102001, 2010004, 2, -1), + (9102001, 2020000, 2, -1), + (9102001, 2020001, 2, -1), + (9102001, 2020002, 2, -1); # updates info for all cards on monster book DROP TABLE `monstercarddata`; diff --git a/sql/db_shopupdate.sql b/sql/db_shopupdate.sql index 83f9cde4a5..4ec4b74f93 100644 --- a/sql/db_shopupdate.sql +++ b/sql/db_shopupdate.sql @@ -101,12 +101,17 @@ INSERT IGNORE INTO `shopitems` (`shopid`, `itemid`, `price`, `pitch`, `position` (9201020, 3010014, 15000, 0, 100), (1031100, 3010015, 20000, 0, 100), (1081000, 3010013, 100000, 0, 100), -(9110002, 3010019, 200000, 0, 80), +(9110002, 3010019, 770000, 0, 80), (9110002, 3010017, 1000000, 0, 84), (9110002, 3010016, 1000000, 0, 88), (9110002, 3010008, 1000000, 0, 92), (9110002, 3010007, 1000000, 0, 96), -(9110002, 3011000, 4200000, 0, 100); +(9110002, 3011000, 4200000, 0, 100), +(2100004, 3010064, 3000000, 0, 100), +(1052116, 3010098, 7700000, 0, 92), +(1052116, 3010063, 1400000, 0, 96), +(1052116, 3010061, 250000, 0, 100), +(2030009, 3010099, 10000000, 0, 100); # adding antibanish scrolls INSERT IGNORE INTO `shopitems` (`shopid`, `itemid`, `price`, `pitch`, `position`) VALUES diff --git a/src/client/MapleCharacter.java b/src/client/MapleCharacter.java index 899a844d44..bbc48ca691 100644 --- a/src/client/MapleCharacter.java +++ b/src/client/MapleCharacter.java @@ -1464,14 +1464,31 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject { if (id / 1000000 == 2) { MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); if (ii.isConsumeOnPickup(id)) { - if (id > 2022430 && id < 2022434) { - for (MapleCharacter mc : c.getPlayer().getMap().getCharacters()) { - if (mc.getParty() == c.getPlayer().getParty()) { - ii.getItemEffect(id).applyTo(mc); + if (ii.isPartyItem(id)) { + List pchr = c.getPlayer().getPartyMembersOnSameMap(); + + if(!ii.isPartyAllcure(id)) { + if(!pchr.isEmpty()) { + for (MapleCharacter mc : pchr) { + ii.getItemEffect(id).applyTo(mc); + mc.checkBerserk(mc.isHidden()); + } + } else { + ii.getItemEffect(id).applyTo(c.getPlayer()); + c.getPlayer().checkBerserk(c.getPlayer().isHidden()); + } + } else { + if(!pchr.isEmpty()) { + for (MapleCharacter mc : pchr) { + mc.dispelDebuffs(); + } + } else { + c.getPlayer().dispelDebuffs(); } } } else { ii.getItemEffect(id).applyTo(c.getPlayer()); + c.getPlayer().checkBerserk(c.getPlayer().isHidden()); } return true; } @@ -1940,7 +1957,7 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject { extraRecoveryTask = null; } - if(extraHpRec > 0 || extraMpRec > 0) { + if(extraHpRec != 0 || extraMpRec != 0) { startExtraTaskInternal(extraHpRec, extraMpRec, extraRecInterval); } } @@ -3167,6 +3184,19 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject { return list; } + public List getPartyMembersOnSameMap() { + List list = new LinkedList<>(); + int thisMapHash = this.getMap().hashCode(); + + if(party != null) { + for(MaplePartyCharacter partyMembers: party.getMembers()) { + if(partyMembers.getPlayer().getMap().hashCode() == thisMapHash) list.add(partyMembers.getPlayer()); + } + } + + return list; + } + public boolean isPartyMember(MapleCharacter chr) { for(MapleCharacter mpcu: getPartyMembers()) { if(mpcu.getId() == chr.getId()) { @@ -3188,6 +3218,8 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject { closeMiniGame(); closeHiredMerchant(false); closePlayerMessenger(); + + client.closePlayerScriptInteractions(); } public void closeNpcShop() { @@ -3595,11 +3627,13 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject { } private void guildUpdate() { + mgc.setLevel(level); + mgc.setJobId(job.getId()); + if (this.guildid < 1) { return; } - mgc.setLevel(level); - mgc.setJobId(job.getId()); + try { Server.getInstance().memberLevelJobUpdate(this.mgc); //Server.getInstance().getGuild(guildid, world, mgc).gainGP(40); @@ -4955,7 +4989,7 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject { getMap().broadcastMessage(MapleCharacter.this, MaplePacketCreator.showRecovery(id, heal), false); } }, healInterval, healInterval); - } else if (effect.isDojoBuff()) { + } else if (effect.isDojoBuff() || effect.getSourceId() == 2022337) { boolean isRecoveryBuff = false; if(effect.getHpRRate() > 0) { extraHpRec = effect.getHpR(); @@ -4968,7 +5002,7 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject { extraRecInterval = effect.getMpRRate(); isRecoveryBuff = true; } - + if(isRecoveryBuff) { stopExtraTask(); startExtraTask(extraHpRec, extraMpRec, extraRecInterval); // HP & MP sharing the same task holder diff --git a/src/client/MapleClient.java b/src/client/MapleClient.java index 5b316c2782..b45bce0ef3 100644 --- a/src/client/MapleClient.java +++ b/src/client/MapleClient.java @@ -732,8 +732,6 @@ public class MapleClient { player.cancelAllDebuffs(); player.closePlayerInteractions(); - - NPCScriptManager.getInstance().dispose(this); QuestScriptManager.getInstance().dispose(this); if (player.getEventInstance() != null) { @@ -764,6 +762,8 @@ public class MapleClient { final MapleMessengerCharacter chrm = new MapleMessengerCharacter(player, 0); final MapleGuildCharacter chrg = player.getMGC(); final MapleGuild guild = player.getGuild(); + + player.cancelMagicDoor(); if (channel == -1 || shutdown) { if(chrg != null) chrg.setCharacter(null); @@ -1254,4 +1254,9 @@ public class MapleClient { public void removeClickedNPC(){ lastNpcClick = 0; } + + public void closePlayerScriptInteractions() { + this.removeClickedNPC(); + NPCScriptManager.getInstance().dispose(this); + } } diff --git a/src/client/command/Commands.java b/src/client/command/Commands.java index 63da3ac9a8..b3e20df509 100644 --- a/src/client/command/Commands.java +++ b/src/client/command/Commands.java @@ -338,9 +338,8 @@ public class Commands { switch(sub[0]) { case "help": case "commands": - case "playercommands": - player.setCS(true); - c.getAbstractPlayerInteraction().openNpc(9201143); + case "playercommands": + c.getAbstractPlayerInteraction().openNpc(9201143, "commands"); break; case "time": @@ -1095,7 +1094,14 @@ public class Commands { if (ItemConstants.isPet(itemId)) { petid = MaplePet.createPet(itemId); } - MapleInventoryManipulator.addById(c, itemId, quantity, player.getName(), petid, -1); + + byte flag = 0; + if(player.gmLevel() < 3) { + flag |= ItemConstants.ACCOUNT_SHARING; + flag |= ItemConstants.UNTRADEABLE; + } + + MapleInventoryManipulator.addById(c, itemId, quantity, player.getName(), petid, flag, -1); } else { Item toDrop; if (MapleItemInformationProvider.getInstance().getInventoryType(itemId) == MapleInventoryType.EQUIP) { @@ -1103,6 +1109,16 @@ public class Commands { } else { toDrop = new Item(itemId, (short) 0, quantity); } + + toDrop.setOwner(player.getName()); + if(player.gmLevel() < 3) { + byte b = toDrop.getFlag(); + b |= ItemConstants.ACCOUNT_SHARING; + b |= ItemConstants.UNTRADEABLE; + + toDrop.setFlag(b); + } + c.getPlayer().getMap().spawnItemDrop(c.getPlayer(), c.getPlayer(), toDrop, c.getPlayer().getPosition(), true, true); } break; @@ -1294,6 +1310,19 @@ public class Commands { player.dropMessage(sub[1] + " not found on this channel! Make sure your target is logged on and on the same channel as yours."); } break; + + case "job": + if (sub.length == 2) { + player.changeJob(MapleJob.getById(Integer.parseInt(sub[1]))); + player.equipChanged(); + } else if (sub.length == 3) { + victim = c.getChannelServer().getPlayerStorage().getCharacterByName(sub[1]); + victim.changeJob(MapleJob.getById(Integer.parseInt(sub[2]))); + player.equipChanged(); + } else { + player.message("Syntax: !job "); + } + break; case "unbug": c.getPlayer().getMap().broadcastMessage(MaplePacketCreator.enableActions()); @@ -1407,6 +1436,8 @@ public class Commands { victim.setMp(statUpdate); victim.updateSingleStat(MapleStat.HP, statUpdate); victim.updateSingleStat(MapleStat.MP, statUpdate); + + victim.checkBerserk(victim.isHidden()); break; case "music": @@ -1823,6 +1854,23 @@ public class Commands { player.yellowMessage("Done."); break; + case "npc": + if (sub.length < 2){ + player.yellowMessage("Syntax: !npc "); + break; + } + MapleNPC npc = MapleLifeFactory.getNPC(Integer.parseInt(sub[1])); + if (npc != null) { + npc.setPosition(player.getPosition()); + npc.setCy(player.getPosition().y); + npc.setRx0(player.getPosition().x + 50); + npc.setRx1(player.getPosition().x - 50); + npc.setFh(player.getMap().getFootholds().findBelow(c.getPlayer().getPosition()).getId()); + player.getMap().addMapObject(npc); + player.getMap().broadcastMessage(MaplePacketCreator.spawnNPC(npc)); + } + break; + default: return false; } @@ -1854,6 +1902,7 @@ public class Commands { MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); Item it = ii.getEquipById(itemid); + it.setOwner(player.getName()); MapleInventoryType type = ii.getInventoryType(itemid); if (type.equals(MapleInventoryType.EQUIP)) { hardsetItemStats((Equip) it, multiply); @@ -1909,31 +1958,35 @@ public class Commands { if (sub.length < 2){ player.yellowMessage("Syntax: !exprate "); break; - } + } c.getWorldServer().setExpRate(Integer.parseInt(sub[1])); + c.getWorldServer().broadcastPacket(MaplePacketCreator.serverNotice(6, "[Rate] Exp Rate has been changed to " + sub[1] + "x.")); break; case "mesorate": if (sub.length < 2){ player.yellowMessage("Syntax: !mesorate "); break; - } + } c.getWorldServer().setMesoRate(Integer.parseInt(sub[1])); + c.getWorldServer().broadcastPacket(MaplePacketCreator.serverNotice(6, "[Rate] Meso Rate has been changed to " + sub[1] + "x.")); break; case "droprate": if (sub.length < 2){ player.yellowMessage("Syntax: !droprate "); break; - } + } c.getWorldServer().setDropRate(Integer.parseInt(sub[1])); + c.getWorldServer().broadcastPacket(MaplePacketCreator.serverNotice(6, "[Rate] Drop Rate has been changed to " + sub[1] + "x.")); break; case "bossdroprate": if (sub.length < 2){ player.yellowMessage("Syntax: !bossdroprate "); break; - } + } c.getWorldServer().setBossDropRate(Integer.parseInt(sub[1])); + c.getWorldServer().broadcastPacket(MaplePacketCreator.serverNotice(6, "[Rate] Boss Drop Rate has been changed to " + sub[1] + "x.")); break; case "itemvac": @@ -2006,18 +2059,21 @@ public class Commands { break; } - if (sub.length == 2) { - player.setFace(Integer.parseInt(sub[1])); - player.equipChanged(); - } else { - victim = c.getChannelServer().getPlayerStorage().getCharacterByName(sub[1]); - if(victim == null) { - player.yellowMessage("Player '" + sub[1] + "' has not been found on this channel."); - break; + try { + if (sub.length == 2) { + player.setFace(Integer.parseInt(sub[1])); + player.equipChanged(); + } else { + victim = c.getChannelServer().getPlayerStorage().getCharacterByName(sub[1]); + if(victim == null) { + player.yellowMessage("Player '" + sub[1] + "' has not been found on this channel."); + break; + } + victim.setFace(Integer.parseInt(sub[2])); + victim.equipChanged(); } - victim.setFace(Integer.parseInt(sub[2])); - victim.equipChanged(); - } + } catch(Exception e) {} + break; case "hair": @@ -2026,18 +2082,26 @@ public class Commands { break; } - if (sub.length == 2) { - player.setHair(Integer.parseInt(sub[1])); - player.equipChanged(); - } else { - victim = c.getChannelServer().getPlayerStorage().getCharacterByName(sub[1]); - if(victim == null) { - player.yellowMessage("Player '" + sub[1] + "' has not been found on this channel."); - break; + try { + if (sub.length == 2) { + player.setHair(Integer.parseInt(sub[1])); + player.equipChanged(); + + player.getMap().removePlayer(player); + player.getMap().addPlayer(player); + } else { + victim = c.getChannelServer().getPlayerStorage().getCharacterByName(sub[1]); + if(victim == null) { + player.yellowMessage("Player '" + sub[1] + "' has not been found on this channel."); + break; + } + victim.setHair(Integer.parseInt(sub[2])); + victim.equipChanged(); + + victim.getMap().removePlayer(victim); + victim.getMap().addPlayer(victim); } - victim.setHair(Integer.parseInt(sub[2])); - victim.equipChanged(); - } + } catch(Exception e) {} break; default: @@ -2231,36 +2295,6 @@ public class Commands { victim = c.getChannelServer().getPlayerStorage().getCharacterByName(sub[1]); player.message(victim.getName() + "'s account name is " + victim.getClient().getAccountName() + "."); break; - - case "npc": - if (sub.length < 2){ - player.yellowMessage("Syntax: !npc "); - break; - } - MapleNPC npc = MapleLifeFactory.getNPC(Integer.parseInt(sub[1])); - if (npc != null) { - npc.setPosition(player.getPosition()); - npc.setCy(player.getPosition().y); - npc.setRx0(player.getPosition().x + 50); - npc.setRx1(player.getPosition().x - 50); - npc.setFh(player.getMap().getFootholds().findBelow(c.getPlayer().getPosition()).getId()); - player.getMap().addMapObject(npc); - player.getMap().broadcastMessage(MaplePacketCreator.spawnNPC(npc)); - } - break; - - case "job": - if (sub.length == 2) { - player.changeJob(MapleJob.getById(Integer.parseInt(sub[1]))); - player.equipChanged(); - } else if (sub.length == 3) { - victim = c.getChannelServer().getPlayerStorage().getCharacterByName(sub[1]); - victim.changeJob(MapleJob.getById(Integer.parseInt(sub[2]))); - player.equipChanged(); - } else { - player.message("Syntax: !job "); - } - break; case "shutdown": case "shutdownnow": diff --git a/src/client/inventory/Equip.java b/src/client/inventory/Equip.java index e3e01426a8..488405783d 100644 --- a/src/client/inventory/Equip.java +++ b/src/client/inventory/Equip.java @@ -26,8 +26,6 @@ import constants.ServerConstants; import constants.ExpTable; import java.util.LinkedList; import java.util.List; -import java.util.HashMap; -import java.util.Map; import server.MapleItemInformationProvider; import tools.MaplePacketCreator; import tools.Pair; @@ -376,6 +374,7 @@ public class Equip extends Item { boolean gotVicious = false, gotSlot = false; String lvupStr = "'" + MapleItemInformationProvider.getInstance().getName(this.getItemId()) + "' is now level " + itemLevel + "! "; + String showStr = "#e'" + MapleItemInformationProvider.getInstance().getName(this.getItemId()) + "'#b is now #elevel #r" + itemLevel + "#k#b!"; Integer statUp, maxStat = ServerConstants.MAX_EQUIPMNT_STAT; for (Pair stat : stats) { @@ -462,9 +461,17 @@ public class Equip extends Item { } } + if(gotVicious) { + //c.getPlayer().dropMessage(6, "A new Vicious Hammer opportunity has been found on the '" + MapleItemInformationProvider.getInstance().getName(getItemId()) + "'!"); + lvupStr += "+VICIOUS "; + } + if(gotSlot) { + //c.getPlayer().dropMessage(6, "A new upgrade slot has been found on the '" + MapleItemInformationProvider.getInstance().getName(getItemId()) + "'!"); + lvupStr += "+UPGSLOT "; + } + + showLevelupMessage(showStr, c); // thx to polaris devs ! c.getPlayer().dropMessage(6, lvupStr); - if(gotVicious) c.getPlayer().dropMessage(6, "A new Vicious Hammer opportunity has been found on the '" + MapleItemInformationProvider.getInstance().getName(getItemId()) + "'!"); - if(gotSlot) c.getPlayer().dropMessage(6, "A new upgrade slot has been found on the '" + MapleItemInformationProvider.getInstance().getName(getItemId()) + "'!"); c.announce(MaplePacketCreator.showEquipmentLevelUp()); c.getPlayer().getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.showForeignEffect(c.getPlayer().getId(), 15)); @@ -476,11 +483,16 @@ public class Equip extends Item { } private double normalizedMasteryExp(int reqLevel) { - // Trivia: at equips requiring level 200, one gaining MAX INTEGER exp points will have their equip - // exp gain normalized to roughly 5.752 points (1/3 of the needed to pass the equipment to lvl 2)! - // Good thing there is not much lvl 140+ equipments in the game! + // Conversion factor between mob exp and equip exp gain. Through many calculations, the expected for equipment levelup + // from level 1 to 2 is killing about 100~200 mobs of the same level range, on a 1x EXP rate scenario. - return Math.max((2622.71 * Math.exp(reqLevel * 0.0733649)) - 6000.0, 15); + if(reqLevel >= 78) { + return Math.max(ServerConstants.EQUIP_EXPERIENCE_MOD * (10413.648 * Math.exp(reqLevel * 0.03275)), 15); + } else if(reqLevel >= 38) { + return Math.max(ServerConstants.EQUIP_EXPERIENCE_MOD * ( 4985.818 * Math.exp(reqLevel * 0.02007)), 15); + } else { + return Math.max(ServerConstants.EQUIP_EXPERIENCE_MOD * ( 248.219 * Math.exp(reqLevel * 0.11093)), 15); + } } public void gainItemExp(MapleClient c, int gain) { // Ronan's Equip Exp gain method @@ -497,7 +509,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); + 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 (itemExp >= expNeeded) { while(itemExp >= expNeeded) { @@ -540,6 +552,11 @@ public class Equip extends Item { c.getPlayer().dropMessage(5, "'" + eqpName + "' -> Level: " + itemLevel + eqpInfo); } + public final void showLevelupMessage(String msg, MapleClient c) { + c.announce(MaplePacketCreator.sendHint(msg, 500, 10)); + c.announce(MaplePacketCreator.enableActions()); + } + public void setItemExp(int exp) { this.itemExp = exp; } diff --git a/src/constants/ServerConstants.java b/src/constants/ServerConstants.java index a81754ab33..1604b7d65a 100644 --- a/src/constants/ServerConstants.java +++ b/src/constants/ServerConstants.java @@ -36,7 +36,7 @@ public class ServerConstants { public static final boolean USE_MAXRANGE = true; //Will send and receive packets from all events of a map, rather than those of only view range. public static final boolean USE_DEBUG = true; //Will enable some text prints on the client, oriented for debugging purposes. public static final boolean USE_DEBUG_SHOW_RCVD_PACKET = false; //Prints on the cmd all received packet ids. - public static final boolean USE_DEBUG_SHOW_INFO_EQPEXP = false; //Prints on the cmd all equip exp gain info. + public static final boolean USE_DEBUG_SHOW_INFO_EQPEXP = true; //Prints on the cmd all equip exp gain info. public static final boolean USE_MTS = false; public static final boolean USE_FAMILY_SYSTEM = false; public static final boolean USE_DUEY = true; @@ -49,7 +49,7 @@ public class ServerConstants { public static final boolean USE_PERFECT_PITCH = true; //For lvl 30 or above, each lvlup player gains 1 perfect pitch. public static final boolean USE_PERMISSIVE_BUFFS = false; //WARNING: Allows players that does not have increased certain buff-type skills to use it's effect. Used mainly on buff-cast commands, however making this active may generate a source for possible client-edited exploits. public static final boolean USE_ENFORCE_MDOOR_POSITION = true; //Forces mystic door to be spawned near spawnpoints. (since things bugs out other way, and this helps players locate the door faster) - + public static final boolean USE_ERASE_UNTRADEABLE_DROP = true; //Forces flagged untradeable items to disappear when dropped. public static final int MAX_AP = 20000; //Max AP allotted on the auto-assigner. public static final int MAX_EVENT_LEVELS = 8; //Event has different levels of rewarding system. @@ -100,6 +100,7 @@ public class ServerConstants { public static final int DROP_RATE = 10; public static final int BOSS_DROP_RATE = 20; public static final int PARTY_EXPERIENCE_MOD = 1; //Change for event stuff. + public static final double EQUIP_EXPERIENCE_MOD = 10.0; //Rate for equipment exp needed, 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_MOD = 0.5; //Event End Timestamp diff --git a/src/net/server/channel/handlers/GeneralChatHandler.java b/src/net/server/channel/handlers/GeneralChatHandler.java index 584447a061..3c5bbfa240 100644 --- a/src/net/server/channel/handlers/GeneralChatHandler.java +++ b/src/net/server/channel/handlers/GeneralChatHandler.java @@ -47,7 +47,7 @@ public final class GeneralChatHandler extends net.AbstractMaplePacketHandler { return; } char heading = s.charAt(0); - if (heading == '!' || heading == '@') { // client seems to not send command with '/' heading to the server, if not a GM account + if (heading == '/' || heading == '!' || heading == '@') { // client seems to not send command with '/' heading to the server, if not a GM account String[] sp = s.split(" "); sp[0] = sp[0].toLowerCase().substring(1); diff --git a/src/net/server/channel/handlers/UseItemHandler.java b/src/net/server/channel/handlers/UseItemHandler.java index d6b18271ab..e7121371a0 100644 --- a/src/net/server/channel/handlers/UseItemHandler.java +++ b/src/net/server/channel/handlers/UseItemHandler.java @@ -47,11 +47,11 @@ public final class UseItemHandler extends AbstractMaplePacketHandler { int itemId = slea.readInt(); Item toUse = c.getPlayer().getInventory(MapleInventoryType.USE).getItem(slot); if (toUse != null && toUse.getQuantity() > 0 && toUse.getItemId() == itemId) { - if (itemId == 2022178 || itemId == 2022433 || itemId == 2050004) { + if (itemId == 2022178 || itemId == 2050004) { c.getPlayer().dispelDebuffs(); remove(c, slot); return; - } + } else if (itemId == 2050001) { c.getPlayer().dispelDebuff(MapleDisease.DARKNESS); remove(c, slot); diff --git a/src/scripting/event/EventInstanceManager.java b/src/scripting/event/EventInstanceManager.java index fadeb89107..5a0a265ed6 100644 --- a/src/scripting/event/EventInstanceManager.java +++ b/src/scripting/event/EventInstanceManager.java @@ -414,12 +414,10 @@ public class EventInstanceManager { } } - public void changedMap(MapleCharacter chr, int mapId) { + public void changedMap(MapleCharacter chr, int mapId) { // optional try { em.getIv().invokeFunction("changedMap", this, chr, mapId); - } catch (ScriptException | NoSuchMethodException ex) { - ex.printStackTrace(); - } + } catch (ScriptException | NoSuchMethodException ex) {} } public void changedLeader(MapleCharacter ldr) { diff --git a/src/scripting/event/EventManager.java b/src/scripting/event/EventManager.java index d3c3e11462..3c1bb914e7 100644 --- a/src/scripting/event/EventManager.java +++ b/src/scripting/event/EventManager.java @@ -320,7 +320,7 @@ public class EventManager { } public boolean startInstance(int lobbyId, MapleCharacter leader) { - return startInstance(lobbyId, null, leader, 1); + return startInstance(lobbyId, leader, leader, 1); } public boolean startInstance(int lobbyId, MapleCharacter chr, MapleCharacter leader, int difficulty) { diff --git a/src/scripting/reactor/ReactorActionManager.java b/src/scripting/reactor/ReactorActionManager.java index 0578e5cdd7..c8ef2172b3 100644 --- a/src/scripting/reactor/ReactorActionManager.java +++ b/src/scripting/reactor/ReactorActionManager.java @@ -119,7 +119,8 @@ public class ReactorActionManager extends AbstractPlayerInteraction { } else { drop = ii.randomizeStats((Equip) ii.getEquipById(d.itemId)); } - reactor.getMap().spawnItemDrop(reactor, getPlayer(), drop, reactor.getMap().calcDropPos(dropPos, reactor.getPosition()), (byte)(getPlayer().getParty() != null ? 1 : 0), false); + + reactor.getMap().dropFromReactor(getPlayer(), reactor, drop, dropPos, (short)d.questid); } dropPos.x += 25; } diff --git a/src/server/MapleInventoryManipulator.java b/src/server/MapleInventoryManipulator.java index 3cce2a5076..c5ac8c65a4 100644 --- a/src/server/MapleInventoryManipulator.java +++ b/src/server/MapleInventoryManipulator.java @@ -29,6 +29,7 @@ import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; import client.inventory.ModifyInventory; import constants.ItemConstants; +import constants.ServerConstants; import java.awt.Point; import java.util.ArrayList; @@ -549,12 +550,12 @@ public class MapleInventoryManipulator { if (weddingRing) { c.getPlayer().getMap().disappearingItemDrop(c.getPlayer(), c.getPlayer(), target, dropPos); } else if (c.getPlayer().getMap().getEverlast()) { - if (ii.isDropRestricted(target.getItemId()) || MapleItemInformationProvider.getInstance().isCash(target.getItemId())) { + if (ii.isDropRestricted(target.getItemId()) || ii.isCash(target.getItemId()) || isDroppedItemRestricted(target)) { c.getPlayer().getMap().disappearingItemDrop(c.getPlayer(), c.getPlayer(), target, dropPos); } else { c.getPlayer().getMap().spawnItemDrop(c.getPlayer(), c.getPlayer(), target, dropPos, true, true); } - } else if (ii.isDropRestricted(target.getItemId()) || MapleItemInformationProvider.getInstance().isCash(target.getItemId())) { + } else if (ii.isDropRestricted(target.getItemId()) || ii.isCash(target.getItemId()) || isDroppedItemRestricted(target)) { c.getPlayer().getMap().disappearingItemDrop(c.getPlayer(), c.getPlayer(), target, dropPos); } else { c.getPlayer().getMap().spawnItemDrop(c.getPlayer(), c.getPlayer(), target, dropPos, true, true); @@ -566,12 +567,12 @@ public class MapleInventoryManipulator { c.getPlayer().equipChanged(); } if (c.getPlayer().getMap().getEverlast()) { - if (ii.isDropRestricted(itemId) || ii.isCash(itemId)) { + if (ii.isDropRestricted(itemId) || ii.isCash(itemId) || isDroppedItemRestricted(source)) { c.getPlayer().getMap().disappearingItemDrop(c.getPlayer(), c.getPlayer(), source, dropPos); } else { c.getPlayer().getMap().spawnItemDrop(c.getPlayer(), c.getPlayer(), source, dropPos, true, true); } - } else if (ii.isDropRestricted(itemId) || ii.isCash(itemId)) { + } else if (ii.isDropRestricted(itemId) || ii.isCash(itemId) || isDroppedItemRestricted(source)) { c.getPlayer().getMap().disappearingItemDrop(c.getPlayer(), c.getPlayer(), source, dropPos); } else { c.getPlayer().getMap().spawnItemDrop(c.getPlayer(), c.getPlayer(), source, dropPos, true, true); @@ -579,6 +580,10 @@ public class MapleInventoryManipulator { } } + private static boolean isDroppedItemRestricted(Item it) { + return ServerConstants.USE_ERASE_UNTRADEABLE_DROP && ((it.getFlag() & ItemConstants.UNTRADEABLE) == ItemConstants.UNTRADEABLE); + } + private static boolean isOverall(int itemId) { return itemId / 10000 == 105; } diff --git a/src/server/MapleItemInformationProvider.java b/src/server/MapleItemInformationProvider.java index ae338c88fc..98ae6ff64d 100644 --- a/src/server/MapleItemInformationProvider.java +++ b/src/server/MapleItemInformationProvider.java @@ -1312,6 +1312,14 @@ public class MapleItemInformationProvider { int itemType = itemId / 1000; return itemType == 5211 || itemType == 5360; } + + public boolean isPartyItem(int itemId) { + return itemId >= 2022430 && itemId <= 2022433; + } + + public boolean isPartyAllcure(int itemId) { + return itemId == 2022433; + } public Collection canWearEquipment(MapleCharacter chr, Collection items) { MapleInventory inv = chr.getInventory(MapleInventoryType.EQUIPPED); diff --git a/src/server/MapleStatEffect.java b/src/server/MapleStatEffect.java index b0f75e03eb..a68afe1db0 100644 --- a/src/server/MapleStatEffect.java +++ b/src/server/MapleStatEffect.java @@ -228,10 +228,10 @@ public class MapleStatEffect { addBuffStatPairToListIfNotZero(statups, MapleBuffStat.BOOSTER, Integer.valueOf(ret.booster)); if(!skill) { - if(isDojoBuff(sourceid)) { + if(isDojoBuff(sourceid) || sourceid == 2022337) { ret.mhpR = (byte) MapleDataTool.getInt("mhpR", source, 0); ret.mhpRRate = (short) (MapleDataTool.getInt("mhpRRate", source, 0) * 100); - ret.mmpR = (byte) MapleDataTool.getInt("mmpRRate", source, 0); + ret.mmpR = (byte) MapleDataTool.getInt("mmpR", source, 0); ret.mmpRRate = (short) (MapleDataTool.getInt("mmpRRate", source, 0) * 100); addBuffStatPairToListIfNotZero(statups, MapleBuffStat.HPREC, Integer.valueOf(ret.mhpR)); diff --git a/src/server/maps/MapleDoor.java b/src/server/maps/MapleDoor.java index 85e405abe8..26cfffafc2 100644 --- a/src/server/maps/MapleDoor.java +++ b/src/server/maps/MapleDoor.java @@ -77,7 +77,11 @@ public class MapleDoor { try { return town.getAvailableDoorPortals().get(slot); } catch (IndexOutOfBoundsException e) { - return town.getAvailableDoorPortals().get(0); + try { + return town.getAvailableDoorPortals().get(0); + } catch (IndexOutOfBoundsException ex) { + return null; + } } } diff --git a/src/server/maps/MapleMap.java b/src/server/maps/MapleMap.java index 155f919934..e9bed0a50a 100644 --- a/src/server/maps/MapleMap.java +++ b/src/server/maps/MapleMap.java @@ -560,6 +560,10 @@ public class MapleMap { } } } + + public void dropFromReactor(final MapleCharacter chr, final MapleReactor reactor, Item drop, Point dropPos, short questid) { + spawnDrop(drop, this.calcDropPos(dropPos, reactor.getPosition()), reactor, chr, (byte)(chr.getParty() != null ? 1 : 0), questid); + } private void stopItemMonitor() { chrWLock.lock(); @@ -653,14 +657,14 @@ public class MapleMap { droppedItemCount.decrementAndGet(); } - private void spawnDrop(final Item idrop, final Point dropPos, final MapleMonster mob, final MapleCharacter chr, final byte droptype, final short questid) { - final MapleMapItem mdrop = new MapleMapItem(idrop, dropPos, mob, chr, droptype, false, questid); + private void spawnDrop(final Item idrop, final Point dropPos, final MapleMapObject dropper, final MapleCharacter chr, final byte droptype, final short questid) { + final MapleMapItem mdrop = new MapleMapItem(idrop, dropPos, dropper, chr, droptype, false, questid); mdrop.setDropTime(System.currentTimeMillis()); spawnAndAddRangedMapObject(mdrop, new DelayedPacketCreation() { @Override public void sendPackets(MapleClient c) { if (questid <= 0 || (c.getPlayer().getQuestStatus(questid) == 1 && c.getPlayer().needQuestItem(questid, idrop.getItemId()))) { - c.announce(MaplePacketCreator.dropItemFromMapObject(mdrop, mob.getPosition(), dropPos, (byte) 1)); + c.announce(MaplePacketCreator.dropItemFromMapObject(mdrop, dropper.getPosition(), dropPos, (byte) 1)); } } }, null); @@ -2591,37 +2595,39 @@ public class MapleMap { public void run() { reactor.lockReactor(); try { - if (reactor.getShouldCollect() == true && mapitem != null && mapitem == getMapObject(mapitem.getObjectId())) { - mapitem.lockItem(); - try { - TimerManager tMan = TimerManager.getInstance(); - if (mapitem.isPickedUp()) { - return; - } + if(reactor.getReactorType() == 100) { + if (reactor.getShouldCollect() == true && mapitem != null && mapitem == getMapObject(mapitem.getObjectId())) { + mapitem.lockItem(); + try { + TimerManager tMan = TimerManager.getInstance(); + if (mapitem.isPickedUp()) { + return; + } - reactor.setShouldCollect(false); - MapleMap.this.broadcastMessage(MaplePacketCreator.removeItemFromMap(mapitem.getObjectId(), 0, 0), mapitem.getPosition()); - MapleMap.this.removeMapObject(mapitem); - reactor.hitReactor(c); + reactor.setShouldCollect(false); + MapleMap.this.broadcastMessage(MaplePacketCreator.removeItemFromMap(mapitem.getObjectId(), 0, 0), mapitem.getPosition()); + MapleMap.this.removeMapObject(mapitem); + reactor.hitReactor(c); - if (reactor.getDelay() > 0) { - tMan.schedule(new Runnable() { - @Override - public void run() { - reactor.lockReactor(); - try { - reactor.setState((byte) 0); - reactor.resetReactorActions(); + if (reactor.getDelay() > 0) { + tMan.schedule(new Runnable() { + @Override + public void run() { + reactor.lockReactor(); + try { + reactor.setState((byte) 0); + reactor.resetReactorActions(); - broadcastMessage(MaplePacketCreator.triggerReactor(reactor, 0)); - } finally { - reactor.unlockReactor(); + broadcastMessage(MaplePacketCreator.triggerReactor(reactor, 0)); + } finally { + reactor.unlockReactor(); + } } - } - }, reactor.getDelay()); + }, reactor.getDelay()); + } + } finally { + mapitem.unlockItem(); } - } finally { - mapitem.unlockItem(); } } } finally { diff --git a/src/server/maps/MapleMapFactory.java b/src/server/maps/MapleMapFactory.java index ca1ab719f0..43d8178285 100644 --- a/src/server/maps/MapleMapFactory.java +++ b/src/server/maps/MapleMapFactory.java @@ -271,6 +271,8 @@ public class MapleMapFactory { private AbstractLoadedMapleLife loadLife(MapleData life, String id, String type) { AbstractLoadedMapleLife myLife = MapleLifeFactory.getLife(Integer.parseInt(id), type); + if(life == null) System.out.println("lf null"); + if(myLife == null) System.out.println("mlf null"); myLife.setCy(MapleDataTool.getInt(life.getChildByPath("cy"))); MapleData dF = life.getChildByPath("f"); if (dF != null) { @@ -293,11 +295,10 @@ public class MapleMapFactory { MapleReactor myReactor = new MapleReactor(MapleReactorFactory.getReactor(Integer.parseInt(id)), Integer.parseInt(id)); int x = MapleDataTool.getInt(reactor.getChildByPath("x")); int y = MapleDataTool.getInt(reactor.getChildByPath("y")); - myReactor.setName(MapleDataTool.getString(reactor.getChildByPath("name"), "")); myReactor.setPosition(new Point(x, y)); myReactor.setDelay(MapleDataTool.getInt(reactor.getChildByPath("reactorTime")) * 1000); myReactor.setState((byte) 0); - + myReactor.setName(MapleDataTool.getString(reactor.getChildByPath("name"), "")); myReactor.resetReactorActions(); return myReactor; } diff --git a/wz/Item.wz/Consume/0202.img.xml b/wz/Item.wz/Consume/0202.img.xml index 5c7ed9238a..fbef1abeb8 100644 --- a/wz/Item.wz/Consume/0202.img.xml +++ b/wz/Item.wz/Consume/0202.img.xml @@ -4698,8 +4698,11 @@ - - + + + + + diff --git a/wz/Map.wz/Map/Map2/250020000.img.xml b/wz/Map.wz/Map/Map2/250020000.img.xml index 39671d3226..ac09bb0fe0 100644 --- a/wz/Map.wz/Map/Map2/250020000.img.xml +++ b/wz/Map.wz/Map/Map2/250020000.img.xml @@ -446,7 +446,7 @@ - + diff --git a/wz/Map.wz/Map/Map2/270020211.img.xml b/wz/Map.wz/Map/Map2/270020211.img.xml index 9280b8d84d..0d137393d5 100644 --- a/wz/Map.wz/Map/Map2/270020211.img.xml +++ b/wz/Map.wz/Map/Map2/270020211.img.xml @@ -5,7 +5,7 @@ - + diff --git a/wz/Quest.wz/Act.img.xml b/wz/Quest.wz/Act.img.xml index 031d3e07fb..e6a7a01002 100644 --- a/wz/Quest.wz/Act.img.xml +++ b/wz/Quest.wz/Act.img.xml @@ -24197,16 +24197,8 @@ - - - - - - - - @@ -24336,6 +24328,13 @@ + + + + + + + diff --git a/wz/Quest.wz/Check.img.xml b/wz/Quest.wz/Check.img.xml index b7fd07bbf3..b3ee572f3f 100644 --- a/wz/Quest.wz/Check.img.xml +++ b/wz/Quest.wz/Check.img.xml @@ -43959,12 +43959,7 @@ - - - - - - + @@ -44097,6 +44092,7 @@ + @@ -44282,10 +44278,10 @@ - - + - + + diff --git a/wz/Reactor.wz/2618000.img.xml b/wz/Reactor.wz/2618000.img.xml index 3bad1081df..a3a326146f 100644 --- a/wz/Reactor.wz/2618000.img.xml +++ b/wz/Reactor.wz/2618000.img.xml @@ -182,6 +182,19 @@ + + + + + + + + + + + + + @@ -193,7 +206,6 @@ - @@ -209,6 +221,23 @@ + + + + + + + + + + + + + + + + + @@ -246,24 +275,20 @@ - - - - - - - - - + + + - - - + + + + +