Quest clock & ThreadTracker & MapleArrowFetcher patches

Fixed quest timer UI not disappearing on the client on quest complete.
Fixed a bug on ThreadTracker, not displaying properly the last acquired lock-type.
Fixed MapleArrowFetcher giving out same values from min and max ranges. Max should always be greater than min. Updated DB drops.
Readjusted player ids now starting from 1 again, and moved field oids to start counting from 1bil.
This commit is contained in:
ronancpl committed 2017-11-18 11:24:24 -02:00
1 parent 2b38b62683
commit 71ad2ee3a9
49 files changed
+786 -683

No files matched your search

+34 -23
View File
@@ -2,28 +2,39 @@
.idea/ .idea/
# build files # build files
*build.xml
/build/** /build/
/tools/MapleArrowFetcher/build/**
/tools/MapleCouponInstaller/build/**
/tools/MapleIdRetriever/build/**
/tools/MapleMesoFetcher/build/**
/tools/MapleQuestItemFetcher/build/**
/tools/MobBookIndexer/build/**
/tools/MobBookUpdate/build/**
/dist/ /dist/
/tools/MobBookUpdate - Copia/build/ /nbproject/private/
/tools/MobBookUpdate - Copia/dist/
/tools/MobBookUpdate - Copia/nbproject/private/ /tools/MapleArrowFetcher/build/
/tools/ItemMakerUpdate/build/ /tools/MapleArrowFetcher/dist/
/tools/ItemMakerUpdate/dist/ /tools/MapleArrowFetcher/nbproject/private/
/tools/ItemMakerUpdate/nbproject/private/
/tools/MapleMakerUpdate/build/ /tools/MapleCouponInstaller/build/
/tools/MapleMakerUpdate/dist/ /tools/MapleCouponInstaller/dist/
/tools/MapleMakerUpdate/nbproject/private/ /tools/MapleCouponInstaller/nbproject/private/
/tools/MapleMakerFetcher/build/
/tools/MapleMakerFetcher/dist/ /tools/MapleIdRetriever/build/
/tools/MapleMakerFetcher/nbproject/private/ /tools/MapleIdRetriever/dist/
/tools/MapleSkillMakerFetcher/nbproject/private/ /tools/MapleIdRetriever/nbproject/private/
/tools/MapleMesoFetcher/build/
/tools/MapleMesoFetcher/dist/
/tools/MapleMesoFetcher/nbproject/private/
/tools/MapleQuestItemFetcher/build/
/tools/MapleQuestItemFetcher/dist/
/tools/MapleQuestItemFetcher/nbproject/private/
/tools/MapleSkillMakerFetcher/build/ /tools/MapleSkillMakerFetcher/build/
/tools/MapleSkillMakerFetcher/dist/ /tools/MapleSkillMakerFetcher/dist/
/tools/MapleSkillMakerFetcher/nbproject/private/
/tools/MobBookIndexer/build/
/tools/MobBookIndexer/dist/
/tools/MobBookIndexer/nbproject/private/
/tools/MobBookUpdate/build/
/tools/MobBookUpdate/dist/
/tools/MobBookUpdate/nbproject/private/
BIN
View File
Binary file not shown.
+7 -1
View File
@@ -674,4 +674,10 @@ Corrigida questline de mounts e skills de Aran.
15 Novembro 2017, 15 Novembro 2017,
Implementado sistema de auditoria de deadlocks: ThreadTracker. Implementado sistema de auditoria de deadlocks: ThreadTracker.
Corrigido bug onde jogadores recebem dano de mobs de mapas anteriores (que acarretavam em problemas com OID e natureza dos objetos). Corrigido bug onde jogadores recebem dano de mobs de mapas anteriores (que acarretavam em problemas com OID e natureza dos objetos).
Corrigido alguns problemas com exceção sendo lançada ao tentar desligar o server. Corrigido alguns problemas com exceção sendo lançada ao tentar desligar o server.
16 - 17 Novembro 2017,
Rearranjado ID de jogador agora começando de 1 mais uma vez. Espera-se que não haja mais de 1bil de jogadores registrados.
Corrigido timer de quest não saindo do cliente quando dado o termino bem-sucedido da quest.
Corrigido MapleArrowFetcher atribuindo valores iguais para min e max ranges. Max deve sempre ser maior que min.
Corrigido bug no ThreadTracker não mostrando os últimos locks capturados pelas threads corretamente.
+1 -4
View File
@@ -2,9 +2,6 @@
<project-private xmlns="http://www.netbeans.org/ns/project-private/1"> <project-private xmlns="http://www.netbeans.org/ns/project-private/1">
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="2"/> <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="2"/>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2"> <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group> <group/>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/client/command/Commands.java</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/constants/ServerConstants.java</file>
</group>
</open-files> </open-files>
</project-private> </project-private>
+1 -1
View File
@@ -190,7 +190,7 @@ CREATE TABLE IF NOT EXISTS `characters` (
KEY `ranking2` (`gm`,`job`), KEY `ranking2` (`gm`,`job`),
INDEX (id, accountid, world), INDEX (id, accountid, world),
INDEX (id, accountid, name) INDEX (id, accountid, name)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 PACK_KEYS=0 AUTO_INCREMENT=20000000 ; # map oid issues, start from 20mil ) ENGINE=InnoDB DEFAULT CHARSET=latin1 PACK_KEYS=0 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `cooldowns` ( CREATE TABLE IF NOT EXISTS `cooldowns` (
`id` int(11) NOT NULL AUTO_INCREMENT, `id` int(11) NOT NULL AUTO_INCREMENT,
+255 -254
View File
@@ -21782,6 +21782,7 @@ USE `maplesolaxia`;
DELETE FROM drop_data WHERE dropperid >= 9300184 AND dropperid <= 9300215 AND itemid = 0; DELETE FROM drop_data WHERE dropperid >= 9300184 AND dropperid <= 9300215 AND itemid = 0;
# MapleArrowFetcher! Set proper arrow quantity drop for the mobs. # MapleArrowFetcher! Set proper arrow quantity drop for the mobs.
UPDATE drop_data UPDATE drop_data
SET minimum_quantity = CASE SET minimum_quantity = CASE
WHEN dropperid = 100100 AND itemid = 2060000 THEN 1 WHEN dropperid = 100100 AND itemid = 2060000 THEN 1
@@ -22164,280 +22165,280 @@ SET minimum_quantity = CASE
WHEN dropperid = 9500369 AND itemid = 2060000 THEN 19 WHEN dropperid = 9500369 AND itemid = 2060000 THEN 19
ELSE minimum_quantity END, ELSE minimum_quantity END,
maximum_quantity = CASE maximum_quantity = CASE
WHEN dropperid = 100100 AND itemid = 2060000 THEN 1 WHEN dropperid = 100100 AND itemid = 2060000 THEN 2
WHEN dropperid = 100100 AND itemid = 2061000 THEN 1 WHEN dropperid = 100100 AND itemid = 2061000 THEN 2
WHEN dropperid = 100101 AND itemid = 2060000 THEN 2 WHEN dropperid = 100101 AND itemid = 2060000 THEN 3
WHEN dropperid = 100101 AND itemid = 2061000 THEN 2 WHEN dropperid = 100101 AND itemid = 2061000 THEN 3
WHEN dropperid = 100120 AND itemid = 2060000 THEN 1 WHEN dropperid = 100120 AND itemid = 2060000 THEN 2
WHEN dropperid = 100120 AND itemid = 2061000 THEN 1 WHEN dropperid = 100120 AND itemid = 2061000 THEN 2
WHEN dropperid = 100121 AND itemid = 2060000 THEN 5 WHEN dropperid = 100121 AND itemid = 2060000 THEN 5
WHEN dropperid = 100123 AND itemid = 2061000 THEN 11 WHEN dropperid = 100123 AND itemid = 2061000 THEN 12
WHEN dropperid = 100124 AND itemid = 2060000 THEN 13 WHEN dropperid = 100124 AND itemid = 2060000 THEN 14
WHEN dropperid = 100124 AND itemid = 2061000 THEN 13 WHEN dropperid = 100124 AND itemid = 2061000 THEN 14
WHEN dropperid = 120100 AND itemid = 2060000 THEN 2 WHEN dropperid = 120100 AND itemid = 2060000 THEN 3
WHEN dropperid = 120100 AND itemid = 2061000 THEN 2 WHEN dropperid = 120100 AND itemid = 2061000 THEN 3
WHEN dropperid = 130100 AND itemid = 2060000 THEN 6 WHEN dropperid = 130100 AND itemid = 2060000 THEN 7
WHEN dropperid = 130100 AND itemid = 2061000 THEN 6 WHEN dropperid = 130100 AND itemid = 2061000 THEN 7
WHEN dropperid = 130101 AND itemid = 2060000 THEN 6 WHEN dropperid = 130101 AND itemid = 2060000 THEN 7
WHEN dropperid = 130101 AND itemid = 2061000 THEN 6 WHEN dropperid = 130101 AND itemid = 2061000 THEN 7
WHEN dropperid = 210100 AND itemid = 2060000 THEN 8 WHEN dropperid = 210100 AND itemid = 2060000 THEN 9
WHEN dropperid = 210100 AND itemid = 2061000 THEN 8 WHEN dropperid = 210100 AND itemid = 2061000 THEN 9
WHEN dropperid = 1110100 AND itemid = 2060000 THEN 23 WHEN dropperid = 1110100 AND itemid = 2060000 THEN 24
WHEN dropperid = 1110100 AND itemid = 2061000 THEN 23 WHEN dropperid = 1110100 AND itemid = 2061000 THEN 24
WHEN dropperid = 1110101 AND itemid = 2060000 THEN 16 WHEN dropperid = 1110101 AND itemid = 2060000 THEN 17
WHEN dropperid = 1110101 AND itemid = 2061000 THEN 16 WHEN dropperid = 1110101 AND itemid = 2061000 THEN 17
WHEN dropperid = 1110130 AND itemid = 2060000 THEN 23 WHEN dropperid = 1110130 AND itemid = 2060000 THEN 24
WHEN dropperid = 1110130 AND itemid = 2061000 THEN 23 WHEN dropperid = 1110130 AND itemid = 2061000 THEN 24
WHEN dropperid = 1120100 AND itemid = 2060000 THEN 18 WHEN dropperid = 1120100 AND itemid = 2060000 THEN 19
WHEN dropperid = 1120100 AND itemid = 2061000 THEN 18 WHEN dropperid = 1120100 AND itemid = 2061000 THEN 19
WHEN dropperid = 1130100 AND itemid = 2060000 THEN 27 WHEN dropperid = 1130100 AND itemid = 2060000 THEN 28
WHEN dropperid = 1130100 AND itemid = 2061000 THEN 27 WHEN dropperid = 1130100 AND itemid = 2061000 THEN 28
WHEN dropperid = 1140100 AND itemid = 2060000 THEN 30 WHEN dropperid = 1140100 AND itemid = 2060000 THEN 30
WHEN dropperid = 1140100 AND itemid = 2061000 THEN 30 WHEN dropperid = 1140100 AND itemid = 2061000 THEN 30
WHEN dropperid = 1140130 AND itemid = 2060000 THEN 30 WHEN dropperid = 1140130 AND itemid = 2060000 THEN 30
WHEN dropperid = 1140130 AND itemid = 2061000 THEN 30 WHEN dropperid = 1140130 AND itemid = 2061000 THEN 30
WHEN dropperid = 1210100 AND itemid = 2060000 THEN 11 WHEN dropperid = 1210100 AND itemid = 2060000 THEN 12
WHEN dropperid = 1210100 AND itemid = 2061000 THEN 11 WHEN dropperid = 1210100 AND itemid = 2061000 THEN 12
WHEN dropperid = 1210101 AND itemid = 2060000 THEN 16 WHEN dropperid = 1210101 AND itemid = 2060000 THEN 17
WHEN dropperid = 1210101 AND itemid = 2061000 THEN 16 WHEN dropperid = 1210101 AND itemid = 2061000 THEN 17
WHEN dropperid = 1210102 AND itemid = 2060000 THEN 12 WHEN dropperid = 1210102 AND itemid = 2060000 THEN 13
WHEN dropperid = 1210102 AND itemid = 2061000 THEN 12 WHEN dropperid = 1210102 AND itemid = 2061000 THEN 13
WHEN dropperid = 1210103 AND itemid = 2060000 THEN 23 WHEN dropperid = 1210103 AND itemid = 2060000 THEN 24
WHEN dropperid = 1210103 AND itemid = 2061000 THEN 23 WHEN dropperid = 1210103 AND itemid = 2061000 THEN 24
WHEN dropperid = 2100100 AND itemid = 2060000 THEN 32 WHEN dropperid = 2100100 AND itemid = 2060000 THEN 33
WHEN dropperid = 2100100 AND itemid = 2061000 THEN 32 WHEN dropperid = 2100100 AND itemid = 2061000 THEN 33
WHEN dropperid = 2100101 AND itemid = 2060000 THEN 33 WHEN dropperid = 2100101 AND itemid = 2060000 THEN 34
WHEN dropperid = 2100101 AND itemid = 2061000 THEN 33 WHEN dropperid = 2100101 AND itemid = 2061000 THEN 34
WHEN dropperid = 2100102 AND itemid = 2060000 THEN 35 WHEN dropperid = 2100102 AND itemid = 2060000 THEN 35
WHEN dropperid = 2100102 AND itemid = 2061000 THEN 35 WHEN dropperid = 2100102 AND itemid = 2061000 THEN 35
WHEN dropperid = 2100103 AND itemid = 2060000 THEN 40 WHEN dropperid = 2100103 AND itemid = 2060000 THEN 40
WHEN dropperid = 2100103 AND itemid = 2061000 THEN 40 WHEN dropperid = 2100103 AND itemid = 2061000 THEN 40
WHEN dropperid = 2100104 AND itemid = 2060000 THEN 45 WHEN dropperid = 2100104 AND itemid = 2060000 THEN 45
WHEN dropperid = 2100104 AND itemid = 2061000 THEN 45 WHEN dropperid = 2100104 AND itemid = 2061000 THEN 45
WHEN dropperid = 2100105 AND itemid = 2060000 THEN 37 WHEN dropperid = 2100105 AND itemid = 2060000 THEN 38
WHEN dropperid = 2100105 AND itemid = 2061000 THEN 37 WHEN dropperid = 2100105 AND itemid = 2061000 THEN 38
WHEN dropperid = 2100106 AND itemid = 2060000 THEN 38 WHEN dropperid = 2100106 AND itemid = 2060000 THEN 39
WHEN dropperid = 2100106 AND itemid = 2061000 THEN 38 WHEN dropperid = 2100106 AND itemid = 2061000 THEN 39
WHEN dropperid = 2100107 AND itemid = 2060000 THEN 43 WHEN dropperid = 2100107 AND itemid = 2060000 THEN 44
WHEN dropperid = 2100107 AND itemid = 2061000 THEN 43 WHEN dropperid = 2100107 AND itemid = 2061000 THEN 44
WHEN dropperid = 2100108 AND itemid = 2060000 THEN 46 WHEN dropperid = 2100108 AND itemid = 2060000 THEN 47
WHEN dropperid = 2100108 AND itemid = 2061000 THEN 46 WHEN dropperid = 2100108 AND itemid = 2061000 THEN 47
WHEN dropperid = 2110200 AND itemid = 2060000 THEN 35 WHEN dropperid = 2110200 AND itemid = 2060000 THEN 35
WHEN dropperid = 2110200 AND itemid = 2061000 THEN 35 WHEN dropperid = 2110200 AND itemid = 2061000 THEN 35
WHEN dropperid = 2110300 AND itemid = 2060000 THEN 38 WHEN dropperid = 2110300 AND itemid = 2060000 THEN 39
WHEN dropperid = 2110300 AND itemid = 2061000 THEN 38 WHEN dropperid = 2110300 AND itemid = 2061000 THEN 39
WHEN dropperid = 2110301 AND itemid = 2060000 THEN 46 WHEN dropperid = 2110301 AND itemid = 2060000 THEN 47
WHEN dropperid = 2110301 AND itemid = 2061000 THEN 46 WHEN dropperid = 2110301 AND itemid = 2061000 THEN 47
WHEN dropperid = 2130100 AND itemid = 2060000 THEN 35 WHEN dropperid = 2130100 AND itemid = 2060000 THEN 35
WHEN dropperid = 2130100 AND itemid = 2061000 THEN 35 WHEN dropperid = 2130100 AND itemid = 2061000 THEN 35
WHEN dropperid = 2220000 AND itemid = 2060000 THEN 45 WHEN dropperid = 2220000 AND itemid = 2060000 THEN 45
WHEN dropperid = 2220000 AND itemid = 2061000 THEN 45 WHEN dropperid = 2220000 AND itemid = 2061000 THEN 45
WHEN dropperid = 2220100 AND itemid = 2060000 THEN 32 WHEN dropperid = 2220100 AND itemid = 2060000 THEN 33
WHEN dropperid = 2220100 AND itemid = 2061000 THEN 32 WHEN dropperid = 2220100 AND itemid = 2061000 THEN 33
WHEN dropperid = 2230100 AND itemid = 2060000 THEN 43 WHEN dropperid = 2230100 AND itemid = 2060000 THEN 44
WHEN dropperid = 2230100 AND itemid = 2061000 THEN 43 WHEN dropperid = 2230100 AND itemid = 2061000 THEN 44
WHEN dropperid = 2230101 AND itemid = 2060000 THEN 38 WHEN dropperid = 2230101 AND itemid = 2060000 THEN 39
WHEN dropperid = 2230101 AND itemid = 2061000 THEN 38 WHEN dropperid = 2230101 AND itemid = 2061000 THEN 39
WHEN dropperid = 2230102 AND itemid = 2060000 THEN 40 WHEN dropperid = 2230102 AND itemid = 2060000 THEN 40
WHEN dropperid = 2230102 AND itemid = 2061000 THEN 40 WHEN dropperid = 2230102 AND itemid = 2061000 THEN 40
WHEN dropperid = 2230103 AND itemid = 2060000 THEN 37 WHEN dropperid = 2230103 AND itemid = 2060000 THEN 38
WHEN dropperid = 2230103 AND itemid = 2061000 THEN 37 WHEN dropperid = 2230103 AND itemid = 2061000 THEN 38
WHEN dropperid = 2230104 AND itemid = 2060000 THEN 45 WHEN dropperid = 2230104 AND itemid = 2060000 THEN 45
WHEN dropperid = 2230104 AND itemid = 2061000 THEN 45 WHEN dropperid = 2230104 AND itemid = 2061000 THEN 45
WHEN dropperid = 2230105 AND itemid = 2060000 THEN 37 WHEN dropperid = 2230105 AND itemid = 2060000 THEN 38
WHEN dropperid = 2230105 AND itemid = 2061000 THEN 37 WHEN dropperid = 2230105 AND itemid = 2061000 THEN 38
WHEN dropperid = 2230106 AND itemid = 2060000 THEN 40 WHEN dropperid = 2230106 AND itemid = 2060000 THEN 40
WHEN dropperid = 2230106 AND itemid = 2061000 THEN 40 WHEN dropperid = 2230106 AND itemid = 2061000 THEN 40
WHEN dropperid = 2230107 AND itemid = 2060000 THEN 38 WHEN dropperid = 2230107 AND itemid = 2060000 THEN 39
WHEN dropperid = 2230107 AND itemid = 2061000 THEN 38 WHEN dropperid = 2230107 AND itemid = 2061000 THEN 39
WHEN dropperid = 2230108 AND itemid = 2060000 THEN 35 WHEN dropperid = 2230108 AND itemid = 2060000 THEN 35
WHEN dropperid = 2230108 AND itemid = 2061000 THEN 35 WHEN dropperid = 2230108 AND itemid = 2061000 THEN 35
WHEN dropperid = 2230109 AND itemid = 2060000 THEN 45 WHEN dropperid = 2230109 AND itemid = 2060000 THEN 45
WHEN dropperid = 2230109 AND itemid = 2061000 THEN 45 WHEN dropperid = 2230109 AND itemid = 2061000 THEN 45
WHEN dropperid = 2230110 AND itemid = 2060000 THEN 37 WHEN dropperid = 2230110 AND itemid = 2060000 THEN 38
WHEN dropperid = 2230110 AND itemid = 2061000 THEN 37 WHEN dropperid = 2230110 AND itemid = 2061000 THEN 38
WHEN dropperid = 2230111 AND itemid = 2060000 THEN 38 WHEN dropperid = 2230111 AND itemid = 2060000 THEN 39
WHEN dropperid = 2230111 AND itemid = 2061000 THEN 38 WHEN dropperid = 2230111 AND itemid = 2061000 THEN 39
WHEN dropperid = 2230131 AND itemid = 2060000 THEN 38 WHEN dropperid = 2230131 AND itemid = 2060000 THEN 39
WHEN dropperid = 2230131 AND itemid = 2061000 THEN 38 WHEN dropperid = 2230131 AND itemid = 2061000 THEN 39
WHEN dropperid = 2230200 AND itemid = 2060000 THEN 46 WHEN dropperid = 2230200 AND itemid = 2060000 THEN 47
WHEN dropperid = 2230200 AND itemid = 2061000 THEN 46 WHEN dropperid = 2230200 AND itemid = 2061000 THEN 47
WHEN dropperid = 2300100 AND itemid = 2060000 THEN 32 WHEN dropperid = 2300100 AND itemid = 2060000 THEN 33
WHEN dropperid = 2300100 AND itemid = 2061000 THEN 32 WHEN dropperid = 2300100 AND itemid = 2061000 THEN 33
WHEN dropperid = 3000000 AND itemid = 2060000 THEN 48 WHEN dropperid = 3000000 AND itemid = 2060000 THEN 49
WHEN dropperid = 3000000 AND itemid = 2061000 THEN 48 WHEN dropperid = 3000000 AND itemid = 2061000 THEN 49
WHEN dropperid = 3000005 AND itemid = 2060000 THEN 48 WHEN dropperid = 3000005 AND itemid = 2060000 THEN 49
WHEN dropperid = 3000005 AND itemid = 2061000 THEN 48 WHEN dropperid = 3000005 AND itemid = 2061000 THEN 49
WHEN dropperid = 3000006 AND itemid = 2060000 THEN 48 WHEN dropperid = 3000006 AND itemid = 2060000 THEN 49
WHEN dropperid = 3000006 AND itemid = 2061000 THEN 48 WHEN dropperid = 3000006 AND itemid = 2061000 THEN 49
WHEN dropperid = 3100101 AND itemid = 2060000 THEN 51 WHEN dropperid = 3100101 AND itemid = 2060000 THEN 52
WHEN dropperid = 3100101 AND itemid = 2061000 THEN 51 WHEN dropperid = 3100101 AND itemid = 2061000 THEN 52
WHEN dropperid = 3100102 AND itemid = 2060000 THEN 48 WHEN dropperid = 3100102 AND itemid = 2060000 THEN 49
WHEN dropperid = 3100102 AND itemid = 2061000 THEN 48 WHEN dropperid = 3100102 AND itemid = 2061000 THEN 49
WHEN dropperid = 3110101 AND itemid = 2060000 THEN 51 WHEN dropperid = 3110101 AND itemid = 2060000 THEN 52
WHEN dropperid = 3110101 AND itemid = 2061000 THEN 51 WHEN dropperid = 3110101 AND itemid = 2061000 THEN 52
WHEN dropperid = 3110102 AND itemid = 2060000 THEN 51 WHEN dropperid = 3110102 AND itemid = 2060000 THEN 52
WHEN dropperid = 3110102 AND itemid = 2061000 THEN 51 WHEN dropperid = 3110102 AND itemid = 2061000 THEN 52
WHEN dropperid = 3110300 AND itemid = 2060000 THEN 51 WHEN dropperid = 3110300 AND itemid = 2060000 THEN 52
WHEN dropperid = 3110300 AND itemid = 2061000 THEN 51 WHEN dropperid = 3110300 AND itemid = 2061000 THEN 52
WHEN dropperid = 3110301 AND itemid = 2060000 THEN 51 WHEN dropperid = 3110301 AND itemid = 2060000 THEN 52
WHEN dropperid = 3110301 AND itemid = 2061000 THEN 51 WHEN dropperid = 3110301 AND itemid = 2061000 THEN 52
WHEN dropperid = 3110302 AND itemid = 2060000 THEN 56 WHEN dropperid = 3110302 AND itemid = 2060000 THEN 57
WHEN dropperid = 3110302 AND itemid = 2061000 THEN 56 WHEN dropperid = 3110302 AND itemid = 2061000 THEN 57
WHEN dropperid = 3110303 AND itemid = 2060000 THEN 61 WHEN dropperid = 3110303 AND itemid = 2060000 THEN 62
WHEN dropperid = 3110303 AND itemid = 2061000 THEN 61 WHEN dropperid = 3110303 AND itemid = 2061000 THEN 62
WHEN dropperid = 3210100 AND itemid = 2060005 THEN 8 WHEN dropperid = 3210100 AND itemid = 2060005 THEN 8
WHEN dropperid = 3210203 AND itemid = 2060000 THEN 58 WHEN dropperid = 3210203 AND itemid = 2060000 THEN 59
WHEN dropperid = 3210203 AND itemid = 2061000 THEN 58 WHEN dropperid = 3210203 AND itemid = 2061000 THEN 59
WHEN dropperid = 3210204 AND itemid = 2060000 THEN 55 WHEN dropperid = 3210204 AND itemid = 2060000 THEN 55
WHEN dropperid = 3210204 AND itemid = 2061000 THEN 55 WHEN dropperid = 3210204 AND itemid = 2061000 THEN 55
WHEN dropperid = 3210205 AND itemid = 2060000 THEN 55 WHEN dropperid = 3210205 AND itemid = 2060000 THEN 55
WHEN dropperid = 3210205 AND itemid = 2061000 THEN 55 WHEN dropperid = 3210205 AND itemid = 2061000 THEN 55
WHEN dropperid = 3210206 AND itemid = 2060000 THEN 58 WHEN dropperid = 3210206 AND itemid = 2060000 THEN 59
WHEN dropperid = 3210206 AND itemid = 2061000 THEN 58 WHEN dropperid = 3210206 AND itemid = 2061000 THEN 59
WHEN dropperid = 3210207 AND itemid = 2060000 THEN 55 WHEN dropperid = 3210207 AND itemid = 2060000 THEN 55
WHEN dropperid = 3210207 AND itemid = 2060005 THEN 9 WHEN dropperid = 3210207 AND itemid = 2060005 THEN 9
WHEN dropperid = 3210207 AND itemid = 2061000 THEN 55 WHEN dropperid = 3210207 AND itemid = 2061000 THEN 55
WHEN dropperid = 3210208 AND itemid = 2060000 THEN 58 WHEN dropperid = 3210208 AND itemid = 2060000 THEN 59
WHEN dropperid = 3210208 AND itemid = 2061000 THEN 58 WHEN dropperid = 3210208 AND itemid = 2061000 THEN 59
WHEN dropperid = 3210450 AND itemid = 2060000 THEN 58 WHEN dropperid = 3210450 AND itemid = 2060000 THEN 59
WHEN dropperid = 3210450 AND itemid = 2061000 THEN 58 WHEN dropperid = 3210450 AND itemid = 2061000 THEN 59
WHEN dropperid = 3210800 AND itemid = 2060005 THEN 10 WHEN dropperid = 3210800 AND itemid = 2060005 THEN 10
WHEN dropperid = 3220000 AND itemid = 2060000 THEN 78 WHEN dropperid = 3220000 AND itemid = 2060000 THEN 79
WHEN dropperid = 3220000 AND itemid = 2061000 THEN 78 WHEN dropperid = 3220000 AND itemid = 2061000 THEN 79
WHEN dropperid = 3230100 AND itemid = 2060000 THEN 56 WHEN dropperid = 3230100 AND itemid = 2060000 THEN 57
WHEN dropperid = 3230100 AND itemid = 2061000 THEN 56 WHEN dropperid = 3230100 AND itemid = 2061000 THEN 57
WHEN dropperid = 3230103 AND itemid = 2060000 THEN 61 WHEN dropperid = 3230103 AND itemid = 2060000 THEN 62
WHEN dropperid = 3230103 AND itemid = 2061000 THEN 61 WHEN dropperid = 3230103 AND itemid = 2061000 THEN 62
WHEN dropperid = 3230200 AND itemid = 2060000 THEN 56 WHEN dropperid = 3230200 AND itemid = 2060000 THEN 57
WHEN dropperid = 3230200 AND itemid = 2061000 THEN 56 WHEN dropperid = 3230200 AND itemid = 2061000 THEN 57
WHEN dropperid = 3230302 AND itemid = 2060000 THEN 56 WHEN dropperid = 3230302 AND itemid = 2060000 THEN 57
WHEN dropperid = 3230302 AND itemid = 2061000 THEN 56 WHEN dropperid = 3230302 AND itemid = 2061000 THEN 57
WHEN dropperid = 3230303 AND itemid = 2060000 THEN 60 WHEN dropperid = 3230303 AND itemid = 2060000 THEN 60
WHEN dropperid = 3230303 AND itemid = 2061000 THEN 60 WHEN dropperid = 3230303 AND itemid = 2061000 THEN 60
WHEN dropperid = 3230304 AND itemid = 2060000 THEN 61 WHEN dropperid = 3230304 AND itemid = 2060000 THEN 62
WHEN dropperid = 3230304 AND itemid = 2061000 THEN 61 WHEN dropperid = 3230304 AND itemid = 2061000 THEN 62
WHEN dropperid = 3230305 AND itemid = 2060000 THEN 63 WHEN dropperid = 3230305 AND itemid = 2060000 THEN 64
WHEN dropperid = 3230305 AND itemid = 2061000 THEN 63 WHEN dropperid = 3230305 AND itemid = 2061000 THEN 64
WHEN dropperid = 3230306 AND itemid = 2060000 THEN 60 WHEN dropperid = 3230306 AND itemid = 2060000 THEN 60
WHEN dropperid = 3230306 AND itemid = 2061000 THEN 60 WHEN dropperid = 3230306 AND itemid = 2061000 THEN 60
WHEN dropperid = 3230307 AND itemid = 2060000 THEN 50 WHEN dropperid = 3230307 AND itemid = 2060000 THEN 50
WHEN dropperid = 3230307 AND itemid = 2061000 THEN 50 WHEN dropperid = 3230307 AND itemid = 2061000 THEN 50
WHEN dropperid = 3230308 AND itemid = 2060000 THEN 63 WHEN dropperid = 3230308 AND itemid = 2060000 THEN 64
WHEN dropperid = 3230308 AND itemid = 2061000 THEN 63 WHEN dropperid = 3230308 AND itemid = 2061000 THEN 64
WHEN dropperid = 3230400 AND itemid = 2060000 THEN 48 WHEN dropperid = 3230400 AND itemid = 2060000 THEN 49
WHEN dropperid = 3230400 AND itemid = 2061000 THEN 48 WHEN dropperid = 3230400 AND itemid = 2061000 THEN 49
WHEN dropperid = 3230405 AND itemid = 2060000 THEN 61 WHEN dropperid = 3230405 AND itemid = 2060000 THEN 62
WHEN dropperid = 3230405 AND itemid = 2061000 THEN 61 WHEN dropperid = 3230405 AND itemid = 2061000 THEN 62
WHEN dropperid = 3300000 AND itemid = 2060000 THEN 48 WHEN dropperid = 3300000 AND itemid = 2060000 THEN 49
WHEN dropperid = 3300000 AND itemid = 2061000 THEN 48 WHEN dropperid = 3300000 AND itemid = 2061000 THEN 49
WHEN dropperid = 3300001 AND itemid = 2060000 THEN 48 WHEN dropperid = 3300001 AND itemid = 2060000 THEN 49
WHEN dropperid = 3300001 AND itemid = 2061000 THEN 48 WHEN dropperid = 3300001 AND itemid = 2061000 THEN 49
WHEN dropperid = 3300002 AND itemid = 2060000 THEN 50 WHEN dropperid = 3300002 AND itemid = 2060000 THEN 50
WHEN dropperid = 3300002 AND itemid = 2061000 THEN 50 WHEN dropperid = 3300002 AND itemid = 2061000 THEN 50
WHEN dropperid = 3300003 AND itemid = 2060000 THEN 51 WHEN dropperid = 3300003 AND itemid = 2060000 THEN 52
WHEN dropperid = 3300003 AND itemid = 2061000 THEN 51 WHEN dropperid = 3300003 AND itemid = 2061000 THEN 52
WHEN dropperid = 3300004 AND itemid = 2060000 THEN 53 WHEN dropperid = 3300004 AND itemid = 2060000 THEN 54
WHEN dropperid = 3300004 AND itemid = 2061000 THEN 53 WHEN dropperid = 3300004 AND itemid = 2061000 THEN 54
WHEN dropperid = 3300006 AND itemid = 2060000 THEN 56 WHEN dropperid = 3300006 AND itemid = 2060000 THEN 57
WHEN dropperid = 3300006 AND itemid = 2061000 THEN 56 WHEN dropperid = 3300006 AND itemid = 2061000 THEN 57
WHEN dropperid = 3300007 AND itemid = 2060000 THEN 56 WHEN dropperid = 3300007 AND itemid = 2060000 THEN 57
WHEN dropperid = 3300007 AND itemid = 2061000 THEN 56 WHEN dropperid = 3300007 AND itemid = 2061000 THEN 57
WHEN dropperid = 3300008 AND itemid = 2060000 THEN 86 WHEN dropperid = 3300008 AND itemid = 2060000 THEN 87
WHEN dropperid = 3300008 AND itemid = 2061000 THEN 86 WHEN dropperid = 3300008 AND itemid = 2061000 THEN 87
WHEN dropperid = 4110300 AND itemid = 2060000 THEN 67 WHEN dropperid = 4110300 AND itemid = 2060000 THEN 68
WHEN dropperid = 4110300 AND itemid = 2061000 THEN 67 WHEN dropperid = 4110300 AND itemid = 2061000 THEN 68
WHEN dropperid = 4110301 AND itemid = 2060000 THEN 72 WHEN dropperid = 4110301 AND itemid = 2060000 THEN 73
WHEN dropperid = 4110301 AND itemid = 2061000 THEN 72 WHEN dropperid = 4110301 AND itemid = 2061000 THEN 73
WHEN dropperid = 4130103 AND itemid = 2060000 THEN 106 WHEN dropperid = 4130103 AND itemid = 2060000 THEN 107
WHEN dropperid = 4130103 AND itemid = 2061000 THEN 106 WHEN dropperid = 4130103 AND itemid = 2061000 THEN 107
WHEN dropperid = 4230103 AND itemid = 2060000 THEN 67 WHEN dropperid = 4230103 AND itemid = 2060000 THEN 68
WHEN dropperid = 4230103 AND itemid = 2061000 THEN 67 WHEN dropperid = 4230103 AND itemid = 2061000 THEN 68
WHEN dropperid = 4230106 AND itemid = 2060000 THEN 72 WHEN dropperid = 4230106 AND itemid = 2060000 THEN 73
WHEN dropperid = 4230106 AND itemid = 2061000 THEN 72 WHEN dropperid = 4230106 AND itemid = 2061000 THEN 73
WHEN dropperid = 4230108 AND itemid = 2060000 THEN 70 WHEN dropperid = 4230108 AND itemid = 2060000 THEN 70
WHEN dropperid = 4230108 AND itemid = 2061000 THEN 70 WHEN dropperid = 4230108 AND itemid = 2061000 THEN 70
WHEN dropperid = 4230109 AND itemid = 2060000 THEN 67 WHEN dropperid = 4230109 AND itemid = 2060000 THEN 68
WHEN dropperid = 4230109 AND itemid = 2061000 THEN 67 WHEN dropperid = 4230109 AND itemid = 2061000 THEN 68
WHEN dropperid = 4230110 AND itemid = 2060000 THEN 72 WHEN dropperid = 4230110 AND itemid = 2060000 THEN 73
WHEN dropperid = 4230110 AND itemid = 2061000 THEN 72 WHEN dropperid = 4230110 AND itemid = 2061000 THEN 73
WHEN dropperid = 4230111 AND itemid = 2060000 THEN 66 WHEN dropperid = 4230111 AND itemid = 2060000 THEN 67
WHEN dropperid = 4230111 AND itemid = 2061000 THEN 66 WHEN dropperid = 4230111 AND itemid = 2061000 THEN 67
WHEN dropperid = 4230112 AND itemid = 2060000 THEN 71 WHEN dropperid = 4230112 AND itemid = 2060000 THEN 72
WHEN dropperid = 4230112 AND itemid = 2061000 THEN 71 WHEN dropperid = 4230112 AND itemid = 2061000 THEN 72
WHEN dropperid = 4230113 AND itemid = 2060000 THEN 65 WHEN dropperid = 4230113 AND itemid = 2060000 THEN 65
WHEN dropperid = 4230113 AND itemid = 2061000 THEN 65 WHEN dropperid = 4230113 AND itemid = 2061000 THEN 65
WHEN dropperid = 4230114 AND itemid = 2060000 THEN 66 WHEN dropperid = 4230114 AND itemid = 2060000 THEN 67
WHEN dropperid = 4230114 AND itemid = 2061000 THEN 66 WHEN dropperid = 4230114 AND itemid = 2061000 THEN 67
WHEN dropperid = 4230115 AND itemid = 2060000 THEN 75 WHEN dropperid = 4230115 AND itemid = 2060000 THEN 75
WHEN dropperid = 4230115 AND itemid = 2061000 THEN 75 WHEN dropperid = 4230115 AND itemid = 2061000 THEN 75
WHEN dropperid = 4230116 AND itemid = 2060000 THEN 65 WHEN dropperid = 4230116 AND itemid = 2060000 THEN 65
WHEN dropperid = 4230116 AND itemid = 2061000 THEN 65 WHEN dropperid = 4230116 AND itemid = 2061000 THEN 65
WHEN dropperid = 4230117 AND itemid = 2060000 THEN 67 WHEN dropperid = 4230117 AND itemid = 2060000 THEN 68
WHEN dropperid = 4230117 AND itemid = 2061000 THEN 67 WHEN dropperid = 4230117 AND itemid = 2061000 THEN 68
WHEN dropperid = 4230118 AND itemid = 2060000 THEN 72 WHEN dropperid = 4230118 AND itemid = 2060000 THEN 73
WHEN dropperid = 4230118 AND itemid = 2061000 THEN 72 WHEN dropperid = 4230118 AND itemid = 2061000 THEN 73
WHEN dropperid = 4230119 AND itemid = 2060000 THEN 66 WHEN dropperid = 4230119 AND itemid = 2060000 THEN 67
WHEN dropperid = 4230119 AND itemid = 2061000 THEN 66 WHEN dropperid = 4230119 AND itemid = 2061000 THEN 67
WHEN dropperid = 4230120 AND itemid = 2060000 THEN 71 WHEN dropperid = 4230120 AND itemid = 2060000 THEN 72
WHEN dropperid = 4230120 AND itemid = 2061000 THEN 71 WHEN dropperid = 4230120 AND itemid = 2061000 THEN 72
WHEN dropperid = 4230121 AND itemid = 2060000 THEN 75 WHEN dropperid = 4230121 AND itemid = 2060000 THEN 75
WHEN dropperid = 4230121 AND itemid = 2061000 THEN 75 WHEN dropperid = 4230121 AND itemid = 2061000 THEN 75
WHEN dropperid = 4230123 AND itemid = 2060000 THEN 70 WHEN dropperid = 4230123 AND itemid = 2060000 THEN 70
WHEN dropperid = 4230123 AND itemid = 2061000 THEN 70 WHEN dropperid = 4230123 AND itemid = 2061000 THEN 70
WHEN dropperid = 4230124 AND itemid = 2060000 THEN 67 WHEN dropperid = 4230124 AND itemid = 2060000 THEN 68
WHEN dropperid = 4230124 AND itemid = 2061000 THEN 67 WHEN dropperid = 4230124 AND itemid = 2061000 THEN 68
WHEN dropperid = 4230125 AND itemid = 2060000 THEN 71 WHEN dropperid = 4230125 AND itemid = 2060000 THEN 72
WHEN dropperid = 4230125 AND itemid = 2061000 THEN 71 WHEN dropperid = 4230125 AND itemid = 2061000 THEN 72
WHEN dropperid = 4230126 AND itemid = 2060000 THEN 76 WHEN dropperid = 4230126 AND itemid = 2060000 THEN 77
WHEN dropperid = 4230126 AND itemid = 2061000 THEN 76 WHEN dropperid = 4230126 AND itemid = 2061000 THEN 77
WHEN dropperid = 4230201 AND itemid = 2060000 THEN 65 WHEN dropperid = 4230201 AND itemid = 2060000 THEN 65
WHEN dropperid = 4230201 AND itemid = 2061000 THEN 65 WHEN dropperid = 4230201 AND itemid = 2061000 THEN 65
WHEN dropperid = 4230300 AND itemid = 2060000 THEN 72 WHEN dropperid = 4230300 AND itemid = 2060000 THEN 73
WHEN dropperid = 4230300 AND itemid = 2061000 THEN 72 WHEN dropperid = 4230300 AND itemid = 2061000 THEN 73
WHEN dropperid = 4230400 AND itemid = 2060000 THEN 72 WHEN dropperid = 4230400 AND itemid = 2060000 THEN 73
WHEN dropperid = 4230400 AND itemid = 2061000 THEN 72 WHEN dropperid = 4230400 AND itemid = 2061000 THEN 73
WHEN dropperid = 4230500 AND itemid = 2060000 THEN 65 WHEN dropperid = 4230500 AND itemid = 2060000 THEN 65
WHEN dropperid = 4230500 AND itemid = 2061000 THEN 65 WHEN dropperid = 4230500 AND itemid = 2061000 THEN 65
WHEN dropperid = 4230501 AND itemid = 2060000 THEN 66 WHEN dropperid = 4230501 AND itemid = 2060000 THEN 67
WHEN dropperid = 4230501 AND itemid = 2061000 THEN 66 WHEN dropperid = 4230501 AND itemid = 2061000 THEN 67
WHEN dropperid = 4230502 AND itemid = 2060000 THEN 70 WHEN dropperid = 4230502 AND itemid = 2060000 THEN 70
WHEN dropperid = 4230502 AND itemid = 2061000 THEN 70 WHEN dropperid = 4230502 AND itemid = 2061000 THEN 70
WHEN dropperid = 4230503 AND itemid = 2060000 THEN 72 WHEN dropperid = 4230503 AND itemid = 2060000 THEN 73
WHEN dropperid = 4230503 AND itemid = 2061000 THEN 72 WHEN dropperid = 4230503 AND itemid = 2061000 THEN 73
WHEN dropperid = 4230504 AND itemid = 2060000 THEN 72 WHEN dropperid = 4230504 AND itemid = 2060000 THEN 73
WHEN dropperid = 4230504 AND itemid = 2061000 THEN 72 WHEN dropperid = 4230504 AND itemid = 2061000 THEN 73
WHEN dropperid = 4230600 AND itemid = 2060000 THEN 65 WHEN dropperid = 4230600 AND itemid = 2060000 THEN 65
WHEN dropperid = 4230600 AND itemid = 2061000 THEN 65 WHEN dropperid = 4230600 AND itemid = 2061000 THEN 65
WHEN dropperid = 4240000 AND itemid = 2060000 THEN 80 WHEN dropperid = 4240000 AND itemid = 2060000 THEN 80
WHEN dropperid = 4240000 AND itemid = 2061000 THEN 80 WHEN dropperid = 4240000 AND itemid = 2061000 THEN 80
WHEN dropperid = 5120100 AND itemid = 2060000 THEN 122 WHEN dropperid = 5120100 AND itemid = 2060000 THEN 123
WHEN dropperid = 5120100 AND itemid = 2061000 THEN 122 WHEN dropperid = 5120100 AND itemid = 2061000 THEN 123
WHEN dropperid = 5130104 AND itemid = 2060000 THEN 88 WHEN dropperid = 5130104 AND itemid = 2060000 THEN 89
WHEN dropperid = 5130104 AND itemid = 2061000 THEN 88 WHEN dropperid = 5130104 AND itemid = 2061000 THEN 89
WHEN dropperid = 5140000 AND itemid = 2060000 THEN 93 WHEN dropperid = 5140000 AND itemid = 2060000 THEN 94
WHEN dropperid = 5140000 AND itemid = 2061000 THEN 93 WHEN dropperid = 5140000 AND itemid = 2061000 THEN 94
WHEN dropperid = 5150000 AND itemid = 2060000 THEN 96 WHEN dropperid = 5150000 AND itemid = 2060000 THEN 97
WHEN dropperid = 5150000 AND itemid = 2061000 THEN 96 WHEN dropperid = 5150000 AND itemid = 2061000 THEN 97
WHEN dropperid = 5200000 AND itemid = 2060001 THEN 18 WHEN dropperid = 5200000 AND itemid = 2060001 THEN 19
WHEN dropperid = 5200000 AND itemid = 2061001 THEN 18 WHEN dropperid = 5200000 AND itemid = 2061001 THEN 19
WHEN dropperid = 5200001 AND itemid = 2060001 THEN 24 WHEN dropperid = 5200001 AND itemid = 2060001 THEN 24
WHEN dropperid = 5200001 AND itemid = 2061001 THEN 24 WHEN dropperid = 5200001 AND itemid = 2061001 THEN 24
WHEN dropperid = 5200002 AND itemid = 2060001 THEN 24 WHEN dropperid = 5200002 AND itemid = 2060001 THEN 24
WHEN dropperid = 5200002 AND itemid = 2061001 THEN 24 WHEN dropperid = 5200002 AND itemid = 2061001 THEN 24
WHEN dropperid = 5220000 AND itemid = 2060000 THEN 125 WHEN dropperid = 5220000 AND itemid = 2060000 THEN 125
WHEN dropperid = 5220000 AND itemid = 2061000 THEN 125 WHEN dropperid = 5220000 AND itemid = 2061000 THEN 125
WHEN dropperid = 5220002 AND itemid = 2060000 THEN 113 WHEN dropperid = 5220002 AND itemid = 2060000 THEN 114
WHEN dropperid = 5220002 AND itemid = 2061000 THEN 113 WHEN dropperid = 5220002 AND itemid = 2061000 THEN 114
WHEN dropperid = 5220003 AND itemid = 2060000 THEN 133 WHEN dropperid = 5220003 AND itemid = 2060000 THEN 134
WHEN dropperid = 5220003 AND itemid = 2061000 THEN 133 WHEN dropperid = 5220003 AND itemid = 2061000 THEN 134
WHEN dropperid = 5400000 AND itemid = 2060001 THEN 28 WHEN dropperid = 5400000 AND itemid = 2060001 THEN 28
WHEN dropperid = 5400000 AND itemid = 2061001 THEN 28 WHEN dropperid = 5400000 AND itemid = 2061001 THEN 28
WHEN dropperid = 6220000 AND itemid = 2060000 THEN 147 WHEN dropperid = 6220000 AND itemid = 2060000 THEN 148
WHEN dropperid = 6220000 AND itemid = 2061000 THEN 147 WHEN dropperid = 6220000 AND itemid = 2061000 THEN 148
WHEN dropperid = 7120103 AND itemid = 2060003 THEN 28 WHEN dropperid = 7120103 AND itemid = 2060003 THEN 28
WHEN dropperid = 7220000 AND itemid = 2060001 THEN 80 WHEN dropperid = 7220000 AND itemid = 2060001 THEN 81
WHEN dropperid = 7220000 AND itemid = 2061001 THEN 80 WHEN dropperid = 7220000 AND itemid = 2061001 THEN 81
WHEN dropperid = 7220001 AND itemid = 2060001 THEN 79 WHEN dropperid = 7220001 AND itemid = 2060001 THEN 79
WHEN dropperid = 7220001 AND itemid = 2061001 THEN 79 WHEN dropperid = 7220001 AND itemid = 2061001 THEN 79
WHEN dropperid = 7220002 AND itemid = 2060001 THEN 87 WHEN dropperid = 7220002 AND itemid = 2060001 THEN 87
@@ -22446,29 +22447,29 @@ SET minimum_quantity = CASE
WHEN dropperid = 8220000 AND itemid = 2061001 THEN 94 WHEN dropperid = 8220000 AND itemid = 2061001 THEN 94
WHEN dropperid = 8220001 AND itemid = 2060001 THEN 102 WHEN dropperid = 8220001 AND itemid = 2060001 THEN 102
WHEN dropperid = 8220001 AND itemid = 2061001 THEN 102 WHEN dropperid = 8220001 AND itemid = 2061001 THEN 102
WHEN dropperid = 9300011 AND itemid = 2060000 THEN 63 WHEN dropperid = 9300011 AND itemid = 2060000 THEN 64
WHEN dropperid = 9300011 AND itemid = 2061000 THEN 63 WHEN dropperid = 9300011 AND itemid = 2061000 THEN 64
WHEN dropperid = 9300060 AND itemid = 2060000 THEN 67 WHEN dropperid = 9300060 AND itemid = 2060000 THEN 68
WHEN dropperid = 9300060 AND itemid = 2061000 THEN 67 WHEN dropperid = 9300060 AND itemid = 2061000 THEN 68
WHEN dropperid = 9300131 AND itemid = 2060000 THEN 63 WHEN dropperid = 9300131 AND itemid = 2060000 THEN 64
WHEN dropperid = 9300131 AND itemid = 2061000 THEN 63 WHEN dropperid = 9300131 AND itemid = 2061000 THEN 64
WHEN dropperid = 9300132 AND itemid = 2060000 THEN 48 WHEN dropperid = 9300132 AND itemid = 2060000 THEN 49
WHEN dropperid = 9300132 AND itemid = 2061000 THEN 48 WHEN dropperid = 9300132 AND itemid = 2061000 THEN 49
WHEN dropperid = 9300133 AND itemid = 2061000 THEN 48 WHEN dropperid = 9300133 AND itemid = 2061000 THEN 49
WHEN dropperid = 9300160 AND itemid = 2060000 THEN 102 WHEN dropperid = 9300160 AND itemid = 2060000 THEN 103
WHEN dropperid = 9300160 AND itemid = 2061000 THEN 102 WHEN dropperid = 9300160 AND itemid = 2061000 THEN 103
WHEN dropperid = 9300161 AND itemid = 2060000 THEN 102 WHEN dropperid = 9300161 AND itemid = 2060000 THEN 103
WHEN dropperid = 9300161 AND itemid = 2061000 THEN 102 WHEN dropperid = 9300161 AND itemid = 2061000 THEN 103
WHEN dropperid = 9300274 AND itemid = 2060000 THEN 12 WHEN dropperid = 9300274 AND itemid = 2060000 THEN 13
WHEN dropperid = 9300274 AND itemid = 2061000 THEN 12 WHEN dropperid = 9300274 AND itemid = 2061000 THEN 13
WHEN dropperid = 9300332 AND itemid = 2060000 THEN 65 WHEN dropperid = 9300332 AND itemid = 2060000 THEN 65
WHEN dropperid = 9300334 AND itemid = 2060000 THEN 80 WHEN dropperid = 9300334 AND itemid = 2060000 THEN 80
WHEN dropperid = 9300341 AND itemid = 2060000 THEN 8 WHEN dropperid = 9300341 AND itemid = 2060000 THEN 9
WHEN dropperid = 9300341 AND itemid = 2061000 THEN 8 WHEN dropperid = 9300341 AND itemid = 2061000 THEN 9
WHEN dropperid = 9300342 AND itemid = 2060000 THEN 12 WHEN dropperid = 9300342 AND itemid = 2060000 THEN 13
WHEN dropperid = 9300342 AND itemid = 2061000 THEN 12 WHEN dropperid = 9300342 AND itemid = 2061000 THEN 13
WHEN dropperid = 9300343 AND itemid = 2060000 THEN 11 WHEN dropperid = 9300343 AND itemid = 2060000 THEN 12
WHEN dropperid = 9300343 AND itemid = 2061000 THEN 11 WHEN dropperid = 9300343 AND itemid = 2061000 THEN 12
WHEN dropperid = 9303005 AND itemid = 2060001 THEN 21 WHEN dropperid = 9303005 AND itemid = 2060001 THEN 21
WHEN dropperid = 9303005 AND itemid = 2061001 THEN 21 WHEN dropperid = 9303005 AND itemid = 2061001 THEN 21
WHEN dropperid = 9303008 AND itemid = 2060001 THEN 21 WHEN dropperid = 9303008 AND itemid = 2060001 THEN 21
@@ -22481,12 +22482,12 @@ SET minimum_quantity = CASE
WHEN dropperid = 9400100 AND itemid = 2060003 THEN 18 WHEN dropperid = 9400100 AND itemid = 2060003 THEN 18
WHEN dropperid = 9400101 AND itemid = 2061003 THEN 19 WHEN dropperid = 9400101 AND itemid = 2061003 THEN 19
WHEN dropperid = 9400204 AND itemid = 2060003 THEN 22 WHEN dropperid = 9400204 AND itemid = 2060003 THEN 22
WHEN dropperid = 9400239 AND itemid = 2060000 THEN 38 WHEN dropperid = 9400239 AND itemid = 2060000 THEN 39
WHEN dropperid = 9400239 AND itemid = 2061000 THEN 38 WHEN dropperid = 9400239 AND itemid = 2061000 THEN 39
WHEN dropperid = 9400244 AND itemid = 2060000 THEN 96 WHEN dropperid = 9400244 AND itemid = 2060000 THEN 97
WHEN dropperid = 9400244 AND itemid = 2061000 THEN 96 WHEN dropperid = 9400244 AND itemid = 2061000 THEN 97
WHEN dropperid = 9400248 AND itemid = 2060000 THEN 38 WHEN dropperid = 9400248 AND itemid = 2060000 THEN 39
WHEN dropperid = 9400248 AND itemid = 2061000 THEN 38 WHEN dropperid = 9400248 AND itemid = 2061000 THEN 39
WHEN dropperid = 9400540 AND itemid = 2060004 THEN 8 WHEN dropperid = 9400540 AND itemid = 2060004 THEN 8
WHEN dropperid = 9400540 AND itemid = 2061004 THEN 8 WHEN dropperid = 9400540 AND itemid = 2061004 THEN 8
WHEN dropperid = 9400541 AND itemid = 2060004 THEN 8 WHEN dropperid = 9400541 AND itemid = 2060004 THEN 8
@@ -22495,24 +22496,24 @@ SET minimum_quantity = CASE
WHEN dropperid = 9400542 AND itemid = 2061004 THEN 11 WHEN dropperid = 9400542 AND itemid = 2061004 THEN 11
WHEN dropperid = 9400543 AND itemid = 2060004 THEN 13 WHEN dropperid = 9400543 AND itemid = 2060004 THEN 13
WHEN dropperid = 9400543 AND itemid = 2061004 THEN 13 WHEN dropperid = 9400543 AND itemid = 2061004 THEN 13
WHEN dropperid = 9400547 AND itemid = 2060000 THEN 43 WHEN dropperid = 9400547 AND itemid = 2060000 THEN 44
WHEN dropperid = 9400547 AND itemid = 2061000 THEN 43 WHEN dropperid = 9400547 AND itemid = 2061000 THEN 44
WHEN dropperid = 9400548 AND itemid = 2060000 THEN 48 WHEN dropperid = 9400548 AND itemid = 2060000 THEN 49
WHEN dropperid = 9400548 AND itemid = 2061000 THEN 48 WHEN dropperid = 9400548 AND itemid = 2061000 THEN 49
WHEN dropperid = 9400550 AND itemid = 2060000 THEN 43 WHEN dropperid = 9400550 AND itemid = 2060000 THEN 44
WHEN dropperid = 9400550 AND itemid = 2061000 THEN 43 WHEN dropperid = 9400550 AND itemid = 2061000 THEN 44
WHEN dropperid = 9400558 AND itemid = 2060000 THEN 48 WHEN dropperid = 9400558 AND itemid = 2060000 THEN 49
WHEN dropperid = 9400558 AND itemid = 2061000 THEN 48 WHEN dropperid = 9400558 AND itemid = 2061000 THEN 49
WHEN dropperid = 9400563 AND itemid = 2060000 THEN 65 WHEN dropperid = 9400563 AND itemid = 2060000 THEN 65
WHEN dropperid = 9400563 AND itemid = 2061000 THEN 65 WHEN dropperid = 9400563 AND itemid = 2061000 THEN 65
WHEN dropperid = 9400638 AND itemid = 2060000 THEN 32 WHEN dropperid = 9400638 AND itemid = 2060000 THEN 33
WHEN dropperid = 9400638 AND itemid = 2061000 THEN 32 WHEN dropperid = 9400638 AND itemid = 2061000 THEN 33
WHEN dropperid = 9420500 AND itemid = 2060000 THEN 45 WHEN dropperid = 9420500 AND itemid = 2060000 THEN 45
WHEN dropperid = 9420500 AND itemid = 2061000 THEN 45 WHEN dropperid = 9420500 AND itemid = 2061000 THEN 45
WHEN dropperid = 9420502 AND itemid = 2060000 THEN 28 WHEN dropperid = 9420502 AND itemid = 2060000 THEN 29
WHEN dropperid = 9420502 AND itemid = 2061000 THEN 28 WHEN dropperid = 9420502 AND itemid = 2061000 THEN 29
WHEN dropperid = 9420506 AND itemid = 2060000 THEN 37 WHEN dropperid = 9420506 AND itemid = 2060000 THEN 38
WHEN dropperid = 9420506 AND itemid = 2061000 THEN 37 WHEN dropperid = 9420506 AND itemid = 2061000 THEN 38
WHEN dropperid = 9420508 AND itemid = 2060000 THEN 70 WHEN dropperid = 9420508 AND itemid = 2060000 THEN 70
WHEN dropperid = 9420508 AND itemid = 2061000 THEN 70 WHEN dropperid = 9420508 AND itemid = 2061000 THEN 70
WHEN dropperid = 9420527 AND itemid = 2060001 THEN 36 WHEN dropperid = 9420527 AND itemid = 2060001 THEN 36
@@ -22521,26 +22522,26 @@ SET minimum_quantity = CASE
WHEN dropperid = 9420531 AND itemid = 2061001 THEN 48 WHEN dropperid = 9420531 AND itemid = 2061001 THEN 48
WHEN dropperid = 9500112 AND itemid = 2060001 THEN 28 WHEN dropperid = 9500112 AND itemid = 2060001 THEN 28
WHEN dropperid = 9500112 AND itemid = 2061001 THEN 28 WHEN dropperid = 9500112 AND itemid = 2061001 THEN 28
WHEN dropperid = 9500119 AND itemid = 2060000 THEN 63 WHEN dropperid = 9500119 AND itemid = 2060000 THEN 64
WHEN dropperid = 9500119 AND itemid = 2061000 THEN 63 WHEN dropperid = 9500119 AND itemid = 2061000 THEN 64
WHEN dropperid = 9500120 AND itemid = 2060000 THEN 72 WHEN dropperid = 9500120 AND itemid = 2060000 THEN 73
WHEN dropperid = 9500120 AND itemid = 2061000 THEN 72 WHEN dropperid = 9500120 AND itemid = 2061000 THEN 73
WHEN dropperid = 9500122 AND itemid = 2060000 THEN 80 WHEN dropperid = 9500122 AND itemid = 2060000 THEN 80
WHEN dropperid = 9500123 AND itemid = 2060000 THEN 96 WHEN dropperid = 9500123 AND itemid = 2060000 THEN 97
WHEN dropperid = 9500123 AND itemid = 2061000 THEN 96 WHEN dropperid = 9500123 AND itemid = 2061000 THEN 97
WHEN dropperid = 9500308 AND itemid = 2060000 THEN 113 WHEN dropperid = 9500308 AND itemid = 2060000 THEN 114
WHEN dropperid = 9500308 AND itemid = 2061000 THEN 113 WHEN dropperid = 9500308 AND itemid = 2061000 THEN 114
WHEN dropperid = 9500310 AND itemid = 2060000 THEN 133 WHEN dropperid = 9500310 AND itemid = 2060000 THEN 134
WHEN dropperid = 9500310 AND itemid = 2061000 THEN 133 WHEN dropperid = 9500310 AND itemid = 2061000 THEN 134
WHEN dropperid = 9500312 AND itemid = 2060001 THEN 79 WHEN dropperid = 9500312 AND itemid = 2060001 THEN 79
WHEN dropperid = 9500312 AND itemid = 2061001 THEN 79 WHEN dropperid = 9500312 AND itemid = 2061001 THEN 79
WHEN dropperid = 9500313 AND itemid = 2060001 THEN 80 WHEN dropperid = 9500313 AND itemid = 2060001 THEN 81
WHEN dropperid = 9500313 AND itemid = 2061001 THEN 80 WHEN dropperid = 9500313 AND itemid = 2061001 THEN 81
WHEN dropperid = 9500314 AND itemid = 2060001 THEN 87 WHEN dropperid = 9500314 AND itemid = 2060001 THEN 87
WHEN dropperid = 9500314 AND itemid = 2061001 THEN 87 WHEN dropperid = 9500314 AND itemid = 2061001 THEN 87
WHEN dropperid = 9500321 AND itemid = 2060001 THEN 8 WHEN dropperid = 9500321 AND itemid = 2060001 THEN 8
WHEN dropperid = 9500321 AND itemid = 2061001 THEN 8 WHEN dropperid = 9500321 AND itemid = 2061001 THEN 8
WHEN dropperid = 9500366 AND itemid = 2060000 THEN 23 WHEN dropperid = 9500366 AND itemid = 2060000 THEN 24
WHEN dropperid = 9500369 AND itemid = 2060000 THEN 23 WHEN dropperid = 9500369 AND itemid = 2060000 THEN 24
ELSE maximum_quantity END ELSE maximum_quantity END
; ;
+5 -5
View File
@@ -154,7 +154,7 @@ import constants.skills.ThunderBreaker;
import net.server.channel.handlers.PartyOperationHandler; import net.server.channel.handlers.PartyOperationHandler;
import scripting.item.ItemScriptManager; import scripting.item.ItemScriptManager;
import server.maps.MapleMapItem; import server.maps.MapleMapItem;
import tools.locks.MonitoredEnums; import tools.locks.MonitoredLockType;
public class MapleCharacter extends AbstractAnimatedMapleMapObject { public class MapleCharacter extends AbstractAnimatedMapleMapObject {
private static NumberFormat nf = new DecimalFormat("#,###,###,###"); private static NumberFormat nf = new DecimalFormat("#,###,###,###");
@@ -271,10 +271,10 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject {
private ScheduledFuture<?> extraRecoveryTask = null; private ScheduledFuture<?> extraRecoveryTask = null;
private ScheduledFuture<?> chairRecoveryTask = null; private ScheduledFuture<?> chairRecoveryTask = null;
private ScheduledFuture<?> pendantOfSpirit = null; //1122017 private ScheduledFuture<?> pendantOfSpirit = null; //1122017
private Lock chrLock = new MonitoredReentrantLock(MonitoredEnums.CHR, true); private Lock chrLock = new MonitoredReentrantLock(MonitoredLockType.CHR, true);
private Lock effLock = new MonitoredReentrantLock(MonitoredEnums.EFF, true); private Lock effLock = new MonitoredReentrantLock(MonitoredLockType.EFF, true);
private Lock petLock = new MonitoredReentrantLock(MonitoredEnums.PET, true); // for quest tasks as well private Lock petLock = new MonitoredReentrantLock(MonitoredLockType.PET, true); // for quest tasks as well
private Lock prtLock = new MonitoredReentrantLock(MonitoredEnums.PRT); private Lock prtLock = new MonitoredReentrantLock(MonitoredLockType.PRT);
private Map<Integer, Set<Integer>> excluded = new LinkedHashMap<>(); private Map<Integer, Set<Integer>> excluded = new LinkedHashMap<>();
private Set<Integer> excludedItems = new LinkedHashSet<>(); private Set<Integer> excludedItems = new LinkedHashSet<>();
private List<MapleRing> crushRings = new ArrayList<>(); private List<MapleRing> crushRings = new ArrayList<>();
+2 -2
View File
@@ -77,7 +77,7 @@ import tools.FilePrinter;
import tools.HexTool; import tools.HexTool;
import tools.MapleAESOFB; import tools.MapleAESOFB;
import tools.MaplePacketCreator; import tools.MaplePacketCreator;
import tools.locks.MonitoredEnums; import tools.locks.MonitoredLockType;
public class MapleClient { public class MapleClient {
@@ -109,7 +109,7 @@ public class MapleClient {
private int picattempt = 0; private int picattempt = 0;
private byte gender = -1; private byte gender = -1;
private boolean disconnecting = false; private boolean disconnecting = false;
private final Lock lock = new MonitoredReentrantLock(MonitoredEnums.CLIENT, true); private final Lock lock = new MonitoredReentrantLock(MonitoredLockType.CLIENT, true);
private int votePoints; private int votePoints;
private int voteTime = -1; private int voteTime = -1;
private long lastNpcClick; private long lastNpcClick;
+2 -2
View File
@@ -34,14 +34,14 @@ import java.util.concurrent.locks.Lock;
import tools.locks.MonitoredReentrantLock; import tools.locks.MonitoredReentrantLock;
import tools.DatabaseConnection; import tools.DatabaseConnection;
import tools.MaplePacketCreator; import tools.MaplePacketCreator;
import tools.locks.MonitoredEnums; import tools.locks.MonitoredLockType;
public final class MonsterBook { public final class MonsterBook {
private int specialCard = 0; private int specialCard = 0;
private int normalCard = 0; private int normalCard = 0;
private int bookLevel = 1; private int bookLevel = 1;
private Map<Integer, Integer> cards = new LinkedHashMap<>(); private Map<Integer, Integer> cards = new LinkedHashMap<>();
private Lock lock = new MonitoredReentrantLock(MonitoredEnums.BOOK); private Lock lock = new MonitoredReentrantLock(MonitoredLockType.BOOK);
private Set<Entry<Integer, Integer>> getCardSet() { private Set<Entry<Integer, Integer>> getCardSet() {
lock.lock(); lock.lock();
+2 -2
View File
@@ -31,7 +31,7 @@ import java.util.concurrent.locks.Lock;
import tools.locks.MonitoredReentrantLock; import tools.locks.MonitoredReentrantLock;
import tools.DatabaseConnection; import tools.DatabaseConnection;
import tools.Pair; import tools.Pair;
import tools.locks.MonitoredEnums; import tools.locks.MonitoredLockType;
/** /**
* *
@@ -47,7 +47,7 @@ public enum ItemFactory {
MERCHANT(6, false); MERCHANT(6, false);
private final int value; private final int value;
private final boolean account; private final boolean account;
private static final Lock lock = new MonitoredReentrantLock(MonitoredEnums.ITEM, true); private static final Lock lock = new MonitoredReentrantLock(MonitoredLockType.ITEM, true);
private ItemFactory(int value, boolean account) { private ItemFactory(int value, boolean account) {
this.value = value; this.value = value;
+2 -2
View File
@@ -39,7 +39,7 @@ import constants.ItemConstants;
import server.MapleItemInformationProvider; import server.MapleItemInformationProvider;
import server.MapleInventoryManipulator; import server.MapleInventoryManipulator;
import tools.FilePrinter; import tools.FilePrinter;
import tools.locks.MonitoredEnums; import tools.locks.MonitoredLockType;
/** /**
* *
@@ -51,7 +51,7 @@ public class MapleInventory implements Iterable<Item> {
private byte slotLimit; private byte slotLimit;
private MapleInventoryType type; private MapleInventoryType type;
private boolean checked = false; private boolean checked = false;
private Lock lock = new MonitoredReentrantLock(MonitoredEnums.INVENTORY, true); private Lock lock = new MonitoredReentrantLock(MonitoredLockType.INVENTORY, true);
public MapleInventory(MapleCharacter mc, MapleInventoryType type, byte slotLimit) { public MapleInventory(MapleCharacter mc, MapleInventoryType type, byte slotLimit) {
this.owner = mc; this.owner = mc;
+4 -2
View File
@@ -4,13 +4,15 @@ import java.io.FileInputStream;
import java.util.Properties; import java.util.Properties;
public class ServerConstants { 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 //Database Configuration
public static String DB_URL = ""; public static String DB_URL = "";
public static String DB_USER = ""; public static String DB_USER = "";
public static String DB_PASS = ""; public static String DB_PASS = "";
public static final boolean DB_EXPERIMENTAL_POOL = true; //[EXPERIMENTAL] Installs a connection pool to hub DB connections. Set false to default. public static final boolean DB_EXPERIMENTAL_POOL = true; //[EXPERIMENTAL] Installs a connection pool to hub DB connections. Set false to default.
public static final boolean USE_THREAD_TRACKER = true; //[WARNING] 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 debug purposes.
//World And Version //World And Version
public static short VERSION = 83; public static short VERSION = 83;
public static String TIMEZONE = "-GMT3"; public static String TIMEZONE = "-GMT3";
+3 -3
View File
@@ -50,7 +50,7 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import server.TimerManager; import server.TimerManager;
import tools.locks.MonitoredEnums; import tools.locks.MonitoredLockType;
public class MapleServerHandler extends IoHandlerAdapter { public class MapleServerHandler extends IoHandlerAdapter {
@@ -59,8 +59,8 @@ public class MapleServerHandler extends IoHandlerAdapter {
private static final SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm"); private static final SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm");
private static AtomicLong sessionId = new AtomicLong(7777); private static AtomicLong sessionId = new AtomicLong(7777);
private Lock idleLock = new MonitoredReentrantLock(MonitoredEnums.SHANDLER_IDLE, true); private Lock idleLock = new MonitoredReentrantLock(MonitoredLockType.SRVHANDLER_IDLE, true);
private Lock tempLock = new MonitoredReentrantLock(MonitoredEnums.SHANDLER_TEMP, true); private Lock tempLock = new MonitoredReentrantLock(MonitoredLockType.SRVHANDLER_TEMP, true);
private Map<MapleClient, Long> idleSessions = new HashMap<>(100); private Map<MapleClient, Long> idleSessions = new HashMap<>(100);
private Map<MapleClient, Long> tempIdleSessions = new HashMap<>(); private Map<MapleClient, Long> tempIdleSessions = new HashMap<>();
private ScheduledFuture<?> idleManager = null; private ScheduledFuture<?> idleManager = null;
+2 -2
View File
@@ -25,7 +25,7 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.Lock;
import tools.locks.MonitoredEnums; import tools.locks.MonitoredLockType;
import tools.locks.MonitoredReentrantLock; import tools.locks.MonitoredReentrantLock;
/** /**
@@ -34,7 +34,7 @@ import tools.locks.MonitoredReentrantLock;
*/ */
public class PlayerBuffStorage { public class PlayerBuffStorage {
private int id = (int) (Math.random() * 100); private int id = (int) (Math.random() * 100);
private final Lock lock = new MonitoredReentrantLock(MonitoredEnums.BUFF_STORAGE, true); private final Lock lock = new MonitoredReentrantLock(MonitoredLockType.BUFF_STORAGE, true);
private Map<Integer, List<PlayerBuffValueHolder>> buffs = new HashMap<>(); private Map<Integer, List<PlayerBuffValueHolder>> buffs = new HashMap<>();
public void addBuffsToStorage(int chrid, List<PlayerBuffValueHolder> toStore) { public void addBuffsToStorage(int chrid, List<PlayerBuffValueHolder> toStore) {
+2 -2
View File
@@ -30,10 +30,10 @@ import tools.locks.MonitoredReentrantReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock; import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock;
import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock;
import tools.locks.MonitoredEnums; import tools.locks.MonitoredLockType;
public class PlayerStorage { public class PlayerStorage {
private final ReentrantReadWriteLock locks = new MonitoredReentrantReadWriteLock(MonitoredEnums.PLAYER_STORAGE, true); private final ReentrantReadWriteLock locks = new MonitoredReentrantReadWriteLock(MonitoredLockType.PLAYER_STORAGE, true);
private final ReadLock rlock = locks.readLock(); private final ReadLock rlock = locks.readLock();
private final WriteLock wlock = locks.writeLock(); private final WriteLock wlock = locks.writeLock();
private final Map<Integer, MapleCharacter> storage = new LinkedHashMap<>(); private final Map<Integer, MapleCharacter> storage = new LinkedHashMap<>();
+2 -2
View File
@@ -73,7 +73,7 @@ import constants.ServerConstants;
import java.util.Calendar; import java.util.Calendar;
import net.server.audit.ThreadTracker; import net.server.audit.ThreadTracker;
import server.quest.MapleQuest; import server.quest.MapleQuest;
import tools.locks.MonitoredEnums; import tools.locks.MonitoredLockType;
public class Server implements Runnable { public class Server implements Runnable {
private static final Set<Integer> activeFly = new HashSet<>(); private static final Set<Integer> activeFly = new HashSet<>();
@@ -88,7 +88,7 @@ public class Server implements Runnable {
private List<Pair<Integer, String>> worldRecommendedList = new LinkedList<>(); private List<Pair<Integer, String>> worldRecommendedList = new LinkedList<>();
private final Map<Integer, MapleGuild> guilds = new HashMap<>(100); private final Map<Integer, MapleGuild> guilds = new HashMap<>(100);
private final Map<MapleClient, Long> inLoginState = new HashMap<>(100); private final Map<MapleClient, Long> inLoginState = new HashMap<>(100);
private final Lock srvLock = new MonitoredReentrantLock(MonitoredEnums.SERVER); private final Lock srvLock = new MonitoredReentrantLock(MonitoredLockType.SERVER);
private final PlayerBuffStorage buffStorage = new PlayerBuffStorage(); private final PlayerBuffStorage buffStorage = new PlayerBuffStorage();
private final Map<Integer, MapleAlliance> alliances = new HashMap<>(100); private final Map<Integer, MapleAlliance> alliances = new HashMap<>(100);
+22 -20
View File
@@ -35,7 +35,7 @@ import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.locks.ReentrantLock;
import server.TimerManager; import server.TimerManager;
import tools.FilePrinter; import tools.FilePrinter;
import tools.locks.MonitoredEnums; import tools.locks.MonitoredLockType;
import constants.ServerConstants; import constants.ServerConstants;
/** /**
@@ -48,28 +48,28 @@ public class ThreadTracker {
private static ThreadTracker instance = null; private static ThreadTracker instance = null;
private final Lock ttLock = new ReentrantLock(true); private final Lock ttLock = new ReentrantLock(true);
private final Map<Long, List<MonitoredEnums>> threadTracker = new HashMap<>(); private final Map<Long, List<MonitoredLockType>> threadTracker = new HashMap<>();
private final Map<Long, Integer> threadUpdate = new HashMap<>(); private final Map<Long, Integer> threadUpdate = new HashMap<>();
private final Map<Long, Thread> threads = new HashMap<>(); private final Map<Long, Thread> threads = new HashMap<>();
private final Map<Long, AtomicInteger> lockCount = new HashMap<>(); private final Map<Long, AtomicInteger> lockCount = new HashMap<>();
private final Map<Long, MonitoredEnums> lockIds = new HashMap<>(); private final Map<Long, MonitoredLockType> lockIds = new HashMap<>();
private final Map<Long, Long> lockThreads = new HashMap<>(); private final Map<Long, Long> lockThreads = new HashMap<>();
private final Map<Long, Byte> lockUpdate = new HashMap<>(); private final Map<Long, Byte> lockUpdate = new HashMap<>();
private final Map<MonitoredEnums, Map<Long, Integer>> locks = new HashMap<>(); private final Map<MonitoredLockType, Map<Long, Integer>> locks = new HashMap<>();
ScheduledFuture<?> threadTrackerSchedule; ScheduledFuture<?> threadTrackerSchedule;
private String printThreadTrackerState(String dateFormat) { private String printThreadTrackerState(String dateFormat) {
Map<MonitoredEnums, List<Integer>> lockValues = new HashMap<>(); Map<MonitoredLockType, List<Integer>> lockValues = new HashMap<>();
Set<Long> executingThreads = new HashSet<>(); Set<Long> executingThreads = new HashSet<>();
for(Map.Entry<Long, AtomicInteger> lock : lockCount.entrySet()) { for(Map.Entry<Long, AtomicInteger> lock : lockCount.entrySet()) {
if(lock.getValue().get() != 0) { if(lock.getValue().get() != 0) {
executingThreads.add(lockThreads.get(lock.getKey())); executingThreads.add(lockThreads.get(lock.getKey()));
MonitoredEnums lockId = lockIds.get(lock.getKey()); MonitoredLockType lockId = lockIds.get(lock.getKey());
List<Integer> list = lockValues.get(lockId); List<Integer> list = lockValues.get(lockId);
if(list == null) { if(list == null) {
@@ -84,7 +84,7 @@ public class ThreadTracker {
String s = "----------------------------\r\n" + dateFormat + "\r\n "; String s = "----------------------------\r\n" + dateFormat + "\r\n ";
s += "Lock-thread usage count:"; s += "Lock-thread usage count:";
for(Map.Entry<MonitoredEnums, List<Integer>> lock : lockValues.entrySet()) { for(Map.Entry<MonitoredLockType, List<Integer>> lock : lockValues.entrySet()) {
s += ("\r\n " + lock.getKey().name() + ": "); s += ("\r\n " + lock.getKey().name() + ": ");
for(Integer i : lock.getValue()) { for(Integer i : lock.getValue()) {
@@ -95,7 +95,7 @@ public class ThreadTracker {
for(Long tid : executingThreads) { for(Long tid : executingThreads) {
s += "\r\n"; s += "\r\n";
for(MonitoredEnums lockid : threadTracker.get(tid)) { for(MonitoredLockType lockid : threadTracker.get(tid)) {
s += (lockid.name() + " "); s += (lockid.name() + " ");
} }
s += "|"; s += "|";
@@ -106,9 +106,9 @@ public class ThreadTracker {
return s; return s;
} }
private static String printThreadLog(List<MonitoredEnums> stillLockedPath, String dateFormat) { private static String printThreadLog(List<MonitoredLockType> stillLockedPath, String dateFormat) {
String s = "----------------------------\r\n" + dateFormat + "\r\n "; String s = "----------------------------\r\n" + dateFormat + "\r\n ";
for(MonitoredEnums lock : stillLockedPath) { for(MonitoredLockType lock : stillLockedPath) {
s += (lock.name() + " "); s += (lock.name() + " ");
} }
s += "\r\n\r\n"; s += "\r\n\r\n";
@@ -125,7 +125,7 @@ public class ThreadTracker {
return s; return s;
} }
public void accessThreadTracker(boolean update, boolean lock, MonitoredEnums lockId, long lockOid) { public void accessThreadTracker(boolean update, boolean lock, MonitoredLockType lockId, long lockOid) {
ttLock.lock(); ttLock.lock();
try { try {
if(update) { if(update) {
@@ -135,7 +135,7 @@ public class ThreadTracker {
for(Long l : threadUpdate.keySet()) { for(Long l : threadUpdate.keySet()) {
int next = threadUpdate.get(l) + 1; int next = threadUpdate.get(l) + 1;
if(next == 4) { if(next == 4) {
List<MonitoredEnums> tt = threadTracker.get(l); List<MonitoredLockType> tt = threadTracker.get(l);
if(tt.isEmpty()) { if(tt.isEmpty()) {
toRemove.add(l); toRemove.add(l);
@@ -167,10 +167,10 @@ public class ThreadTracker {
for(Entry<Long, Byte> it : lockUpdate.entrySet()) { for(Entry<Long, Byte> it : lockUpdate.entrySet()) {
byte val = (byte)(it.getValue() + 1); byte val = (byte)(it.getValue() + 1);
if(val < 60) { // free the structure after 60 silent updates if(val < 60) {
lockUpdate.put(it.getKey(), val); lockUpdate.put(it.getKey(), val);
} else { } else {
toRemove.add(it.getKey()); toRemove.add(it.getKey()); // free the structure after 60 silent updates
} }
} }
@@ -201,12 +201,14 @@ public class ThreadTracker {
} }
c.incrementAndGet(); c.incrementAndGet();
List<MonitoredEnums> list = threadTracker.get(tid); List<MonitoredLockType> list = threadTracker.get(tid);
if(list == null) { if(list == null) {
list = new ArrayList<>(20); list = new ArrayList<>(5);
threadTracker.put(tid, list); threadTracker.put(tid, list);
threadUpdate.put(tid, 0); threadUpdate.put(tid, 0);
threads.put(tid, Thread.currentThread()); threads.put(tid, Thread.currentThread());
} else if(list.isEmpty()) {
threadUpdate.put(tid, 0);
} }
list.add(lockId); list.add(lockId);
@@ -228,7 +230,7 @@ public class ThreadTracker {
c.decrementAndGet(); c.decrementAndGet();
lockUpdate.put(lockOid, (byte) 0); lockUpdate.put(lockOid, (byte) 0);
List<MonitoredEnums> list = threadTracker.get(tid); List<MonitoredLockType> list = threadTracker.get(tid);
for(int i = list.size() - 1; i >= 0; i--) { for(int i = list.size() - 1; i >= 0; i--) {
if(lockId.getValue() == list.get(i).getValue()) { if(lockId.getValue() == list.get(i).getValue()) {
list.remove(i); list.remove(i);
@@ -245,11 +247,11 @@ public class ThreadTracker {
} }
} }
private String printLockStatus(MonitoredEnums lockId) { private String printLockStatus(MonitoredLockType lockId) {
String s = ""; String s = "";
for(Long threadid : locks.get(lockId).keySet()) { for(Long threadid : locks.get(lockId).keySet()) {
for(MonitoredEnums lockid : threadTracker.get(threadid)) { for(MonitoredLockType lockid : threadTracker.get(threadid)) {
s += (" " + lockid.name()); s += (" " + lockid.name());
} }
@@ -263,7 +265,7 @@ public class ThreadTracker {
threadTrackerSchedule = TimerManager.getInstance().register(new Runnable() { threadTrackerSchedule = TimerManager.getInstance().register(new Runnable() {
@Override @Override
public void run() { public void run() {
accessThreadTracker(true, false, MonitoredEnums.UNDEFINED, -1); accessThreadTracker(true, false, MonitoredLockType.UNDEFINED, -1);
} }
}, 10000, 10000); }, 10000, 10000);
} }
+3 -3
View File
@@ -68,7 +68,7 @@ import tools.MaplePacketCreator;
import client.MapleCharacter; import client.MapleCharacter;
import constants.ServerConstants; import constants.ServerConstants;
import server.maps.MapleMiniDungeonInfo; import server.maps.MapleMiniDungeonInfo;
import tools.locks.MonitoredEnums; import tools.locks.MonitoredLockType;
public final class Channel { public final class Channel {
@@ -92,11 +92,11 @@ public final class Channel {
private Map<Integer, Integer> dojoParty = new HashMap<>(); private Map<Integer, Integer> dojoParty = new HashMap<>();
private Map<Integer, MapleMiniDungeon> dungeons = new HashMap<>(); private Map<Integer, MapleMiniDungeon> dungeons = new HashMap<>();
private ReentrantReadWriteLock merchantLock = new MonitoredReentrantReadWriteLock(MonitoredEnums.MERCHANT, true); private ReentrantReadWriteLock merchantLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.MERCHANT, true);
private ReadLock merchRlock = merchantLock.readLock(); private ReadLock merchRlock = merchantLock.readLock();
private WriteLock merchWlock = merchantLock.writeLock(); private WriteLock merchWlock = merchantLock.writeLock();
private Lock lock = new MonitoredReentrantLock(MonitoredEnums.CHANNEL, true); private Lock lock = new MonitoredReentrantLock(MonitoredLockType.CHANNEL, true);
public Channel(final int world, final int channel) { public Channel(final int world, final int channel) {
this.world = world; this.world = world;
+2 -2
View File
@@ -42,7 +42,7 @@ import net.server.Server;
import net.server.channel.Channel; import net.server.channel.Channel;
import tools.DatabaseConnection; import tools.DatabaseConnection;
import tools.MaplePacketCreator; import tools.MaplePacketCreator;
import tools.locks.MonitoredEnums; import tools.locks.MonitoredLockType;
public class MapleGuild { public class MapleGuild {
public final static int CREATE_GUILD_COST = 1500000; public final static int CREATE_GUILD_COST = 1500000;
@@ -53,7 +53,7 @@ public class MapleGuild {
} }
private final List<MapleGuildCharacter> members; private final List<MapleGuildCharacter> members;
private final Lock membersLock = new MonitoredReentrantLock(MonitoredEnums.GUILD, true); private final Lock membersLock = new MonitoredReentrantLock(MonitoredLockType.GUILD, true);
private String rankTitles[] = new String[5]; // 1 = master, 2 = jr, 5 = lowest member private String rankTitles[] = new String[5]; // 1 = master, 2 = jr, 5 = lowest member
private String name, notice; private String name, notice;
+2 -2
View File
@@ -32,7 +32,7 @@ import java.util.Map;
import java.util.Comparator; import java.util.Comparator;
import tools.locks.MonitoredReentrantLock; import tools.locks.MonitoredReentrantLock;
import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.Lock;
import tools.locks.MonitoredEnums; import tools.locks.MonitoredLockType;
public class MapleParty { public class MapleParty {
private int id; private int id;
@@ -44,7 +44,7 @@ public class MapleParty {
private Map<Integer, Integer> histMembers = new HashMap<>(); private Map<Integer, Integer> histMembers = new HashMap<>();
private int nextEntry = 0; private int nextEntry = 0;
private Lock lock = new MonitoredReentrantLock(MonitoredEnums.PARTY, true); private Lock lock = new MonitoredReentrantLock(MonitoredLockType.PARTY, true);
public MapleParty(int id, MaplePartyCharacter chrfor) { public MapleParty(int id, MaplePartyCharacter chrfor) {
this.leaderId = chrfor.getId(); this.leaderId = chrfor.getId();
+7 -7
View File
@@ -68,7 +68,7 @@ import server.maps.AbstractMapleMapObject;
import tools.DatabaseConnection; import tools.DatabaseConnection;
import tools.MaplePacketCreator; import tools.MaplePacketCreator;
import tools.Pair; import tools.Pair;
import tools.locks.MonitoredEnums; import tools.locks.MonitoredLockType;
/** /**
* *
@@ -90,25 +90,25 @@ public class World {
private Map<Integer, MapleParty> parties = new HashMap<>(); private Map<Integer, MapleParty> parties = new HashMap<>();
private AtomicInteger runningPartyId = new AtomicInteger(); private AtomicInteger runningPartyId = new AtomicInteger();
private Lock partyLock = new MonitoredReentrantLock(MonitoredEnums.WORLD_PARTY, true); private Lock partyLock = new MonitoredReentrantLock(MonitoredLockType.WORLD_PARTY, true);
private Map<Integer, Integer> owlSearched = new LinkedHashMap<>(); private Map<Integer, Integer> owlSearched = new LinkedHashMap<>();
private Lock owlLock = new MonitoredReentrantLock(MonitoredEnums.WORLD_OWL); private Lock owlLock = new MonitoredReentrantLock(MonitoredLockType.WORLD_OWL);
private Lock activePetsLock = new MonitoredReentrantLock(MonitoredEnums.WORLD_PETS, true); private Lock activePetsLock = new MonitoredReentrantLock(MonitoredLockType.WORLD_PETS, true);
private Map<Integer, Byte> activePets = new LinkedHashMap<>(); private Map<Integer, Byte> activePets = new LinkedHashMap<>();
private ScheduledFuture<?> petsSchedule; private ScheduledFuture<?> petsSchedule;
private long petUpdate; private long petUpdate;
private Lock activeMountsLock = new MonitoredReentrantLock(MonitoredEnums.WORLD_MOUNTS, true); private Lock activeMountsLock = new MonitoredReentrantLock(MonitoredLockType.WORLD_MOUNTS, true);
private Map<Integer, Byte> activeMounts = new LinkedHashMap<>(); private Map<Integer, Byte> activeMounts = new LinkedHashMap<>();
private ScheduledFuture<?> mountsSchedule; private ScheduledFuture<?> mountsSchedule;
private long mountUpdate; private long mountUpdate;
private Lock activePlayerShopsLock = new MonitoredReentrantLock(MonitoredEnums.WORLD_PSHOPS, true); private Lock activePlayerShopsLock = new MonitoredReentrantLock(MonitoredLockType.WORLD_PSHOPS, true);
private Map<Integer, MaplePlayerShop> activePlayerShops = new LinkedHashMap<>(); private Map<Integer, MaplePlayerShop> activePlayerShops = new LinkedHashMap<>();
private Lock activeMerchantsLock = new MonitoredReentrantLock(MonitoredEnums.WORLD_MERCHS, true); private Lock activeMerchantsLock = new MonitoredReentrantLock(MonitoredLockType.WORLD_MERCHS, true);
private Map<Integer, Pair<MapleHiredMerchant, Byte>> activeMerchants = new LinkedHashMap<>(); private Map<Integer, Pair<MapleHiredMerchant, Byte>> activeMerchants = new LinkedHashMap<>();
private long merchantUpdate; private long merchantUpdate;
+20 -24
View File
@@ -70,7 +70,7 @@ import server.MapleItemInformationProvider;
import server.life.MapleLifeFactory; import server.life.MapleLifeFactory;
import server.life.MapleNPC; import server.life.MapleNPC;
import tools.MaplePacketCreator; import tools.MaplePacketCreator;
import tools.locks.MonitoredEnums; import tools.locks.MonitoredLockType;
/** /**
* *
@@ -90,14 +90,13 @@ public class EventInstanceManager {
private long eventTime = 0; private long eventTime = 0;
private MapleExpedition expedition = null; private MapleExpedition expedition = null;
private List<Integer> mapIds = new LinkedList<>(); private List<Integer> mapIds = new LinkedList<>();
private List<Boolean> isInstanced = new LinkedList<>();
private final ReentrantReadWriteLock lock = new MonitoredReentrantReadWriteLock(MonitoredEnums.EIM, true); private final ReentrantReadWriteLock lock = new MonitoredReentrantReadWriteLock(MonitoredLockType.EIM, true);
private final ReadLock rL = lock.readLock(); private final ReadLock rL = lock.readLock();
private final WriteLock wL = lock.writeLock(); private final WriteLock wL = lock.writeLock();
private final Lock pL = new MonitoredReentrantLock(MonitoredEnums.EIM_PARTY, true); private final Lock pL = new MonitoredReentrantLock(MonitoredLockType.EIM_PARTY, true);
private final Lock sL = new MonitoredReentrantLock(MonitoredEnums.EIM_SCRIPT, true); private final Lock sL = new MonitoredReentrantLock(MonitoredLockType.EIM_SCRIPT, true);
private ScheduledFuture<?> event_schedule = null; private ScheduledFuture<?> event_schedule = null;
private boolean disposed = false; private boolean disposed = false;
@@ -252,7 +251,7 @@ public class EventInstanceManager {
} }
} }
public void exitPlayer(MapleCharacter chr) { public void exitPlayer(MapleCharacter chr) { //unused
if (chr == null || !chr.isLoggedin()){ if (chr == null || !chr.isLoggedin()){
return; return;
} }
@@ -317,6 +316,7 @@ public class EventInstanceManager {
eventTime += time; eventTime += time;
event_schedule = TimerManager.getInstance().schedule(new Runnable() { event_schedule = TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() { public void run() {
try { try {
dismissEventTimer(); dismissEventTimer();
@@ -503,30 +503,27 @@ public class EventInstanceManager {
} }
public void monsterKilled(MapleMonster mob) { public void monsterKilled(MapleMonster mob) {
mobs.remove(mob); sL.lock();
try { try {
sL.lock(); mobs.remove(mob);
try { try {
em.getIv().invokeFunction("monsterKilled", mob, this); em.getIv().invokeFunction("monsterKilled", mob, this);
} finally { } catch (ScriptException | NoSuchMethodException ex) {
sL.unlock(); ex.printStackTrace();
} }
} catch (ScriptException | NoSuchMethodException ex) {
ex.printStackTrace(); if (mobs.isEmpty()) {
}
if (mobs.isEmpty()) {
try {
sL.lock();
try { try {
em.getIv().invokeFunction("allMonstersDead", this); em.getIv().invokeFunction("allMonstersDead", this);
} finally { } catch (ScriptException | NoSuchMethodException ex) {
sL.unlock(); ex.printStackTrace();
} }
} catch (ScriptException | NoSuchMethodException ex) { }
ex.printStackTrace(); } finally {
} sL.unlock();
} }
} }
public void friendlyKilled(MapleMonster mob) { public void friendlyKilled(MapleMonster mob) {
try { try {
@@ -850,7 +847,6 @@ public class EventInstanceManager {
return getMapFactory().getMap(mapid); return getMapFactory().getMap(mapid);
} }
mapIds.add(mapid); mapIds.add(mapid);
isInstanced.add(false);
return getMapFactory().getMap(mapid); return getMapFactory().getMap(mapid);
} }
+3 -3
View File
@@ -53,7 +53,7 @@ import java.util.ArrayList;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.Queue; import java.util.Queue;
import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.Lock;
import tools.locks.MonitoredEnums; import tools.locks.MonitoredLockType;
import tools.locks.MonitoredReentrantLock; import tools.locks.MonitoredReentrantLock;
/** /**
@@ -75,8 +75,8 @@ public class EventManager {
private Integer readyId = 0; private Integer readyId = 0;
private Properties props = new Properties(); private Properties props = new Properties();
private String name; private String name;
private Lock lobbyLock = new MonitoredReentrantLock(MonitoredEnums.EM_LOBBY); private Lock lobbyLock = new MonitoredReentrantLock(MonitoredLockType.EM_LOBBY);
private Lock queueLock = new MonitoredReentrantLock(MonitoredEnums.EM_QUEUE); private Lock queueLock = new MonitoredReentrantLock(MonitoredLockType.EM_QUEUE);
private static final int maxLobbys = 8; // an event manager holds up to this amount of concurrent lobbys private static final int maxLobbys = 8; // an event manager holds up to this amount of concurrent lobbys
+2 -2
View File
@@ -46,7 +46,7 @@ import client.inventory.MapleInventoryType;
import client.inventory.MaplePet; import client.inventory.MaplePet;
import constants.ItemConstants; import constants.ItemConstants;
import java.util.Collections; import java.util.Collections;
import tools.locks.MonitoredEnums; import tools.locks.MonitoredLockType;
/* /*
* @author Flav * @author Flav
@@ -242,7 +242,7 @@ public class CashShop {
private List<Item> inventory = new ArrayList<>(); private List<Item> inventory = new ArrayList<>();
private List<Integer> wishList = new ArrayList<>(); private List<Integer> wishList = new ArrayList<>();
private int notes = 0; private int notes = 0;
private Lock lock = new MonitoredReentrantLock(MonitoredEnums.CASHSHOP); private Lock lock = new MonitoredReentrantLock(MonitoredLockType.CASHSHOP);
public CashShop(int accountId, int characterId, int jobType) throws SQLException { public CashShop(int accountId, int characterId, int jobType) throws SQLException {
this.accountId = accountId; this.accountId = accountId;
+2 -2
View File
@@ -39,7 +39,7 @@ import server.maps.MapleMapObjectType;
import tools.MaplePacketCreator; import tools.MaplePacketCreator;
import tools.Pair; import tools.Pair;
import tools.data.output.MaplePacketLittleEndianWriter; import tools.data.output.MaplePacketLittleEndianWriter;
import tools.locks.MonitoredEnums; import tools.locks.MonitoredLockType;
/** /**
* *
@@ -56,7 +56,7 @@ public class MaplePlayerShop extends AbstractMapleMapObject {
private List<String> bannedList = new ArrayList<>(); private List<String> bannedList = new ArrayList<>();
private List<Pair<MapleCharacter, String>> chatLog = new LinkedList<>(); private List<Pair<MapleCharacter, String>> chatLog = new LinkedList<>();
private Map<Integer, Byte> chatSlot = new LinkedHashMap<>(); private Map<Integer, Byte> chatSlot = new LinkedHashMap<>();
private Lock visitorLock = new MonitoredReentrantLock(MonitoredEnums.VISITOR_PSHOP, true); private Lock visitorLock = new MonitoredReentrantLock(MonitoredLockType.VISITOR_PSHOP, true);
public MaplePlayerShop(MapleCharacter owner, String description) { public MaplePlayerShop(MapleCharacter owner, String description) {
this.setPosition(owner.getPosition()); this.setPosition(owner.getPosition());
+2 -2
View File
@@ -38,7 +38,7 @@ import tools.locks.MonitoredReentrantLock;
import tools.DatabaseConnection; import tools.DatabaseConnection;
import tools.MaplePacketCreator; import tools.MaplePacketCreator;
import tools.Pair; import tools.Pair;
import tools.locks.MonitoredEnums; import tools.locks.MonitoredLockType;
/** /**
* *
@@ -51,7 +51,7 @@ public class MapleStorage {
private byte slots; private byte slots;
private Map<MapleInventoryType, List<Item>> typeItems = new HashMap<>(); private Map<MapleInventoryType, List<Item>> typeItems = new HashMap<>();
private List<Item> items; private List<Item> items;
private Lock lock = new MonitoredReentrantLock(MonitoredEnums.STORAGE, true); private Lock lock = new MonitoredReentrantLock(MonitoredLockType.STORAGE, true);
private MapleStorage(int id, byte slots, int meso) { private MapleStorage(int id, byte slots, int meso) {
this.id = id; this.id = id;
+4 -4
View File
@@ -63,7 +63,7 @@ import server.maps.MapleMapObjectType;
import tools.MaplePacketCreator; import tools.MaplePacketCreator;
import tools.Pair; import tools.Pair;
import tools.Randomizer; import tools.Randomizer;
import tools.locks.MonitoredEnums; import tools.locks.MonitoredLockType;
public class MapleMonster extends AbstractLoadedMapleLife { public class MapleMonster extends AbstractLoadedMapleLife {
private ChangeableStats ostats = null; //unused, v83 WZs offers no support for changeable stats. private ChangeableStats ostats = null; //unused, v83 WZs offers no support for changeable stats.
@@ -86,9 +86,9 @@ public class MapleMonster extends AbstractLoadedMapleLife {
private int team; private int team;
private final HashMap<Integer, AtomicInteger> takenDamage = new HashMap<>(); private final HashMap<Integer, AtomicInteger> takenDamage = new HashMap<>();
private Lock externalLock = new MonitoredReentrantLock(MonitoredEnums.MOB_EXT); private Lock externalLock = new MonitoredReentrantLock(MonitoredLockType.MOB_EXT);
private Lock monsterLock = new MonitoredReentrantLock(MonitoredEnums.MOB, true); private Lock monsterLock = new MonitoredReentrantLock(MonitoredLockType.MOB, true);
private Lock statiLock = new MonitoredReentrantLock(MonitoredEnums.MOB_STATI); private Lock statiLock = new MonitoredReentrantLock(MonitoredLockType.MOB_STATI);
public MapleMonster(int id, MapleMonsterStats stats) { public MapleMonster(int id, MapleMonsterStats stats) {
super(id); super(id);
+2 -2
View File
@@ -35,7 +35,7 @@ import provider.MapleData;
import provider.MapleDataProvider; import provider.MapleDataProvider;
import provider.MapleDataProviderFactory; import provider.MapleDataProviderFactory;
import provider.MapleDataTool; import provider.MapleDataTool;
import tools.locks.MonitoredEnums; import tools.locks.MonitoredLockType;
/** /**
* *
@@ -46,7 +46,7 @@ public class MobSkillFactory {
private static Map<String, MobSkill> mobSkills = new HashMap<String, MobSkill>(); private static Map<String, MobSkill> mobSkills = new HashMap<String, MobSkill>();
private final static MapleDataProvider dataSource = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/Skill.wz")); private final static MapleDataProvider dataSource = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/Skill.wz"));
private static MapleData skillRoot = dataSource.getData("MobSkill.img"); private static MapleData skillRoot = dataSource.getData("MobSkill.img");
private final static ReentrantReadWriteLock dataLock = new MonitoredReentrantReadWriteLock(MonitoredEnums.MOBSKILL_FACTORY); private final static ReentrantReadWriteLock dataLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.MOBSKILL_FACTORY);
private final static ReadLock rL = dataLock.readLock(); private final static ReadLock rL = dataLock.readLock();
private final static WriteLock wL = dataLock.writeLock(); private final static WriteLock wL = dataLock.writeLock();
+2 -2
View File
@@ -27,7 +27,7 @@ import scripting.portal.PortalScriptManager;
import server.MaplePortal; import server.MaplePortal;
import tools.MaplePacketCreator; import tools.MaplePacketCreator;
import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.Lock;
import tools.locks.MonitoredEnums; import tools.locks.MonitoredLockType;
import tools.locks.MonitoredReentrantLock; import tools.locks.MonitoredReentrantLock;
public class MapleGenericPortal implements MaplePortal { public class MapleGenericPortal implements MaplePortal {
@@ -118,7 +118,7 @@ public class MapleGenericPortal implements MaplePortal {
if(scriptName != null) { if(scriptName != null) {
if(scriptLock == null) { if(scriptLock == null) {
scriptLock = new MonitoredReentrantLock(MonitoredEnums.PORTAL, false); scriptLock = new MonitoredReentrantLock(MonitoredLockType.PORTAL, true);
} }
} else { } else {
scriptLock = null; scriptLock = null;
+2 -2
View File
@@ -45,7 +45,7 @@ import server.MaplePlayerShopItem;
import tools.DatabaseConnection; import tools.DatabaseConnection;
import tools.MaplePacketCreator; import tools.MaplePacketCreator;
import tools.Pair; import tools.Pair;
import tools.locks.MonitoredEnums; import tools.locks.MonitoredLockType;
/** /**
* *
@@ -64,7 +64,7 @@ public class MapleHiredMerchant extends AbstractMapleMapObject {
private List<SoldItem> sold = new LinkedList<>(); private List<SoldItem> sold = new LinkedList<>();
private AtomicBoolean open = new AtomicBoolean(); private AtomicBoolean open = new AtomicBoolean();
private MapleMap map; private MapleMap map;
private Lock visitorLock = new MonitoredReentrantLock(MonitoredEnums.VISITOR_MERCH, true); private Lock visitorLock = new MonitoredReentrantLock(MonitoredLockType.VISITOR_MERCH, true);
public MapleHiredMerchant(final MapleCharacter owner, int itemId, String desc) { public MapleHiredMerchant(final MapleCharacter owner, int itemId, String desc) {
this.setPosition(owner.getPosition()); this.setPosition(owner.getPosition());
+13 -12
View File
@@ -86,7 +86,7 @@ import tools.FilePrinter;
import tools.MaplePacketCreator; import tools.MaplePacketCreator;
import tools.Pair; import tools.Pair;
import tools.Randomizer; import tools.Randomizer;
import tools.locks.MonitoredEnums; import tools.locks.MonitoredLockType;
public class MapleMap { public class MapleMap {
private static final List<MapleMapObjectType> rangedMapobjectTypes = Arrays.asList(MapleMapObjectType.SHOP, MapleMapObjectType.ITEM, MapleMapObjectType.NPC, MapleMapObjectType.MONSTER, MapleMapObjectType.DOOR, MapleMapObjectType.SUMMON, MapleMapObjectType.REACTOR); private static final List<MapleMapObjectType> rangedMapobjectTypes = Arrays.asList(MapleMapObjectType.SHOP, MapleMapObjectType.ITEM, MapleMapObjectType.NPC, MapleMapObjectType.MONSTER, MapleMapObjectType.DOOR, MapleMapObjectType.SUMMON, MapleMapObjectType.REACTOR);
@@ -106,7 +106,7 @@ public class MapleMap {
private MapleFootholdTree footholds = null; private MapleFootholdTree footholds = null;
private Rectangle mapArea = new Rectangle(); private Rectangle mapArea = new Rectangle();
private int mapid; private int mapid;
private AtomicInteger runningOid = new AtomicInteger(100); private AtomicInteger runningOid = new AtomicInteger(1000000001);
private int returnMapId; private int returnMapId;
private int channel, world; private int channel, world;
private byte monsterRate; private byte monsterRate;
@@ -163,11 +163,11 @@ public class MapleMap {
if (this.monsterRate == 0) { if (this.monsterRate == 0) {
this.monsterRate = 1; this.monsterRate = 1;
} }
final ReentrantReadWriteLock chrLock = new MonitoredReentrantReadWriteLock(MonitoredEnums.MAP_CHRS, true); final ReentrantReadWriteLock chrLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.MAP_CHRS, true);
chrRLock = chrLock.readLock(); chrRLock = chrLock.readLock();
chrWLock = chrLock.writeLock(); chrWLock = chrLock.writeLock();
final ReentrantReadWriteLock objectLock = new MonitoredReentrantReadWriteLock(MonitoredEnums.MAP_OBJS, true); final ReentrantReadWriteLock objectLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.MAP_OBJS, true);
objectRLock = objectLock.readLock(); objectRLock = objectLock.readLock();
objectWLock = objectLock.writeLock(); objectWLock = objectLock.writeLock();
} }
@@ -389,19 +389,20 @@ public class MapleMap {
} }
private int getUsableOID() { private int getUsableOID() {
if (runningOid.incrementAndGet() >= 20000000) {
runningOid.set(1000);
}
objectRLock.lock(); objectRLock.lock();
try { try {
if (mapobjects.containsKey(runningOid.get())) { Integer curOid;
while (mapobjects.containsKey(runningOid.incrementAndGet()));
} do {
if ((curOid = runningOid.incrementAndGet()) < 0) {
runningOid.set(curOid = 1000000001);
}
} while (mapobjects.containsKey(curOid));
return curOid;
} finally { } finally {
objectRLock.unlock(); objectRLock.unlock();
} }
return runningOid.get();
} }
public void removeMapObject(int num) { public void removeMapObject(int num) {
+2 -2
View File
@@ -47,7 +47,7 @@ import server.life.MapleMonster;
import scripting.event.EventInstanceManager; import scripting.event.EventInstanceManager;
import tools.DatabaseConnection; import tools.DatabaseConnection;
import tools.StringUtil; import tools.StringUtil;
import tools.locks.MonitoredEnums; import tools.locks.MonitoredLockType;
public class MapleMapFactory { public class MapleMapFactory {
@@ -66,7 +66,7 @@ public class MapleMapFactory {
this.channel = channel; this.channel = channel;
this.event = eim; this.event = eim;
ReentrantReadWriteLock rrwl = new MonitoredReentrantReadWriteLock(MonitoredEnums.MAP_FACTORY); ReentrantReadWriteLock rrwl = new MonitoredReentrantReadWriteLock(MonitoredLockType.MAP_FACTORY);
this.mapsRLock = rrwl.readLock(); this.mapsRLock = rrwl.readLock();
this.mapsWLock = rrwl.writeLock(); this.mapsWLock = rrwl.writeLock();
} }
+2 -2
View File
@@ -27,7 +27,7 @@ import java.awt.Point;
import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.Lock;
import tools.locks.MonitoredReentrantLock; import tools.locks.MonitoredReentrantLock;
import tools.MaplePacketCreator; import tools.MaplePacketCreator;
import tools.locks.MonitoredEnums; import tools.locks.MonitoredLockType;
public class MapleMapItem extends AbstractMapleMapObject { public class MapleMapItem extends AbstractMapleMapObject {
@@ -37,7 +37,7 @@ public class MapleMapItem extends AbstractMapleMapObject {
protected byte type; protected byte type;
protected boolean pickedUp = false, playerDrop; protected boolean pickedUp = false, playerDrop;
protected long dropTime; protected long dropTime;
private Lock itemLock = new MonitoredReentrantLock(MonitoredEnums.MAP_ITEM); private Lock itemLock = new MonitoredReentrantLock(MonitoredLockType.MAP_ITEM);
public MapleMapItem(Item item, Point position, MapleMapObject dropper, MapleCharacter owner, byte type, boolean playerDrop) { public MapleMapItem(Item item, Point position, MapleMapObject dropper, MapleCharacter owner, byte type, boolean playerDrop) {
setPosition(position); setPosition(position);
+2 -2
View File
@@ -27,7 +27,7 @@ import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.Lock;
import tools.locks.MonitoredReentrantLock; import tools.locks.MonitoredReentrantLock;
import tools.MaplePacketCreator; import tools.MaplePacketCreator;
import tools.locks.MonitoredEnums; import tools.locks.MonitoredLockType;
/** /**
* *
@@ -36,7 +36,7 @@ import tools.locks.MonitoredEnums;
public class MapleMiniDungeon { public class MapleMiniDungeon {
List<MapleCharacter> players = new ArrayList<>(); List<MapleCharacter> players = new ArrayList<>();
ScheduledFuture<?> timeoutTask = null; ScheduledFuture<?> timeoutTask = null;
Lock lock = new MonitoredReentrantLock(MonitoredEnums.MINIDUNGEON, true); Lock lock = new MonitoredReentrantLock(MonitoredLockType.MINIDUNGEON, true);
int baseMap; int baseMap;
long expireTime; long expireTime;
+2 -2
View File
@@ -35,7 +35,7 @@ import scripting.reactor.ReactorScriptManager;
import server.TimerManager; import server.TimerManager;
import tools.MaplePacketCreator; import tools.MaplePacketCreator;
import tools.Pair; import tools.Pair;
import tools.locks.MonitoredEnums; import tools.locks.MonitoredLockType;
/** /**
* *
@@ -54,7 +54,7 @@ public class MapleReactor extends AbstractMapleMapObject {
private boolean shouldCollect; private boolean shouldCollect;
private boolean attackHit; private boolean attackHit;
private ScheduledFuture<?> timeoutTask = null; private ScheduledFuture<?> timeoutTask = null;
private Lock reactorLock = new MonitoredReentrantLock(MonitoredEnums.REACTOR, true); private Lock reactorLock = new MonitoredReentrantLock(MonitoredLockType.REACTOR, true);
public MapleReactor(MapleReactorStats stats, int rid) { public MapleReactor(MapleReactorStats stats, int rid) {
this.evstate = (byte)0; this.evstate = (byte)0;
+9 -4
View File
@@ -257,11 +257,16 @@ public class MapleQuest {
public void complete(MapleCharacter c, int npc, Integer selection) { public void complete(MapleCharacter c, int npc, Integer selection) {
if (autoPreComplete || canComplete(c, npc)) { if (autoPreComplete || canComplete(c, npc)) {
for (MapleQuestAction a : completeActs.values()) { for (MapleQuestAction a : completeActs.values()) {
if (!a.check(c, selection)) { if (!a.check(c, selection)) {
return; return;
} }
} }
if (timeLimit > 0) {
c.announce(MaplePacketCreator.removeQuestTimeLimit(id));
}
forceComplete(c, npc); forceComplete(c, npc);
for (MapleQuestAction a : completeActs.values()) { for (MapleQuestAction a : completeActs.values()) {
a.run(c, selection); a.run(c, selection);
@@ -23,7 +23,7 @@ package tools.locks;
* @author RonanLana * @author RonanLana
*/ */
public enum MonitoredEnums { public enum MonitoredLockType {
UNDEFINED(-1), UNDEFINED(-1),
CHR(0), CHR(0),
EFF(1), EFF(1),
@@ -33,8 +33,8 @@ public enum MonitoredEnums {
BOOK(5), BOOK(5),
ITEM(6), ITEM(6),
INVENTORY(7), INVENTORY(7),
SHANDLER_IDLE(8), SRVHANDLER_IDLE(8),
SHANDLER_TEMP(9), SRVHANDLER_TEMP(9),
BUFF_STORAGE(10), BUFF_STORAGE(10),
PLAYER_STORAGE(11), PLAYER_STORAGE(11),
SERVER(12), SERVER(12),
@@ -71,7 +71,7 @@ public enum MonitoredEnums {
private final int i; private final int i;
private MonitoredEnums(int val) { private MonitoredLockType(int val) {
this.i = val; this.i = val;
} }
+4 -3
View File
@@ -41,7 +41,7 @@ import tools.FilePrinter;
public class MonitoredReadLock extends ReentrantReadWriteLock.ReadLock { public class MonitoredReadLock extends ReentrantReadWriteLock.ReadLock {
private ScheduledFuture<?> timeoutSchedule = null; private ScheduledFuture<?> timeoutSchedule = null;
private StackTraceElement[] deadlockedState = null; private StackTraceElement[] deadlockedState = null;
private final MonitoredEnums id; private final MonitoredLockType id;
private final int hashcode; private final int hashcode;
private final Lock state = new ReentrantLock(true); private final Lock state = new ReentrantLock(true);
private final AtomicInteger reentrantCount = new AtomicInteger(0); private final AtomicInteger reentrantCount = new AtomicInteger(0);
@@ -54,8 +54,6 @@ public class MonitoredReadLock extends ReentrantReadWriteLock.ReadLock {
@Override @Override
public void lock() { public void lock() {
super.lock();
if(ServerConstants.USE_THREAD_TRACKER) { if(ServerConstants.USE_THREAD_TRACKER) {
if(deadlockedState != null) { if(deadlockedState != null) {
DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
@@ -68,6 +66,8 @@ public class MonitoredReadLock extends ReentrantReadWriteLock.ReadLock {
registerLocking(); registerLocking();
} }
super.lock();
} }
@Override @Override
@@ -75,6 +75,7 @@ public class MonitoredReadLock extends ReentrantReadWriteLock.ReadLock {
if(ServerConstants.USE_THREAD_TRACKER) { if(ServerConstants.USE_THREAD_TRACKER) {
unregisterLocking(); unregisterLocking();
} }
super.unlock(); super.unlock();
} }
+6 -4
View File
@@ -39,18 +39,18 @@ import tools.FilePrinter;
public class MonitoredReentrantLock extends ReentrantLock { public class MonitoredReentrantLock extends ReentrantLock {
private ScheduledFuture<?> timeoutSchedule = null; private ScheduledFuture<?> timeoutSchedule = null;
private StackTraceElement[] deadlockedState = null; private StackTraceElement[] deadlockedState = null;
private final MonitoredEnums id; private final MonitoredLockType id;
private final int hashcode; private final int hashcode;
private final Lock state = new ReentrantLock(true); private final Lock state = new ReentrantLock(true);
private final AtomicInteger reentrantCount = new AtomicInteger(0); private final AtomicInteger reentrantCount = new AtomicInteger(0);
public MonitoredReentrantLock(MonitoredEnums id) { public MonitoredReentrantLock(MonitoredLockType id) {
super(); super();
this.id = id; this.id = id;
hashcode = this.hashCode(); hashcode = this.hashCode();
} }
public MonitoredReentrantLock(MonitoredEnums id, boolean fair) { public MonitoredReentrantLock(MonitoredLockType id, boolean fair) {
super(fair); super(fair);
this.id = id; this.id = id;
hashcode = this.hashCode(); hashcode = this.hashCode();
@@ -58,7 +58,6 @@ public class MonitoredReentrantLock extends ReentrantLock {
@Override @Override
public void lock() { public void lock() {
super.lock();
if(ServerConstants.USE_THREAD_TRACKER) { if(ServerConstants.USE_THREAD_TRACKER) {
if(deadlockedState != null) { if(deadlockedState != null) {
DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
@@ -71,6 +70,8 @@ public class MonitoredReentrantLock extends ReentrantLock {
registerLocking(); registerLocking();
} }
super.lock();
} }
@Override @Override
@@ -78,6 +79,7 @@ public class MonitoredReentrantLock extends ReentrantLock {
if(ServerConstants.USE_THREAD_TRACKER) { if(ServerConstants.USE_THREAD_TRACKER) {
unregisterLocking(); unregisterLocking();
} }
super.unlock(); super.unlock();
} }
@@ -25,14 +25,14 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
* @author RonanLana * @author RonanLana
*/ */
public class MonitoredReentrantReadWriteLock extends ReentrantReadWriteLock { public class MonitoredReentrantReadWriteLock extends ReentrantReadWriteLock {
public final MonitoredEnums id; public final MonitoredLockType id;
public MonitoredReentrantReadWriteLock(MonitoredEnums id) { public MonitoredReentrantReadWriteLock(MonitoredLockType id) {
super(); super();
this.id = id; this.id = id;
} }
public MonitoredReentrantReadWriteLock(MonitoredEnums id, boolean fair) { public MonitoredReentrantReadWriteLock(MonitoredLockType id, boolean fair) {
super(fair); super(fair);
this.id = id; this.id = id;
} }
+4 -2
View File
@@ -40,7 +40,7 @@ import tools.FilePrinter;
public class MonitoredWriteLock extends ReentrantReadWriteLock.WriteLock { public class MonitoredWriteLock extends ReentrantReadWriteLock.WriteLock {
private ScheduledFuture<?> timeoutSchedule = null; private ScheduledFuture<?> timeoutSchedule = null;
private StackTraceElement[] deadlockedState = null; private StackTraceElement[] deadlockedState = null;
private final MonitoredEnums id; private final MonitoredLockType id;
private final int hashcode; private final int hashcode;
private final Lock state = new ReentrantLock(true); private final Lock state = new ReentrantLock(true);
private final AtomicInteger reentrantCount = new AtomicInteger(0); private final AtomicInteger reentrantCount = new AtomicInteger(0);
@@ -53,7 +53,6 @@ public class MonitoredWriteLock extends ReentrantReadWriteLock.WriteLock {
@Override @Override
public void lock() { public void lock() {
super.lock();
if(ServerConstants.USE_THREAD_TRACKER) { if(ServerConstants.USE_THREAD_TRACKER) {
if(deadlockedState != null) { if(deadlockedState != null) {
DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
@@ -66,6 +65,8 @@ public class MonitoredWriteLock extends ReentrantReadWriteLock.WriteLock {
registerLocking(); registerLocking();
} }
super.lock();
} }
@Override @Override
@@ -73,6 +74,7 @@ public class MonitoredWriteLock extends ReentrantReadWriteLock.WriteLock {
if(ServerConstants.USE_THREAD_TRACKER) { if(ServerConstants.USE_THREAD_TRACKER) {
unregisterLocking(); unregisterLocking();
} }
super.unlock(); super.unlock();
} }
Binary file not shown.
+254 -254
View File
@@ -384,280 +384,280 @@ SET minimum_quantity = CASE
WHEN dropperid = 9500369 AND itemid = 2060000 THEN 19 WHEN dropperid = 9500369 AND itemid = 2060000 THEN 19
ELSE minimum_quantity END, ELSE minimum_quantity END,
maximum_quantity = CASE maximum_quantity = CASE
WHEN dropperid = 100100 AND itemid = 2060000 THEN 1 WHEN dropperid = 100100 AND itemid = 2060000 THEN 2
WHEN dropperid = 100100 AND itemid = 2061000 THEN 1 WHEN dropperid = 100100 AND itemid = 2061000 THEN 2
WHEN dropperid = 100101 AND itemid = 2060000 THEN 2 WHEN dropperid = 100101 AND itemid = 2060000 THEN 3
WHEN dropperid = 100101 AND itemid = 2061000 THEN 2 WHEN dropperid = 100101 AND itemid = 2061000 THEN 3
WHEN dropperid = 100120 AND itemid = 2060000 THEN 1 WHEN dropperid = 100120 AND itemid = 2060000 THEN 2
WHEN dropperid = 100120 AND itemid = 2061000 THEN 1 WHEN dropperid = 100120 AND itemid = 2061000 THEN 2
WHEN dropperid = 100121 AND itemid = 2060000 THEN 5 WHEN dropperid = 100121 AND itemid = 2060000 THEN 5
WHEN dropperid = 100123 AND itemid = 2061000 THEN 11 WHEN dropperid = 100123 AND itemid = 2061000 THEN 12
WHEN dropperid = 100124 AND itemid = 2060000 THEN 13 WHEN dropperid = 100124 AND itemid = 2060000 THEN 14
WHEN dropperid = 100124 AND itemid = 2061000 THEN 13 WHEN dropperid = 100124 AND itemid = 2061000 THEN 14
WHEN dropperid = 120100 AND itemid = 2060000 THEN 2 WHEN dropperid = 120100 AND itemid = 2060000 THEN 3
WHEN dropperid = 120100 AND itemid = 2061000 THEN 2 WHEN dropperid = 120100 AND itemid = 2061000 THEN 3
WHEN dropperid = 130100 AND itemid = 2060000 THEN 6 WHEN dropperid = 130100 AND itemid = 2060000 THEN 7
WHEN dropperid = 130100 AND itemid = 2061000 THEN 6 WHEN dropperid = 130100 AND itemid = 2061000 THEN 7
WHEN dropperid = 130101 AND itemid = 2060000 THEN 6 WHEN dropperid = 130101 AND itemid = 2060000 THEN 7
WHEN dropperid = 130101 AND itemid = 2061000 THEN 6 WHEN dropperid = 130101 AND itemid = 2061000 THEN 7
WHEN dropperid = 210100 AND itemid = 2060000 THEN 8 WHEN dropperid = 210100 AND itemid = 2060000 THEN 9
WHEN dropperid = 210100 AND itemid = 2061000 THEN 8 WHEN dropperid = 210100 AND itemid = 2061000 THEN 9
WHEN dropperid = 1110100 AND itemid = 2060000 THEN 23 WHEN dropperid = 1110100 AND itemid = 2060000 THEN 24
WHEN dropperid = 1110100 AND itemid = 2061000 THEN 23 WHEN dropperid = 1110100 AND itemid = 2061000 THEN 24
WHEN dropperid = 1110101 AND itemid = 2060000 THEN 16 WHEN dropperid = 1110101 AND itemid = 2060000 THEN 17
WHEN dropperid = 1110101 AND itemid = 2061000 THEN 16 WHEN dropperid = 1110101 AND itemid = 2061000 THEN 17
WHEN dropperid = 1110130 AND itemid = 2060000 THEN 23 WHEN dropperid = 1110130 AND itemid = 2060000 THEN 24
WHEN dropperid = 1110130 AND itemid = 2061000 THEN 23 WHEN dropperid = 1110130 AND itemid = 2061000 THEN 24
WHEN dropperid = 1120100 AND itemid = 2060000 THEN 18 WHEN dropperid = 1120100 AND itemid = 2060000 THEN 19
WHEN dropperid = 1120100 AND itemid = 2061000 THEN 18 WHEN dropperid = 1120100 AND itemid = 2061000 THEN 19
WHEN dropperid = 1130100 AND itemid = 2060000 THEN 27 WHEN dropperid = 1130100 AND itemid = 2060000 THEN 28
WHEN dropperid = 1130100 AND itemid = 2061000 THEN 27 WHEN dropperid = 1130100 AND itemid = 2061000 THEN 28
WHEN dropperid = 1140100 AND itemid = 2060000 THEN 30 WHEN dropperid = 1140100 AND itemid = 2060000 THEN 30
WHEN dropperid = 1140100 AND itemid = 2061000 THEN 30 WHEN dropperid = 1140100 AND itemid = 2061000 THEN 30
WHEN dropperid = 1140130 AND itemid = 2060000 THEN 30 WHEN dropperid = 1140130 AND itemid = 2060000 THEN 30
WHEN dropperid = 1140130 AND itemid = 2061000 THEN 30 WHEN dropperid = 1140130 AND itemid = 2061000 THEN 30
WHEN dropperid = 1210100 AND itemid = 2060000 THEN 11 WHEN dropperid = 1210100 AND itemid = 2060000 THEN 12
WHEN dropperid = 1210100 AND itemid = 2061000 THEN 11 WHEN dropperid = 1210100 AND itemid = 2061000 THEN 12
WHEN dropperid = 1210101 AND itemid = 2060000 THEN 16 WHEN dropperid = 1210101 AND itemid = 2060000 THEN 17
WHEN dropperid = 1210101 AND itemid = 2061000 THEN 16 WHEN dropperid = 1210101 AND itemid = 2061000 THEN 17
WHEN dropperid = 1210102 AND itemid = 2060000 THEN 12 WHEN dropperid = 1210102 AND itemid = 2060000 THEN 13
WHEN dropperid = 1210102 AND itemid = 2061000 THEN 12 WHEN dropperid = 1210102 AND itemid = 2061000 THEN 13
WHEN dropperid = 1210103 AND itemid = 2060000 THEN 23 WHEN dropperid = 1210103 AND itemid = 2060000 THEN 24
WHEN dropperid = 1210103 AND itemid = 2061000 THEN 23 WHEN dropperid = 1210103 AND itemid = 2061000 THEN 24
WHEN dropperid = 2100100 AND itemid = 2060000 THEN 32 WHEN dropperid = 2100100 AND itemid = 2060000 THEN 33
WHEN dropperid = 2100100 AND itemid = 2061000 THEN 32 WHEN dropperid = 2100100 AND itemid = 2061000 THEN 33
WHEN dropperid = 2100101 AND itemid = 2060000 THEN 33 WHEN dropperid = 2100101 AND itemid = 2060000 THEN 34
WHEN dropperid = 2100101 AND itemid = 2061000 THEN 33 WHEN dropperid = 2100101 AND itemid = 2061000 THEN 34
WHEN dropperid = 2100102 AND itemid = 2060000 THEN 35 WHEN dropperid = 2100102 AND itemid = 2060000 THEN 35
WHEN dropperid = 2100102 AND itemid = 2061000 THEN 35 WHEN dropperid = 2100102 AND itemid = 2061000 THEN 35
WHEN dropperid = 2100103 AND itemid = 2060000 THEN 40 WHEN dropperid = 2100103 AND itemid = 2060000 THEN 40
WHEN dropperid = 2100103 AND itemid = 2061000 THEN 40 WHEN dropperid = 2100103 AND itemid = 2061000 THEN 40
WHEN dropperid = 2100104 AND itemid = 2060000 THEN 45 WHEN dropperid = 2100104 AND itemid = 2060000 THEN 45
WHEN dropperid = 2100104 AND itemid = 2061000 THEN 45 WHEN dropperid = 2100104 AND itemid = 2061000 THEN 45
WHEN dropperid = 2100105 AND itemid = 2060000 THEN 37 WHEN dropperid = 2100105 AND itemid = 2060000 THEN 38
WHEN dropperid = 2100105 AND itemid = 2061000 THEN 37 WHEN dropperid = 2100105 AND itemid = 2061000 THEN 38
WHEN dropperid = 2100106 AND itemid = 2060000 THEN 38 WHEN dropperid = 2100106 AND itemid = 2060000 THEN 39
WHEN dropperid = 2100106 AND itemid = 2061000 THEN 38 WHEN dropperid = 2100106 AND itemid = 2061000 THEN 39
WHEN dropperid = 2100107 AND itemid = 2060000 THEN 43 WHEN dropperid = 2100107 AND itemid = 2060000 THEN 44
WHEN dropperid = 2100107 AND itemid = 2061000 THEN 43 WHEN dropperid = 2100107 AND itemid = 2061000 THEN 44
WHEN dropperid = 2100108 AND itemid = 2060000 THEN 46 WHEN dropperid = 2100108 AND itemid = 2060000 THEN 47
WHEN dropperid = 2100108 AND itemid = 2061000 THEN 46 WHEN dropperid = 2100108 AND itemid = 2061000 THEN 47
WHEN dropperid = 2110200 AND itemid = 2060000 THEN 35 WHEN dropperid = 2110200 AND itemid = 2060000 THEN 35
WHEN dropperid = 2110200 AND itemid = 2061000 THEN 35 WHEN dropperid = 2110200 AND itemid = 2061000 THEN 35
WHEN dropperid = 2110300 AND itemid = 2060000 THEN 38 WHEN dropperid = 2110300 AND itemid = 2060000 THEN 39
WHEN dropperid = 2110300 AND itemid = 2061000 THEN 38 WHEN dropperid = 2110300 AND itemid = 2061000 THEN 39
WHEN dropperid = 2110301 AND itemid = 2060000 THEN 46 WHEN dropperid = 2110301 AND itemid = 2060000 THEN 47
WHEN dropperid = 2110301 AND itemid = 2061000 THEN 46 WHEN dropperid = 2110301 AND itemid = 2061000 THEN 47
WHEN dropperid = 2130100 AND itemid = 2060000 THEN 35 WHEN dropperid = 2130100 AND itemid = 2060000 THEN 35
WHEN dropperid = 2130100 AND itemid = 2061000 THEN 35 WHEN dropperid = 2130100 AND itemid = 2061000 THEN 35
WHEN dropperid = 2220000 AND itemid = 2060000 THEN 45 WHEN dropperid = 2220000 AND itemid = 2060000 THEN 45
WHEN dropperid = 2220000 AND itemid = 2061000 THEN 45 WHEN dropperid = 2220000 AND itemid = 2061000 THEN 45
WHEN dropperid = 2220100 AND itemid = 2060000 THEN 32 WHEN dropperid = 2220100 AND itemid = 2060000 THEN 33
WHEN dropperid = 2220100 AND itemid = 2061000 THEN 32 WHEN dropperid = 2220100 AND itemid = 2061000 THEN 33
WHEN dropperid = 2230100 AND itemid = 2060000 THEN 43 WHEN dropperid = 2230100 AND itemid = 2060000 THEN 44
WHEN dropperid = 2230100 AND itemid = 2061000 THEN 43 WHEN dropperid = 2230100 AND itemid = 2061000 THEN 44
WHEN dropperid = 2230101 AND itemid = 2060000 THEN 38 WHEN dropperid = 2230101 AND itemid = 2060000 THEN 39
WHEN dropperid = 2230101 AND itemid = 2061000 THEN 38 WHEN dropperid = 2230101 AND itemid = 2061000 THEN 39
WHEN dropperid = 2230102 AND itemid = 2060000 THEN 40 WHEN dropperid = 2230102 AND itemid = 2060000 THEN 40
WHEN dropperid = 2230102 AND itemid = 2061000 THEN 40 WHEN dropperid = 2230102 AND itemid = 2061000 THEN 40
WHEN dropperid = 2230103 AND itemid = 2060000 THEN 37 WHEN dropperid = 2230103 AND itemid = 2060000 THEN 38
WHEN dropperid = 2230103 AND itemid = 2061000 THEN 37 WHEN dropperid = 2230103 AND itemid = 2061000 THEN 38
WHEN dropperid = 2230104 AND itemid = 2060000 THEN 45 WHEN dropperid = 2230104 AND itemid = 2060000 THEN 45
WHEN dropperid = 2230104 AND itemid = 2061000 THEN 45 WHEN dropperid = 2230104 AND itemid = 2061000 THEN 45
WHEN dropperid = 2230105 AND itemid = 2060000 THEN 37 WHEN dropperid = 2230105 AND itemid = 2060000 THEN 38
WHEN dropperid = 2230105 AND itemid = 2061000 THEN 37 WHEN dropperid = 2230105 AND itemid = 2061000 THEN 38
WHEN dropperid = 2230106 AND itemid = 2060000 THEN 40 WHEN dropperid = 2230106 AND itemid = 2060000 THEN 40
WHEN dropperid = 2230106 AND itemid = 2061000 THEN 40 WHEN dropperid = 2230106 AND itemid = 2061000 THEN 40
WHEN dropperid = 2230107 AND itemid = 2060000 THEN 38 WHEN dropperid = 2230107 AND itemid = 2060000 THEN 39
WHEN dropperid = 2230107 AND itemid = 2061000 THEN 38 WHEN dropperid = 2230107 AND itemid = 2061000 THEN 39
WHEN dropperid = 2230108 AND itemid = 2060000 THEN 35 WHEN dropperid = 2230108 AND itemid = 2060000 THEN 35
WHEN dropperid = 2230108 AND itemid = 2061000 THEN 35 WHEN dropperid = 2230108 AND itemid = 2061000 THEN 35
WHEN dropperid = 2230109 AND itemid = 2060000 THEN 45 WHEN dropperid = 2230109 AND itemid = 2060000 THEN 45
WHEN dropperid = 2230109 AND itemid = 2061000 THEN 45 WHEN dropperid = 2230109 AND itemid = 2061000 THEN 45
WHEN dropperid = 2230110 AND itemid = 2060000 THEN 37 WHEN dropperid = 2230110 AND itemid = 2060000 THEN 38
WHEN dropperid = 2230110 AND itemid = 2061000 THEN 37 WHEN dropperid = 2230110 AND itemid = 2061000 THEN 38
WHEN dropperid = 2230111 AND itemid = 2060000 THEN 38 WHEN dropperid = 2230111 AND itemid = 2060000 THEN 39
WHEN dropperid = 2230111 AND itemid = 2061000 THEN 38 WHEN dropperid = 2230111 AND itemid = 2061000 THEN 39
WHEN dropperid = 2230131 AND itemid = 2060000 THEN 38 WHEN dropperid = 2230131 AND itemid = 2060000 THEN 39
WHEN dropperid = 2230131 AND itemid = 2061000 THEN 38 WHEN dropperid = 2230131 AND itemid = 2061000 THEN 39
WHEN dropperid = 2230200 AND itemid = 2060000 THEN 46 WHEN dropperid = 2230200 AND itemid = 2060000 THEN 47
WHEN dropperid = 2230200 AND itemid = 2061000 THEN 46 WHEN dropperid = 2230200 AND itemid = 2061000 THEN 47
WHEN dropperid = 2300100 AND itemid = 2060000 THEN 32 WHEN dropperid = 2300100 AND itemid = 2060000 THEN 33
WHEN dropperid = 2300100 AND itemid = 2061000 THEN 32 WHEN dropperid = 2300100 AND itemid = 2061000 THEN 33
WHEN dropperid = 3000000 AND itemid = 2060000 THEN 48 WHEN dropperid = 3000000 AND itemid = 2060000 THEN 49
WHEN dropperid = 3000000 AND itemid = 2061000 THEN 48 WHEN dropperid = 3000000 AND itemid = 2061000 THEN 49
WHEN dropperid = 3000005 AND itemid = 2060000 THEN 48 WHEN dropperid = 3000005 AND itemid = 2060000 THEN 49
WHEN dropperid = 3000005 AND itemid = 2061000 THEN 48 WHEN dropperid = 3000005 AND itemid = 2061000 THEN 49
WHEN dropperid = 3000006 AND itemid = 2060000 THEN 48 WHEN dropperid = 3000006 AND itemid = 2060000 THEN 49
WHEN dropperid = 3000006 AND itemid = 2061000 THEN 48 WHEN dropperid = 3000006 AND itemid = 2061000 THEN 49
WHEN dropperid = 3100101 AND itemid = 2060000 THEN 51 WHEN dropperid = 3100101 AND itemid = 2060000 THEN 52
WHEN dropperid = 3100101 AND itemid = 2061000 THEN 51 WHEN dropperid = 3100101 AND itemid = 2061000 THEN 52
WHEN dropperid = 3100102 AND itemid = 2060000 THEN 48 WHEN dropperid = 3100102 AND itemid = 2060000 THEN 49
WHEN dropperid = 3100102 AND itemid = 2061000 THEN 48 WHEN dropperid = 3100102 AND itemid = 2061000 THEN 49
WHEN dropperid = 3110101 AND itemid = 2060000 THEN 51 WHEN dropperid = 3110101 AND itemid = 2060000 THEN 52
WHEN dropperid = 3110101 AND itemid = 2061000 THEN 51 WHEN dropperid = 3110101 AND itemid = 2061000 THEN 52
WHEN dropperid = 3110102 AND itemid = 2060000 THEN 51 WHEN dropperid = 3110102 AND itemid = 2060000 THEN 52
WHEN dropperid = 3110102 AND itemid = 2061000 THEN 51 WHEN dropperid = 3110102 AND itemid = 2061000 THEN 52
WHEN dropperid = 3110300 AND itemid = 2060000 THEN 51 WHEN dropperid = 3110300 AND itemid = 2060000 THEN 52
WHEN dropperid = 3110300 AND itemid = 2061000 THEN 51 WHEN dropperid = 3110300 AND itemid = 2061000 THEN 52
WHEN dropperid = 3110301 AND itemid = 2060000 THEN 51 WHEN dropperid = 3110301 AND itemid = 2060000 THEN 52
WHEN dropperid = 3110301 AND itemid = 2061000 THEN 51 WHEN dropperid = 3110301 AND itemid = 2061000 THEN 52
WHEN dropperid = 3110302 AND itemid = 2060000 THEN 56 WHEN dropperid = 3110302 AND itemid = 2060000 THEN 57
WHEN dropperid = 3110302 AND itemid = 2061000 THEN 56 WHEN dropperid = 3110302 AND itemid = 2061000 THEN 57
WHEN dropperid = 3110303 AND itemid = 2060000 THEN 61 WHEN dropperid = 3110303 AND itemid = 2060000 THEN 62
WHEN dropperid = 3110303 AND itemid = 2061000 THEN 61 WHEN dropperid = 3110303 AND itemid = 2061000 THEN 62
WHEN dropperid = 3210100 AND itemid = 2060005 THEN 8 WHEN dropperid = 3210100 AND itemid = 2060005 THEN 8
WHEN dropperid = 3210203 AND itemid = 2060000 THEN 58 WHEN dropperid = 3210203 AND itemid = 2060000 THEN 59
WHEN dropperid = 3210203 AND itemid = 2061000 THEN 58 WHEN dropperid = 3210203 AND itemid = 2061000 THEN 59
WHEN dropperid = 3210204 AND itemid = 2060000 THEN 55 WHEN dropperid = 3210204 AND itemid = 2060000 THEN 55
WHEN dropperid = 3210204 AND itemid = 2061000 THEN 55 WHEN dropperid = 3210204 AND itemid = 2061000 THEN 55
WHEN dropperid = 3210205 AND itemid = 2060000 THEN 55 WHEN dropperid = 3210205 AND itemid = 2060000 THEN 55
WHEN dropperid = 3210205 AND itemid = 2061000 THEN 55 WHEN dropperid = 3210205 AND itemid = 2061000 THEN 55
WHEN dropperid = 3210206 AND itemid = 2060000 THEN 58 WHEN dropperid = 3210206 AND itemid = 2060000 THEN 59
WHEN dropperid = 3210206 AND itemid = 2061000 THEN 58 WHEN dropperid = 3210206 AND itemid = 2061000 THEN 59
WHEN dropperid = 3210207 AND itemid = 2060000 THEN 55 WHEN dropperid = 3210207 AND itemid = 2060000 THEN 55
WHEN dropperid = 3210207 AND itemid = 2060005 THEN 9 WHEN dropperid = 3210207 AND itemid = 2060005 THEN 9
WHEN dropperid = 3210207 AND itemid = 2061000 THEN 55 WHEN dropperid = 3210207 AND itemid = 2061000 THEN 55
WHEN dropperid = 3210208 AND itemid = 2060000 THEN 58 WHEN dropperid = 3210208 AND itemid = 2060000 THEN 59
WHEN dropperid = 3210208 AND itemid = 2061000 THEN 58 WHEN dropperid = 3210208 AND itemid = 2061000 THEN 59
WHEN dropperid = 3210450 AND itemid = 2060000 THEN 58 WHEN dropperid = 3210450 AND itemid = 2060000 THEN 59
WHEN dropperid = 3210450 AND itemid = 2061000 THEN 58 WHEN dropperid = 3210450 AND itemid = 2061000 THEN 59
WHEN dropperid = 3210800 AND itemid = 2060005 THEN 10 WHEN dropperid = 3210800 AND itemid = 2060005 THEN 10
WHEN dropperid = 3220000 AND itemid = 2060000 THEN 78 WHEN dropperid = 3220000 AND itemid = 2060000 THEN 79
WHEN dropperid = 3220000 AND itemid = 2061000 THEN 78 WHEN dropperid = 3220000 AND itemid = 2061000 THEN 79
WHEN dropperid = 3230100 AND itemid = 2060000 THEN 56 WHEN dropperid = 3230100 AND itemid = 2060000 THEN 57
WHEN dropperid = 3230100 AND itemid = 2061000 THEN 56 WHEN dropperid = 3230100 AND itemid = 2061000 THEN 57
WHEN dropperid = 3230103 AND itemid = 2060000 THEN 61 WHEN dropperid = 3230103 AND itemid = 2060000 THEN 62
WHEN dropperid = 3230103 AND itemid = 2061000 THEN 61 WHEN dropperid = 3230103 AND itemid = 2061000 THEN 62
WHEN dropperid = 3230200 AND itemid = 2060000 THEN 56 WHEN dropperid = 3230200 AND itemid = 2060000 THEN 57
WHEN dropperid = 3230200 AND itemid = 2061000 THEN 56 WHEN dropperid = 3230200 AND itemid = 2061000 THEN 57
WHEN dropperid = 3230302 AND itemid = 2060000 THEN 56 WHEN dropperid = 3230302 AND itemid = 2060000 THEN 57
WHEN dropperid = 3230302 AND itemid = 2061000 THEN 56 WHEN dropperid = 3230302 AND itemid = 2061000 THEN 57
WHEN dropperid = 3230303 AND itemid = 2060000 THEN 60 WHEN dropperid = 3230303 AND itemid = 2060000 THEN 60
WHEN dropperid = 3230303 AND itemid = 2061000 THEN 60 WHEN dropperid = 3230303 AND itemid = 2061000 THEN 60
WHEN dropperid = 3230304 AND itemid = 2060000 THEN 61 WHEN dropperid = 3230304 AND itemid = 2060000 THEN 62
WHEN dropperid = 3230304 AND itemid = 2061000 THEN 61 WHEN dropperid = 3230304 AND itemid = 2061000 THEN 62
WHEN dropperid = 3230305 AND itemid = 2060000 THEN 63 WHEN dropperid = 3230305 AND itemid = 2060000 THEN 64
WHEN dropperid = 3230305 AND itemid = 2061000 THEN 63 WHEN dropperid = 3230305 AND itemid = 2061000 THEN 64
WHEN dropperid = 3230306 AND itemid = 2060000 THEN 60 WHEN dropperid = 3230306 AND itemid = 2060000 THEN 60
WHEN dropperid = 3230306 AND itemid = 2061000 THEN 60 WHEN dropperid = 3230306 AND itemid = 2061000 THEN 60
WHEN dropperid = 3230307 AND itemid = 2060000 THEN 50 WHEN dropperid = 3230307 AND itemid = 2060000 THEN 50
WHEN dropperid = 3230307 AND itemid = 2061000 THEN 50 WHEN dropperid = 3230307 AND itemid = 2061000 THEN 50
WHEN dropperid = 3230308 AND itemid = 2060000 THEN 63 WHEN dropperid = 3230308 AND itemid = 2060000 THEN 64
WHEN dropperid = 3230308 AND itemid = 2061000 THEN 63 WHEN dropperid = 3230308 AND itemid = 2061000 THEN 64
WHEN dropperid = 3230400 AND itemid = 2060000 THEN 48 WHEN dropperid = 3230400 AND itemid = 2060000 THEN 49
WHEN dropperid = 3230400 AND itemid = 2061000 THEN 48 WHEN dropperid = 3230400 AND itemid = 2061000 THEN 49
WHEN dropperid = 3230405 AND itemid = 2060000 THEN 61 WHEN dropperid = 3230405 AND itemid = 2060000 THEN 62
WHEN dropperid = 3230405 AND itemid = 2061000 THEN 61 WHEN dropperid = 3230405 AND itemid = 2061000 THEN 62
WHEN dropperid = 3300000 AND itemid = 2060000 THEN 48 WHEN dropperid = 3300000 AND itemid = 2060000 THEN 49
WHEN dropperid = 3300000 AND itemid = 2061000 THEN 48 WHEN dropperid = 3300000 AND itemid = 2061000 THEN 49
WHEN dropperid = 3300001 AND itemid = 2060000 THEN 48 WHEN dropperid = 3300001 AND itemid = 2060000 THEN 49
WHEN dropperid = 3300001 AND itemid = 2061000 THEN 48 WHEN dropperid = 3300001 AND itemid = 2061000 THEN 49
WHEN dropperid = 3300002 AND itemid = 2060000 THEN 50 WHEN dropperid = 3300002 AND itemid = 2060000 THEN 50
WHEN dropperid = 3300002 AND itemid = 2061000 THEN 50 WHEN dropperid = 3300002 AND itemid = 2061000 THEN 50
WHEN dropperid = 3300003 AND itemid = 2060000 THEN 51 WHEN dropperid = 3300003 AND itemid = 2060000 THEN 52
WHEN dropperid = 3300003 AND itemid = 2061000 THEN 51 WHEN dropperid = 3300003 AND itemid = 2061000 THEN 52
WHEN dropperid = 3300004 AND itemid = 2060000 THEN 53 WHEN dropperid = 3300004 AND itemid = 2060000 THEN 54
WHEN dropperid = 3300004 AND itemid = 2061000 THEN 53 WHEN dropperid = 3300004 AND itemid = 2061000 THEN 54
WHEN dropperid = 3300006 AND itemid = 2060000 THEN 56 WHEN dropperid = 3300006 AND itemid = 2060000 THEN 57
WHEN dropperid = 3300006 AND itemid = 2061000 THEN 56 WHEN dropperid = 3300006 AND itemid = 2061000 THEN 57
WHEN dropperid = 3300007 AND itemid = 2060000 THEN 56 WHEN dropperid = 3300007 AND itemid = 2060000 THEN 57
WHEN dropperid = 3300007 AND itemid = 2061000 THEN 56 WHEN dropperid = 3300007 AND itemid = 2061000 THEN 57
WHEN dropperid = 3300008 AND itemid = 2060000 THEN 86 WHEN dropperid = 3300008 AND itemid = 2060000 THEN 87
WHEN dropperid = 3300008 AND itemid = 2061000 THEN 86 WHEN dropperid = 3300008 AND itemid = 2061000 THEN 87
WHEN dropperid = 4110300 AND itemid = 2060000 THEN 67 WHEN dropperid = 4110300 AND itemid = 2060000 THEN 68
WHEN dropperid = 4110300 AND itemid = 2061000 THEN 67 WHEN dropperid = 4110300 AND itemid = 2061000 THEN 68
WHEN dropperid = 4110301 AND itemid = 2060000 THEN 72 WHEN dropperid = 4110301 AND itemid = 2060000 THEN 73
WHEN dropperid = 4110301 AND itemid = 2061000 THEN 72 WHEN dropperid = 4110301 AND itemid = 2061000 THEN 73
WHEN dropperid = 4130103 AND itemid = 2060000 THEN 106 WHEN dropperid = 4130103 AND itemid = 2060000 THEN 107
WHEN dropperid = 4130103 AND itemid = 2061000 THEN 106 WHEN dropperid = 4130103 AND itemid = 2061000 THEN 107
WHEN dropperid = 4230103 AND itemid = 2060000 THEN 67 WHEN dropperid = 4230103 AND itemid = 2060000 THEN 68
WHEN dropperid = 4230103 AND itemid = 2061000 THEN 67 WHEN dropperid = 4230103 AND itemid = 2061000 THEN 68
WHEN dropperid = 4230106 AND itemid = 2060000 THEN 72 WHEN dropperid = 4230106 AND itemid = 2060000 THEN 73
WHEN dropperid = 4230106 AND itemid = 2061000 THEN 72 WHEN dropperid = 4230106 AND itemid = 2061000 THEN 73
WHEN dropperid = 4230108 AND itemid = 2060000 THEN 70 WHEN dropperid = 4230108 AND itemid = 2060000 THEN 70
WHEN dropperid = 4230108 AND itemid = 2061000 THEN 70 WHEN dropperid = 4230108 AND itemid = 2061000 THEN 70
WHEN dropperid = 4230109 AND itemid = 2060000 THEN 67 WHEN dropperid = 4230109 AND itemid = 2060000 THEN 68
WHEN dropperid = 4230109 AND itemid = 2061000 THEN 67 WHEN dropperid = 4230109 AND itemid = 2061000 THEN 68
WHEN dropperid = 4230110 AND itemid = 2060000 THEN 72 WHEN dropperid = 4230110 AND itemid = 2060000 THEN 73
WHEN dropperid = 4230110 AND itemid = 2061000 THEN 72 WHEN dropperid = 4230110 AND itemid = 2061000 THEN 73
WHEN dropperid = 4230111 AND itemid = 2060000 THEN 66 WHEN dropperid = 4230111 AND itemid = 2060000 THEN 67
WHEN dropperid = 4230111 AND itemid = 2061000 THEN 66 WHEN dropperid = 4230111 AND itemid = 2061000 THEN 67
WHEN dropperid = 4230112 AND itemid = 2060000 THEN 71 WHEN dropperid = 4230112 AND itemid = 2060000 THEN 72
WHEN dropperid = 4230112 AND itemid = 2061000 THEN 71 WHEN dropperid = 4230112 AND itemid = 2061000 THEN 72
WHEN dropperid = 4230113 AND itemid = 2060000 THEN 65 WHEN dropperid = 4230113 AND itemid = 2060000 THEN 65
WHEN dropperid = 4230113 AND itemid = 2061000 THEN 65 WHEN dropperid = 4230113 AND itemid = 2061000 THEN 65
WHEN dropperid = 4230114 AND itemid = 2060000 THEN 66 WHEN dropperid = 4230114 AND itemid = 2060000 THEN 67
WHEN dropperid = 4230114 AND itemid = 2061000 THEN 66 WHEN dropperid = 4230114 AND itemid = 2061000 THEN 67
WHEN dropperid = 4230115 AND itemid = 2060000 THEN 75 WHEN dropperid = 4230115 AND itemid = 2060000 THEN 75
WHEN dropperid = 4230115 AND itemid = 2061000 THEN 75 WHEN dropperid = 4230115 AND itemid = 2061000 THEN 75
WHEN dropperid = 4230116 AND itemid = 2060000 THEN 65 WHEN dropperid = 4230116 AND itemid = 2060000 THEN 65
WHEN dropperid = 4230116 AND itemid = 2061000 THEN 65 WHEN dropperid = 4230116 AND itemid = 2061000 THEN 65
WHEN dropperid = 4230117 AND itemid = 2060000 THEN 67 WHEN dropperid = 4230117 AND itemid = 2060000 THEN 68
WHEN dropperid = 4230117 AND itemid = 2061000 THEN 67 WHEN dropperid = 4230117 AND itemid = 2061000 THEN 68
WHEN dropperid = 4230118 AND itemid = 2060000 THEN 72 WHEN dropperid = 4230118 AND itemid = 2060000 THEN 73
WHEN dropperid = 4230118 AND itemid = 2061000 THEN 72 WHEN dropperid = 4230118 AND itemid = 2061000 THEN 73
WHEN dropperid = 4230119 AND itemid = 2060000 THEN 66 WHEN dropperid = 4230119 AND itemid = 2060000 THEN 67
WHEN dropperid = 4230119 AND itemid = 2061000 THEN 66 WHEN dropperid = 4230119 AND itemid = 2061000 THEN 67
WHEN dropperid = 4230120 AND itemid = 2060000 THEN 71 WHEN dropperid = 4230120 AND itemid = 2060000 THEN 72
WHEN dropperid = 4230120 AND itemid = 2061000 THEN 71 WHEN dropperid = 4230120 AND itemid = 2061000 THEN 72
WHEN dropperid = 4230121 AND itemid = 2060000 THEN 75 WHEN dropperid = 4230121 AND itemid = 2060000 THEN 75
WHEN dropperid = 4230121 AND itemid = 2061000 THEN 75 WHEN dropperid = 4230121 AND itemid = 2061000 THEN 75
WHEN dropperid = 4230123 AND itemid = 2060000 THEN 70 WHEN dropperid = 4230123 AND itemid = 2060000 THEN 70
WHEN dropperid = 4230123 AND itemid = 2061000 THEN 70 WHEN dropperid = 4230123 AND itemid = 2061000 THEN 70
WHEN dropperid = 4230124 AND itemid = 2060000 THEN 67 WHEN dropperid = 4230124 AND itemid = 2060000 THEN 68
WHEN dropperid = 4230124 AND itemid = 2061000 THEN 67 WHEN dropperid = 4230124 AND itemid = 2061000 THEN 68
WHEN dropperid = 4230125 AND itemid = 2060000 THEN 71 WHEN dropperid = 4230125 AND itemid = 2060000 THEN 72
WHEN dropperid = 4230125 AND itemid = 2061000 THEN 71 WHEN dropperid = 4230125 AND itemid = 2061000 THEN 72
WHEN dropperid = 4230126 AND itemid = 2060000 THEN 76 WHEN dropperid = 4230126 AND itemid = 2060000 THEN 77
WHEN dropperid = 4230126 AND itemid = 2061000 THEN 76 WHEN dropperid = 4230126 AND itemid = 2061000 THEN 77
WHEN dropperid = 4230201 AND itemid = 2060000 THEN 65 WHEN dropperid = 4230201 AND itemid = 2060000 THEN 65
WHEN dropperid = 4230201 AND itemid = 2061000 THEN 65 WHEN dropperid = 4230201 AND itemid = 2061000 THEN 65
WHEN dropperid = 4230300 AND itemid = 2060000 THEN 72 WHEN dropperid = 4230300 AND itemid = 2060000 THEN 73
WHEN dropperid = 4230300 AND itemid = 2061000 THEN 72 WHEN dropperid = 4230300 AND itemid = 2061000 THEN 73
WHEN dropperid = 4230400 AND itemid = 2060000 THEN 72 WHEN dropperid = 4230400 AND itemid = 2060000 THEN 73
WHEN dropperid = 4230400 AND itemid = 2061000 THEN 72 WHEN dropperid = 4230400 AND itemid = 2061000 THEN 73
WHEN dropperid = 4230500 AND itemid = 2060000 THEN 65 WHEN dropperid = 4230500 AND itemid = 2060000 THEN 65
WHEN dropperid = 4230500 AND itemid = 2061000 THEN 65 WHEN dropperid = 4230500 AND itemid = 2061000 THEN 65
WHEN dropperid = 4230501 AND itemid = 2060000 THEN 66 WHEN dropperid = 4230501 AND itemid = 2060000 THEN 67
WHEN dropperid = 4230501 AND itemid = 2061000 THEN 66 WHEN dropperid = 4230501 AND itemid = 2061000 THEN 67
WHEN dropperid = 4230502 AND itemid = 2060000 THEN 70 WHEN dropperid = 4230502 AND itemid = 2060000 THEN 70
WHEN dropperid = 4230502 AND itemid = 2061000 THEN 70 WHEN dropperid = 4230502 AND itemid = 2061000 THEN 70
WHEN dropperid = 4230503 AND itemid = 2060000 THEN 72 WHEN dropperid = 4230503 AND itemid = 2060000 THEN 73
WHEN dropperid = 4230503 AND itemid = 2061000 THEN 72 WHEN dropperid = 4230503 AND itemid = 2061000 THEN 73
WHEN dropperid = 4230504 AND itemid = 2060000 THEN 72 WHEN dropperid = 4230504 AND itemid = 2060000 THEN 73
WHEN dropperid = 4230504 AND itemid = 2061000 THEN 72 WHEN dropperid = 4230504 AND itemid = 2061000 THEN 73
WHEN dropperid = 4230600 AND itemid = 2060000 THEN 65 WHEN dropperid = 4230600 AND itemid = 2060000 THEN 65
WHEN dropperid = 4230600 AND itemid = 2061000 THEN 65 WHEN dropperid = 4230600 AND itemid = 2061000 THEN 65
WHEN dropperid = 4240000 AND itemid = 2060000 THEN 80 WHEN dropperid = 4240000 AND itemid = 2060000 THEN 80
WHEN dropperid = 4240000 AND itemid = 2061000 THEN 80 WHEN dropperid = 4240000 AND itemid = 2061000 THEN 80
WHEN dropperid = 5120100 AND itemid = 2060000 THEN 122 WHEN dropperid = 5120100 AND itemid = 2060000 THEN 123
WHEN dropperid = 5120100 AND itemid = 2061000 THEN 122 WHEN dropperid = 5120100 AND itemid = 2061000 THEN 123
WHEN dropperid = 5130104 AND itemid = 2060000 THEN 88 WHEN dropperid = 5130104 AND itemid = 2060000 THEN 89
WHEN dropperid = 5130104 AND itemid = 2061000 THEN 88 WHEN dropperid = 5130104 AND itemid = 2061000 THEN 89
WHEN dropperid = 5140000 AND itemid = 2060000 THEN 93 WHEN dropperid = 5140000 AND itemid = 2060000 THEN 94
WHEN dropperid = 5140000 AND itemid = 2061000 THEN 93 WHEN dropperid = 5140000 AND itemid = 2061000 THEN 94
WHEN dropperid = 5150000 AND itemid = 2060000 THEN 96 WHEN dropperid = 5150000 AND itemid = 2060000 THEN 97
WHEN dropperid = 5150000 AND itemid = 2061000 THEN 96 WHEN dropperid = 5150000 AND itemid = 2061000 THEN 97
WHEN dropperid = 5200000 AND itemid = 2060001 THEN 18 WHEN dropperid = 5200000 AND itemid = 2060001 THEN 19
WHEN dropperid = 5200000 AND itemid = 2061001 THEN 18 WHEN dropperid = 5200000 AND itemid = 2061001 THEN 19
WHEN dropperid = 5200001 AND itemid = 2060001 THEN 24 WHEN dropperid = 5200001 AND itemid = 2060001 THEN 24
WHEN dropperid = 5200001 AND itemid = 2061001 THEN 24 WHEN dropperid = 5200001 AND itemid = 2061001 THEN 24
WHEN dropperid = 5200002 AND itemid = 2060001 THEN 24 WHEN dropperid = 5200002 AND itemid = 2060001 THEN 24
WHEN dropperid = 5200002 AND itemid = 2061001 THEN 24 WHEN dropperid = 5200002 AND itemid = 2061001 THEN 24
WHEN dropperid = 5220000 AND itemid = 2060000 THEN 125 WHEN dropperid = 5220000 AND itemid = 2060000 THEN 125
WHEN dropperid = 5220000 AND itemid = 2061000 THEN 125 WHEN dropperid = 5220000 AND itemid = 2061000 THEN 125
WHEN dropperid = 5220002 AND itemid = 2060000 THEN 113 WHEN dropperid = 5220002 AND itemid = 2060000 THEN 114
WHEN dropperid = 5220002 AND itemid = 2061000 THEN 113 WHEN dropperid = 5220002 AND itemid = 2061000 THEN 114
WHEN dropperid = 5220003 AND itemid = 2060000 THEN 133 WHEN dropperid = 5220003 AND itemid = 2060000 THEN 134
WHEN dropperid = 5220003 AND itemid = 2061000 THEN 133 WHEN dropperid = 5220003 AND itemid = 2061000 THEN 134
WHEN dropperid = 5400000 AND itemid = 2060001 THEN 28 WHEN dropperid = 5400000 AND itemid = 2060001 THEN 28
WHEN dropperid = 5400000 AND itemid = 2061001 THEN 28 WHEN dropperid = 5400000 AND itemid = 2061001 THEN 28
WHEN dropperid = 6220000 AND itemid = 2060000 THEN 147 WHEN dropperid = 6220000 AND itemid = 2060000 THEN 148
WHEN dropperid = 6220000 AND itemid = 2061000 THEN 147 WHEN dropperid = 6220000 AND itemid = 2061000 THEN 148
WHEN dropperid = 7120103 AND itemid = 2060003 THEN 28 WHEN dropperid = 7120103 AND itemid = 2060003 THEN 28
WHEN dropperid = 7220000 AND itemid = 2060001 THEN 80 WHEN dropperid = 7220000 AND itemid = 2060001 THEN 81
WHEN dropperid = 7220000 AND itemid = 2061001 THEN 80 WHEN dropperid = 7220000 AND itemid = 2061001 THEN 81
WHEN dropperid = 7220001 AND itemid = 2060001 THEN 79 WHEN dropperid = 7220001 AND itemid = 2060001 THEN 79
WHEN dropperid = 7220001 AND itemid = 2061001 THEN 79 WHEN dropperid = 7220001 AND itemid = 2061001 THEN 79
WHEN dropperid = 7220002 AND itemid = 2060001 THEN 87 WHEN dropperid = 7220002 AND itemid = 2060001 THEN 87
@@ -666,29 +666,29 @@ SET minimum_quantity = CASE
WHEN dropperid = 8220000 AND itemid = 2061001 THEN 94 WHEN dropperid = 8220000 AND itemid = 2061001 THEN 94
WHEN dropperid = 8220001 AND itemid = 2060001 THEN 102 WHEN dropperid = 8220001 AND itemid = 2060001 THEN 102
WHEN dropperid = 8220001 AND itemid = 2061001 THEN 102 WHEN dropperid = 8220001 AND itemid = 2061001 THEN 102
WHEN dropperid = 9300011 AND itemid = 2060000 THEN 63 WHEN dropperid = 9300011 AND itemid = 2060000 THEN 64
WHEN dropperid = 9300011 AND itemid = 2061000 THEN 63 WHEN dropperid = 9300011 AND itemid = 2061000 THEN 64
WHEN dropperid = 9300060 AND itemid = 2060000 THEN 67 WHEN dropperid = 9300060 AND itemid = 2060000 THEN 68
WHEN dropperid = 9300060 AND itemid = 2061000 THEN 67 WHEN dropperid = 9300060 AND itemid = 2061000 THEN 68
WHEN dropperid = 9300131 AND itemid = 2060000 THEN 63 WHEN dropperid = 9300131 AND itemid = 2060000 THEN 64
WHEN dropperid = 9300131 AND itemid = 2061000 THEN 63 WHEN dropperid = 9300131 AND itemid = 2061000 THEN 64
WHEN dropperid = 9300132 AND itemid = 2060000 THEN 48 WHEN dropperid = 9300132 AND itemid = 2060000 THEN 49
WHEN dropperid = 9300132 AND itemid = 2061000 THEN 48 WHEN dropperid = 9300132 AND itemid = 2061000 THEN 49
WHEN dropperid = 9300133 AND itemid = 2061000 THEN 48 WHEN dropperid = 9300133 AND itemid = 2061000 THEN 49
WHEN dropperid = 9300160 AND itemid = 2060000 THEN 102 WHEN dropperid = 9300160 AND itemid = 2060000 THEN 103
WHEN dropperid = 9300160 AND itemid = 2061000 THEN 102 WHEN dropperid = 9300160 AND itemid = 2061000 THEN 103
WHEN dropperid = 9300161 AND itemid = 2060000 THEN 102 WHEN dropperid = 9300161 AND itemid = 2060000 THEN 103
WHEN dropperid = 9300161 AND itemid = 2061000 THEN 102 WHEN dropperid = 9300161 AND itemid = 2061000 THEN 103
WHEN dropperid = 9300274 AND itemid = 2060000 THEN 12 WHEN dropperid = 9300274 AND itemid = 2060000 THEN 13
WHEN dropperid = 9300274 AND itemid = 2061000 THEN 12 WHEN dropperid = 9300274 AND itemid = 2061000 THEN 13
WHEN dropperid = 9300332 AND itemid = 2060000 THEN 65 WHEN dropperid = 9300332 AND itemid = 2060000 THEN 65
WHEN dropperid = 9300334 AND itemid = 2060000 THEN 80 WHEN dropperid = 9300334 AND itemid = 2060000 THEN 80
WHEN dropperid = 9300341 AND itemid = 2060000 THEN 8 WHEN dropperid = 9300341 AND itemid = 2060000 THEN 9
WHEN dropperid = 9300341 AND itemid = 2061000 THEN 8 WHEN dropperid = 9300341 AND itemid = 2061000 THEN 9
WHEN dropperid = 9300342 AND itemid = 2060000 THEN 12 WHEN dropperid = 9300342 AND itemid = 2060000 THEN 13
WHEN dropperid = 9300342 AND itemid = 2061000 THEN 12 WHEN dropperid = 9300342 AND itemid = 2061000 THEN 13
WHEN dropperid = 9300343 AND itemid = 2060000 THEN 11 WHEN dropperid = 9300343 AND itemid = 2060000 THEN 12
WHEN dropperid = 9300343 AND itemid = 2061000 THEN 11 WHEN dropperid = 9300343 AND itemid = 2061000 THEN 12
WHEN dropperid = 9303005 AND itemid = 2060001 THEN 21 WHEN dropperid = 9303005 AND itemid = 2060001 THEN 21
WHEN dropperid = 9303005 AND itemid = 2061001 THEN 21 WHEN dropperid = 9303005 AND itemid = 2061001 THEN 21
WHEN dropperid = 9303008 AND itemid = 2060001 THEN 21 WHEN dropperid = 9303008 AND itemid = 2060001 THEN 21
@@ -701,12 +701,12 @@ SET minimum_quantity = CASE
WHEN dropperid = 9400100 AND itemid = 2060003 THEN 18 WHEN dropperid = 9400100 AND itemid = 2060003 THEN 18
WHEN dropperid = 9400101 AND itemid = 2061003 THEN 19 WHEN dropperid = 9400101 AND itemid = 2061003 THEN 19
WHEN dropperid = 9400204 AND itemid = 2060003 THEN 22 WHEN dropperid = 9400204 AND itemid = 2060003 THEN 22
WHEN dropperid = 9400239 AND itemid = 2060000 THEN 38 WHEN dropperid = 9400239 AND itemid = 2060000 THEN 39
WHEN dropperid = 9400239 AND itemid = 2061000 THEN 38 WHEN dropperid = 9400239 AND itemid = 2061000 THEN 39
WHEN dropperid = 9400244 AND itemid = 2060000 THEN 96 WHEN dropperid = 9400244 AND itemid = 2060000 THEN 97
WHEN dropperid = 9400244 AND itemid = 2061000 THEN 96 WHEN dropperid = 9400244 AND itemid = 2061000 THEN 97
WHEN dropperid = 9400248 AND itemid = 2060000 THEN 38 WHEN dropperid = 9400248 AND itemid = 2060000 THEN 39
WHEN dropperid = 9400248 AND itemid = 2061000 THEN 38 WHEN dropperid = 9400248 AND itemid = 2061000 THEN 39
WHEN dropperid = 9400540 AND itemid = 2060004 THEN 8 WHEN dropperid = 9400540 AND itemid = 2060004 THEN 8
WHEN dropperid = 9400540 AND itemid = 2061004 THEN 8 WHEN dropperid = 9400540 AND itemid = 2061004 THEN 8
WHEN dropperid = 9400541 AND itemid = 2060004 THEN 8 WHEN dropperid = 9400541 AND itemid = 2060004 THEN 8
@@ -715,24 +715,24 @@ SET minimum_quantity = CASE
WHEN dropperid = 9400542 AND itemid = 2061004 THEN 11 WHEN dropperid = 9400542 AND itemid = 2061004 THEN 11
WHEN dropperid = 9400543 AND itemid = 2060004 THEN 13 WHEN dropperid = 9400543 AND itemid = 2060004 THEN 13
WHEN dropperid = 9400543 AND itemid = 2061004 THEN 13 WHEN dropperid = 9400543 AND itemid = 2061004 THEN 13
WHEN dropperid = 9400547 AND itemid = 2060000 THEN 43 WHEN dropperid = 9400547 AND itemid = 2060000 THEN 44
WHEN dropperid = 9400547 AND itemid = 2061000 THEN 43 WHEN dropperid = 9400547 AND itemid = 2061000 THEN 44
WHEN dropperid = 9400548 AND itemid = 2060000 THEN 48 WHEN dropperid = 9400548 AND itemid = 2060000 THEN 49
WHEN dropperid = 9400548 AND itemid = 2061000 THEN 48 WHEN dropperid = 9400548 AND itemid = 2061000 THEN 49
WHEN dropperid = 9400550 AND itemid = 2060000 THEN 43 WHEN dropperid = 9400550 AND itemid = 2060000 THEN 44
WHEN dropperid = 9400550 AND itemid = 2061000 THEN 43 WHEN dropperid = 9400550 AND itemid = 2061000 THEN 44
WHEN dropperid = 9400558 AND itemid = 2060000 THEN 48 WHEN dropperid = 9400558 AND itemid = 2060000 THEN 49
WHEN dropperid = 9400558 AND itemid = 2061000 THEN 48 WHEN dropperid = 9400558 AND itemid = 2061000 THEN 49
WHEN dropperid = 9400563 AND itemid = 2060000 THEN 65 WHEN dropperid = 9400563 AND itemid = 2060000 THEN 65
WHEN dropperid = 9400563 AND itemid = 2061000 THEN 65 WHEN dropperid = 9400563 AND itemid = 2061000 THEN 65
WHEN dropperid = 9400638 AND itemid = 2060000 THEN 32 WHEN dropperid = 9400638 AND itemid = 2060000 THEN 33
WHEN dropperid = 9400638 AND itemid = 2061000 THEN 32 WHEN dropperid = 9400638 AND itemid = 2061000 THEN 33
WHEN dropperid = 9420500 AND itemid = 2060000 THEN 45 WHEN dropperid = 9420500 AND itemid = 2060000 THEN 45
WHEN dropperid = 9420500 AND itemid = 2061000 THEN 45 WHEN dropperid = 9420500 AND itemid = 2061000 THEN 45
WHEN dropperid = 9420502 AND itemid = 2060000 THEN 28 WHEN dropperid = 9420502 AND itemid = 2060000 THEN 29
WHEN dropperid = 9420502 AND itemid = 2061000 THEN 28 WHEN dropperid = 9420502 AND itemid = 2061000 THEN 29
WHEN dropperid = 9420506 AND itemid = 2060000 THEN 37 WHEN dropperid = 9420506 AND itemid = 2060000 THEN 38
WHEN dropperid = 9420506 AND itemid = 2061000 THEN 37 WHEN dropperid = 9420506 AND itemid = 2061000 THEN 38
WHEN dropperid = 9420508 AND itemid = 2060000 THEN 70 WHEN dropperid = 9420508 AND itemid = 2060000 THEN 70
WHEN dropperid = 9420508 AND itemid = 2061000 THEN 70 WHEN dropperid = 9420508 AND itemid = 2061000 THEN 70
WHEN dropperid = 9420527 AND itemid = 2060001 THEN 36 WHEN dropperid = 9420527 AND itemid = 2060001 THEN 36
@@ -741,26 +741,26 @@ SET minimum_quantity = CASE
WHEN dropperid = 9420531 AND itemid = 2061001 THEN 48 WHEN dropperid = 9420531 AND itemid = 2061001 THEN 48
WHEN dropperid = 9500112 AND itemid = 2060001 THEN 28 WHEN dropperid = 9500112 AND itemid = 2060001 THEN 28
WHEN dropperid = 9500112 AND itemid = 2061001 THEN 28 WHEN dropperid = 9500112 AND itemid = 2061001 THEN 28
WHEN dropperid = 9500119 AND itemid = 2060000 THEN 63 WHEN dropperid = 9500119 AND itemid = 2060000 THEN 64
WHEN dropperid = 9500119 AND itemid = 2061000 THEN 63 WHEN dropperid = 9500119 AND itemid = 2061000 THEN 64
WHEN dropperid = 9500120 AND itemid = 2060000 THEN 72 WHEN dropperid = 9500120 AND itemid = 2060000 THEN 73
WHEN dropperid = 9500120 AND itemid = 2061000 THEN 72 WHEN dropperid = 9500120 AND itemid = 2061000 THEN 73
WHEN dropperid = 9500122 AND itemid = 2060000 THEN 80 WHEN dropperid = 9500122 AND itemid = 2060000 THEN 80
WHEN dropperid = 9500123 AND itemid = 2060000 THEN 96 WHEN dropperid = 9500123 AND itemid = 2060000 THEN 97
WHEN dropperid = 9500123 AND itemid = 2061000 THEN 96 WHEN dropperid = 9500123 AND itemid = 2061000 THEN 97
WHEN dropperid = 9500308 AND itemid = 2060000 THEN 113 WHEN dropperid = 9500308 AND itemid = 2060000 THEN 114
WHEN dropperid = 9500308 AND itemid = 2061000 THEN 113 WHEN dropperid = 9500308 AND itemid = 2061000 THEN 114
WHEN dropperid = 9500310 AND itemid = 2060000 THEN 133 WHEN dropperid = 9500310 AND itemid = 2060000 THEN 134
WHEN dropperid = 9500310 AND itemid = 2061000 THEN 133 WHEN dropperid = 9500310 AND itemid = 2061000 THEN 134
WHEN dropperid = 9500312 AND itemid = 2060001 THEN 79 WHEN dropperid = 9500312 AND itemid = 2060001 THEN 79
WHEN dropperid = 9500312 AND itemid = 2061001 THEN 79 WHEN dropperid = 9500312 AND itemid = 2061001 THEN 79
WHEN dropperid = 9500313 AND itemid = 2060001 THEN 80 WHEN dropperid = 9500313 AND itemid = 2060001 THEN 81
WHEN dropperid = 9500313 AND itemid = 2061001 THEN 80 WHEN dropperid = 9500313 AND itemid = 2061001 THEN 81
WHEN dropperid = 9500314 AND itemid = 2060001 THEN 87 WHEN dropperid = 9500314 AND itemid = 2060001 THEN 87
WHEN dropperid = 9500314 AND itemid = 2061001 THEN 87 WHEN dropperid = 9500314 AND itemid = 2061001 THEN 87
WHEN dropperid = 9500321 AND itemid = 2060001 THEN 8 WHEN dropperid = 9500321 AND itemid = 2060001 THEN 8
WHEN dropperid = 9500321 AND itemid = 2061001 THEN 8 WHEN dropperid = 9500321 AND itemid = 2061001 THEN 8
WHEN dropperid = 9500366 AND itemid = 2060000 THEN 23 WHEN dropperid = 9500366 AND itemid = 2060000 THEN 24
WHEN dropperid = 9500369 AND itemid = 2060000 THEN 23 WHEN dropperid = 9500369 AND itemid = 2060000 THEN 24
ELSE maximum_quantity END ELSE maximum_quantity END
; ;
@@ -3,4 +3,4 @@ do.depend=false
do.jar=true do.jar=true
javac.debug=true javac.debug=true
javadoc.preview=true javadoc.preview=true
user.properties.file=C:\\Users\\USER\\AppData\\Roaming\\NetBeans\\8.0.2\\build.properties user.properties.file=C:\\Users\\RonanLana\\AppData\\Roaming\\NetBeans\\8.0.2\\build.properties
@@ -2,6 +2,8 @@
<project-private xmlns="http://www.netbeans.org/ns/project-private/1"> <project-private xmlns="http://www.netbeans.org/ns/project-private/1">
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/> <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2"> <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group/> <group>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/tools/MapleArrowFetcher/src/maplearrowfetcher/MapleArrowFetcher.java</file>
</group>
</open-files> </open-files>
</project-private> </project-private>
@@ -70,7 +70,7 @@ public class MapleArrowFetcher {
minRange = (int)Math.ceil(((2.870503597 * level) - 1.870503597) * (boss ? 1.4 : 1.0) / correctionFactor); minRange = (int)Math.ceil(((2.870503597 * level) - 1.870503597) * (boss ? 1.4 : 1.0) / correctionFactor);
// MAX range // MAX range
maxRange = (int)(1.25 * minRange); maxRange = (int)Math.ceil(1.25 * minRange);
return new Pair<>(minRange, maxRange); return new Pair<>(minRange, maxRange);
} }
@@ -3,4 +3,4 @@ do.depend=false
do.jar=true do.jar=true
javac.debug=true javac.debug=true
javadoc.preview=true javadoc.preview=true
user.properties.file=C:\\Users\\USER\\AppData\\Roaming\\NetBeans\\8.0.2\\build.properties user.properties.file=C:\\Users\\RonanLana\\AppData\\Roaming\\NetBeans\\8.0.2\\build.properties
@@ -2,6 +2,8 @@
<project-private xmlns="http://www.netbeans.org/ns/project-private/1"> <project-private xmlns="http://www.netbeans.org/ns/project-private/1">
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/> <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2"> <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group/> <group>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/tools/MapleMesoFetcher/src/maplemesofetcher/MapleMesoFetcher.java</file>
</group>
</open-files> </open-files>
</project-private> </project-private>
+73
View File
@@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- You may freely edit this file. See commented blocks below for -->
<!-- some examples of how to customize the build. -->
<!-- (If you delete it and reopen the project it will be recreated.) -->
<!-- By default, only the Clean and Build commands use this build script. -->
<!-- Commands such as Run, Debug, and Test only use this build script if -->
<!-- the Compile on Save feature is turned off for the project. -->
<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
<!-- in the project's Project Properties dialog box.-->
<project name="MapleSkillMakerFetcher" default="default" basedir=".">
<description>Builds, tests, and runs the project MapleSkillMakerFetcher.</description>
<import file="nbproject/build-impl.xml"/>
<!--
There exist several targets which are by default empty and which can be
used for execution of your tasks. These targets are usually executed
before and after some main targets. They are:
-pre-init: called before initialization of project properties
-post-init: called after initialization of project properties
-pre-compile: called before javac compilation
-post-compile: called after javac compilation
-pre-compile-single: called before javac compilation of single file
-post-compile-single: called after javac compilation of single file
-pre-compile-test: called before javac compilation of JUnit tests
-post-compile-test: called after javac compilation of JUnit tests
-pre-compile-test-single: called before javac compilation of single JUnit test
-post-compile-test-single: called after javac compilation of single JUunit test
-pre-jar: called before JAR building
-post-jar: called after JAR building
-post-clean: called after cleaning build products
(Targets beginning with '-' are not intended to be called on their own.)
Example of inserting an obfuscator after compilation could look like this:
<target name="-post-compile">
<obfuscate>
<fileset dir="${build.classes.dir}"/>
</obfuscate>
</target>
For list of available properties check the imported
nbproject/build-impl.xml file.
Another way to customize the build is by overriding existing main targets.
The targets of interest are:
-init-macrodef-javac: defines macro for javac compilation
-init-macrodef-junit: defines macro for junit execution
-init-macrodef-debug: defines macro for class debugging
-init-macrodef-java: defines macro for class execution
-do-jar: JAR building
run: execution of project
-javadoc-build: Javadoc generation
test-report: JUnit report generation
An example of overriding the target for project execution could look like this:
<target name="run" depends="MapleSkillMakerFetcher-impl.jar">
<exec dir="bin" executable="launcher.exe">
<arg file="${dist.jar}"/>
</exec>
</target>
Notice that the overridden target depends on the jar target and not only on
the compile target as the regular run target does. Again, for a list of available
properties which you can use, check the target you are overriding in the
nbproject/build-impl.xml file.
-->
</project>