Compare commits
1328
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
129bd4aaa6 | ||
|
|
eb93481fda | ||
|
|
a160fe1b00 | ||
|
|
c2f70c0f26 | ||
|
|
98c0712dea | ||
|
|
7c4f7f391b | ||
|
|
e01dc9b09c | ||
|
|
178bb3718a | ||
|
|
f088d2aa72 | ||
|
|
0645a93b9c | ||
|
|
8b38f1a695 | ||
|
|
652476fde8 | ||
|
|
74a7a255be | ||
|
|
abd112035a | ||
|
|
f5f92a1d88 | ||
|
|
75d520831f | ||
|
|
92402097d4 | ||
|
|
5e92bab977 | ||
|
|
a5df674fbe | ||
|
|
4462f74f8c | ||
|
|
781053ab22 | ||
|
|
053c105c26 | ||
|
|
46bf67672a | ||
|
|
d539e419fe | ||
|
|
ec5a8f5281 | ||
|
|
97558b51c8 | ||
|
|
4a3a8d4b65 | ||
|
|
85a66339e2 | ||
|
|
b785d35231 | ||
|
|
21b1dba84d | ||
|
|
fc71b8cb61 | ||
|
|
31129493e5 | ||
|
|
8b4eafebf3 | ||
|
|
cf38362d84 | ||
|
|
30800478f2 | ||
|
|
9bbe9b399e | ||
|
|
16d17798be | ||
|
|
679c7afe0e | ||
|
|
f10141eddb | ||
|
|
10805a7d37 | ||
|
|
b979fbb1bc | ||
|
|
b86ca33087 | ||
|
|
993abfbf6f | ||
|
|
ffd41101c3 | ||
|
|
39e06994d9 | ||
|
|
ec405226c5 | ||
|
|
627a35e364 | ||
|
|
6254472bb8 | ||
|
|
0bbedd5983 | ||
|
|
58fb2a9b90 | ||
|
|
f7c76937fb | ||
|
|
52865d7cfd | ||
|
|
8424aa557f | ||
|
|
0ab7bafe5e | ||
|
|
43b212ed42 | ||
|
|
0b4873a522 | ||
|
|
d3d1227d6c | ||
|
|
181e7661c1 | ||
|
|
c1ee6f5b52 | ||
|
|
dd84615ca1 | ||
|
|
aad0418260 | ||
|
|
46f3850e93 | ||
|
|
ab34931c3d | ||
|
|
52116063e5 | ||
|
|
04243cc21e | ||
|
|
1ab041ce0f | ||
|
|
1dac740fca | ||
|
|
1e3e173dfe | ||
|
|
27971c5fb3 | ||
|
|
52fab5d92b | ||
|
|
5054006ffc | ||
|
|
f4e24e032b | ||
|
|
2248361503 | ||
|
|
5c20fca28a | ||
|
|
9bbb949868 | ||
|
|
3e6bfacd86 | ||
|
|
1043c84b9d | ||
|
|
febada8d63 | ||
|
|
8b6fef4cbc | ||
|
|
1ce9029edf | ||
|
|
587ac802de | ||
|
|
58455843f9 | ||
|
|
a09ac1f2a2 | ||
|
|
8c454c5d7c | ||
|
|
83dd47d22a | ||
|
|
c2910bb87c | ||
|
|
7e6c051a02 | ||
|
|
35b368d7fe | ||
|
|
d39790ab4c | ||
|
|
09d28b964a | ||
|
|
139490e943 | ||
|
|
8830388728 | ||
|
|
68b9f9e887 | ||
|
|
5ef45a2212 | ||
|
|
772e7f7f29 | ||
|
|
8afa00f885 | ||
|
|
fcf76011f4 | ||
|
|
3e2f420c30 | ||
|
|
26fd6f8de2 | ||
|
|
0966b82d5f | ||
|
|
d526d69bca | ||
|
|
242984ffaf | ||
|
|
4746a8c9cf | ||
|
|
1603c8d8e9 | ||
|
|
ddba4f290d | ||
|
|
d621877e8c | ||
|
|
713a52f705 | ||
|
|
c68d5e0730 | ||
|
|
49c62fae60 | ||
|
|
3bd4e75422 | ||
|
|
791e5cb9b8 | ||
|
|
2fb8f53751 | ||
|
|
dc366068a9 | ||
|
|
3ec76ab816 | ||
|
|
d8750f5e2c | ||
|
|
f272be8b4d | ||
|
|
f8f86d8e46 | ||
|
|
ee030a690a | ||
|
|
3df1da364c | ||
|
|
389373be30 | ||
|
|
cc02be95f3 | ||
|
|
5a1027c611 | ||
|
|
64e780744d | ||
|
|
0abffeeb7f | ||
|
|
75f11deee1 | ||
|
|
db91b606f6 | ||
|
|
82373f8cc8 | ||
|
|
946714d3ae | ||
|
|
8414b0f4cf | ||
|
|
faa262db99 | ||
|
|
6955f69156 | ||
|
|
2ae39d2a29 | ||
|
|
8e44adf16e | ||
|
|
fd73dbc349 | ||
|
|
f58aa61859 | ||
|
|
ae7fecbf6d | ||
|
|
5ed497dd69 | ||
|
|
14ee83e147 | ||
|
|
a29269e335 | ||
|
|
adfbf87056 | ||
|
|
d80231eef0 | ||
|
|
3395efee49 | ||
|
|
7acaccc77d | ||
|
|
5aa01d94fd | ||
|
|
7b405bbbf3 | ||
|
|
504e26114e | ||
|
|
4e5e49606c | ||
|
|
f62f11a66c | ||
|
|
7911a17f0c | ||
|
|
5c8c4fc817 | ||
|
|
854d0a8a68 | ||
|
|
61fca2c742 | ||
|
|
b752006d6f | ||
|
|
f9c0a9c3b5 | ||
|
|
71300f189d | ||
|
|
d3fe643223 | ||
|
|
0cf4b5416d | ||
|
|
a98de7b6fc | ||
|
|
efa7e6a03a | ||
|
|
407fe9d583 | ||
|
|
36d8a6bdbd | ||
|
|
cdd746e0df | ||
|
|
4e1621db99 | ||
|
|
e5622a47c0 | ||
|
|
46170e3ab7 | ||
|
|
01533b1056 | ||
|
|
87e24c16d9 | ||
|
|
572bff8d6b | ||
|
|
52d37296a7 | ||
|
|
f682f9a5ae | ||
|
|
2f3b9e0fb2 | ||
|
|
cfc36c0c27 | ||
|
|
0e431aa726 | ||
|
|
25ab3747eb | ||
|
|
7526cc808c | ||
|
|
019c254ac1 | ||
|
|
8cd613c597 | ||
|
|
5f16289052 | ||
|
|
2768980f6e | ||
|
|
3a2b138deb | ||
|
|
3f1385dd33 | ||
|
|
a70585448f | ||
|
|
d4e38c113b | ||
|
|
d7b18dc457 | ||
|
|
7b909e1044 | ||
|
|
4fd1a1a146 | ||
|
|
9934e60fa4 | ||
|
|
b74105137e | ||
|
|
301014f06f | ||
|
|
a37825168b | ||
|
|
093bc5e97e | ||
|
|
f0ac342b1f | ||
|
|
8997701d8a | ||
|
|
ce403a6bd8 | ||
|
|
bf712accf9 | ||
|
|
1825035739 | ||
|
|
5a5fd8155c | ||
|
|
56bc38ab73 | ||
|
|
01fd6997a8 | ||
|
|
41f77364aa | ||
|
|
1acb74ade1 | ||
|
|
35ba4bbeec | ||
|
|
a162377685 | ||
|
|
5a1806d11b | ||
|
|
80c11db80b | ||
|
|
fbec206389 | ||
|
|
7b9d9d64bb | ||
|
|
e86097d732 | ||
|
|
a103e7c7cd | ||
|
|
f653376c22 | ||
|
|
4bc19235a6 | ||
|
|
06e41d5b94 | ||
|
|
8083f39ba1 | ||
|
|
162a049f30 | ||
|
|
0486fa52e4 | ||
|
|
0e9390ef53 | ||
|
|
f47a9772d7 | ||
|
|
08060cf06f | ||
|
|
25fed51523 | ||
|
|
8c39ede852 | ||
|
|
692c6a268c | ||
|
|
415ec5f5d4 | ||
|
|
0c1431e60d | ||
|
|
df07c80b1b | ||
|
|
94253f547d | ||
|
|
2640927b85 | ||
|
|
fc06ea97bd | ||
|
|
561b80b1aa | ||
|
|
230679cef9 | ||
|
|
8e43f17da0 | ||
|
|
a109e9864f | ||
|
|
5d367a737c | ||
|
|
2b7cc2bdd7 | ||
|
|
60c80ceee8 | ||
|
|
1cf9831e20 | ||
|
|
08f0fc1743 | ||
|
|
2aa9f9c134 | ||
|
|
3ee0ec1342 | ||
|
|
85a179ad47 | ||
|
|
03e6c591ff | ||
|
|
03c226f76e | ||
|
|
59bf787581 | ||
|
|
61bb7be6b1 | ||
|
|
84c29a1222 | ||
|
|
02d8bf4f5c | ||
|
|
eba8beb8f5 | ||
|
|
3dcffa3042 | ||
|
|
04991c94ba | ||
|
|
ee8e4f8a2e | ||
|
|
594509e0ad | ||
|
|
d57eb295e9 | ||
|
|
b8a1081544 | ||
|
|
045b101d7b | ||
|
|
76ae0f4b59 | ||
|
|
2cfbd77e2f | ||
|
|
768e209b2b | ||
|
|
eb621f184d | ||
|
|
ebf7130b63 | ||
|
|
a65ecfeb65 | ||
|
|
1b384a6d11 | ||
|
|
cde9901bb6 | ||
|
|
7f452d18bc | ||
|
|
ce7b9ff96f | ||
|
|
3ff9115052 | ||
|
|
6c78e7d9fa | ||
|
|
6514fd8dc3 | ||
|
|
a741bb3482 | ||
|
|
def5ceee46 | ||
|
|
aff2a8fa0e | ||
|
|
27d869276a | ||
|
|
7e3a8a7a40 | ||
|
|
c33cd9773f | ||
|
|
2d246a6773 | ||
|
|
fa5980bc6a | ||
|
|
17f18b83f4 | ||
|
|
507ec302e7 | ||
|
|
5cfbd9998c | ||
|
|
68ae9c1b97 | ||
|
|
5397833dea | ||
|
|
4598709ba1 | ||
|
|
ac92d69914 | ||
|
|
a1f233723f | ||
|
|
063f3081b5 | ||
|
|
72ce1e0694 | ||
|
|
0004215605 | ||
|
|
c0a50544d7 | ||
|
|
a130240339 | ||
|
|
54cd1c59f7 | ||
|
|
a7ed30130d | ||
|
|
4e2add4d64 | ||
|
|
6a62f93cba | ||
|
|
f523e4832e | ||
|
|
28b0fd6fd4 | ||
|
|
0f703785f3 | ||
|
|
ded3e16d48 | ||
|
|
678f5463ea | ||
|
|
575d21a786 | ||
|
|
4fa5ccf416 | ||
|
|
eba905b15d | ||
|
|
14ccb1f80b | ||
|
|
9d140be510 | ||
|
|
eb78716401 | ||
|
|
3074b77471 | ||
|
|
53b7aca0ce | ||
|
|
083349b75b | ||
|
|
ae3423b99b | ||
|
|
5439df5653 | ||
|
|
e7e32ca4ef | ||
|
|
e971674465 | ||
|
|
943d274e5f | ||
|
|
d0bb761344 | ||
|
|
a8ba5ae62b | ||
|
|
97c0b0bbee | ||
|
|
67e0766894 | ||
|
|
3fc5fa71a4 | ||
|
|
4fc7c90c15 | ||
|
|
e50c519eec | ||
|
|
57016da1d0 | ||
|
|
8d1c6cc082 | ||
|
|
2fb889272b | ||
|
|
4194aa09d1 | ||
|
|
0004bb63b0 | ||
|
|
d7eef4c623 | ||
|
|
0fa042cece | ||
|
|
6a0599a972 | ||
|
|
cef2a7c188 | ||
|
|
ab2659d01f | ||
|
|
601ed40eb2 | ||
|
|
2bb414fc33 | ||
|
|
ecc14fc3af | ||
|
|
ea38c3bef7 | ||
|
|
bf990a886c | ||
|
|
22d08b51b7 | ||
|
|
551361e10a | ||
|
|
99b9444ba8 | ||
|
|
c390ebe0c6 | ||
|
|
513118d42c | ||
|
|
b0c43a5258 | ||
|
|
eca71fa685 | ||
|
|
f01fb6f848 | ||
|
|
0f18258d1b | ||
|
|
abc4a227a9 | ||
|
|
1c368003ae | ||
|
|
ee34f9e8ec | ||
|
|
d511eda713 | ||
|
|
4b20b0efe3 | ||
|
|
5c731894b1 | ||
|
|
6ff26f6a25 | ||
|
|
b041326e23 | ||
|
|
c8d355636b | ||
|
|
fa0dfadc8b | ||
|
|
8f7208ff34 | ||
|
|
61c4cb1361 | ||
|
|
0590ae64e7 | ||
|
|
7fa8c3bfff | ||
|
|
82c4e3169e | ||
|
|
84f9d54ec0 | ||
|
|
3e71cf4b45 | ||
|
|
68b9651f94 | ||
|
|
50171e4600 | ||
|
|
9d7f2f39fe | ||
|
|
a30c041a17 | ||
|
|
756e20633f | ||
|
|
12c1cde069 | ||
|
|
2e0ffe67fa | ||
|
|
0c0f0aa54d | ||
|
|
538e452377 | ||
|
|
264ce39552 | ||
|
|
b8bd71616b | ||
|
|
b2f3e7a635 | ||
|
|
e38324af63 | ||
|
|
5db5a26037 | ||
|
|
9b22287ede | ||
|
|
98c5b0e9ec | ||
|
|
0b74537bee | ||
|
|
5f930b0482 | ||
|
|
aa0afa533d | ||
|
|
e06657e53f | ||
|
|
a960e5ab04 | ||
|
|
4a9a496a5d | ||
|
|
f3bfdd8a36 | ||
|
|
b76a384e1f | ||
|
|
3c70a09e12 | ||
|
|
ee9b64285e | ||
|
|
7848233396 | ||
|
|
2e05ba243f | ||
|
|
b789c773b4 | ||
|
|
023fd547fd | ||
|
|
288c941d69 | ||
|
|
6b2569873c | ||
|
|
836c076884 | ||
|
|
e4b0823911 | ||
|
|
3fdafe176b | ||
|
|
c54b0470fa | ||
|
|
ac2403362e | ||
|
|
13bf6e6f5a | ||
|
|
131592090f | ||
|
|
412fec17a6 | ||
|
|
995949c1ba | ||
|
|
fce3fa8004 | ||
|
|
bb0803bf19 | ||
|
|
c091026114 | ||
|
|
c90461afe0 | ||
|
|
d9032f750f | ||
|
|
55058b4ce1 | ||
|
|
5ff19e58a5 | ||
|
|
e831f447ae | ||
|
|
dd8699ad32 | ||
|
|
109ddde0a8 | ||
|
|
f78baf229d | ||
|
|
22f498a6f8 | ||
|
|
ebaf68bca4 | ||
|
|
8b98a3f2a1 | ||
|
|
d9549c227a | ||
|
|
c5c4c62208 | ||
|
|
2ceaece7d9 | ||
|
|
b9b04c2b9f | ||
|
|
789e177d67 | ||
|
|
3168f12af1 | ||
|
|
e93f84d1c7 | ||
|
|
e323c80fba | ||
|
|
57122e5b74 | ||
|
|
a1dbb42b4d | ||
|
|
a489aecb86 | ||
|
|
6ed4faded2 | ||
|
|
f676b14351 | ||
|
|
97fa583f65 | ||
|
|
92f53b00b8 | ||
|
|
f2d28fd7af | ||
|
|
4646d03bdd | ||
|
|
b6eb587a82 | ||
|
|
9dd2a79be8 | ||
|
|
2e37bd2472 | ||
|
|
f9797a38b8 | ||
|
|
20a42ab3e5 | ||
|
|
a7062eff3a | ||
|
|
6806ae3dc0 | ||
|
|
b665d46dc3 | ||
|
|
0b68ae3960 | ||
|
|
ef38e93c11 | ||
|
|
4f7c34aec9 | ||
|
|
7595f7dfb5 | ||
|
|
96b4e1c639 | ||
|
|
efab8eefba | ||
|
|
b0f8c758e5 | ||
|
|
6ee194924c | ||
|
|
784767dc4e | ||
|
|
15d2f2b9d8 | ||
|
|
56b89b7080 | ||
|
|
32d9322189 | ||
|
|
ca8c4338b2 | ||
|
|
6a4a550f63 | ||
|
|
24d5fb2259 | ||
|
|
f3d4a2becc | ||
|
|
e1018a48f0 | ||
|
|
50d75eecc6 | ||
|
|
406c864b17 | ||
|
|
f616937236 | ||
|
|
e47bd6fba0 | ||
|
|
7f830a18cd | ||
|
|
7bf5279ad3 | ||
|
|
df5c607375 | ||
|
|
87290baa52 | ||
|
|
8bf47fb4fe | ||
|
|
b20de1657c | ||
|
|
a5af5d9ec8 | ||
|
|
b3bffed179 | ||
|
|
f349e0dda8 | ||
|
|
76d723669a | ||
|
|
5537934f88 | ||
|
|
e2aa7b54a4 | ||
|
|
6f028ab8c8 | ||
|
|
658b442b36 | ||
|
|
f6fbc6fecb | ||
|
|
c6f451bce1 | ||
|
|
3500bf0ede | ||
|
|
04d9b76938 | ||
|
|
68088a3399 | ||
|
|
20cb8ef94d | ||
|
|
caf708bed6 | ||
|
|
75691aaab9 | ||
|
|
83e8a8a218 | ||
|
|
a9dc7b1c5b | ||
|
|
d8d017669a | ||
|
|
7d1d8891ff | ||
|
|
ffdf374cd6 | ||
|
|
54b7fc2212 | ||
|
|
5476d238fa | ||
|
|
8e85136dc5 | ||
|
|
82daff3b6e | ||
|
|
642270aacf | ||
|
|
3048f86f5b | ||
|
|
84e74c5052 | ||
|
|
4dc0f52295 | ||
|
|
58652ee32f | ||
|
|
1a4d888304 | ||
|
|
f11fcc535a | ||
|
|
70f331d025 | ||
|
|
8a1cd316fe | ||
|
|
d7dfab5e74 | ||
|
|
436d0cec9b | ||
|
|
266e4214d4 | ||
|
|
08aa431f5d | ||
|
|
b98e7cda15 | ||
|
|
d05dbef71d | ||
|
|
5736f0a7a3 | ||
|
|
ec90ef6174 | ||
|
|
fa440e2885 | ||
|
|
9ea44d7e1c | ||
|
|
22326802b3 | ||
|
|
531662e012 | ||
|
|
8eaaabb4d4 | ||
|
|
37af60781d | ||
|
|
29c68110cf | ||
|
|
1306ea3c5c | ||
|
|
527acb8e52 | ||
|
|
744b508fea | ||
|
|
ea97eb56a6 | ||
|
|
8d91f200e7 | ||
|
|
d9775dbf4e | ||
|
|
507769c6b6 | ||
|
|
aae9e38f36 | ||
|
|
2cd3d028a9 | ||
|
|
c5bb051e64 | ||
|
|
6a33651782 | ||
|
|
1d2e4bbda7 | ||
|
|
f1a8f6024d | ||
|
|
0829a60f35 | ||
|
|
f39434a248 | ||
|
|
808a60c86c | ||
|
|
22da19085d | ||
|
|
5304919e2a | ||
|
|
093fe0f261 | ||
|
|
ab32ad1538 | ||
|
|
0a39102b08 | ||
|
|
91247c58a6 | ||
|
|
bcf4aef5a0 | ||
|
|
ffd248cfd4 | ||
|
|
2d3b74e688 | ||
|
|
db94673256 | ||
|
|
4d118cf634 | ||
|
|
e464f30445 | ||
|
|
67e4011c65 | ||
|
|
839be1f28f | ||
|
|
8ae4a67635 | ||
|
|
e228ff8715 | ||
|
|
c4a4a8659a | ||
|
|
b26134ec72 | ||
|
|
8656d6bfb9 | ||
|
|
2ffd354f38 | ||
|
|
441b2fe42a | ||
|
|
2885457ea6 | ||
|
|
1763266972 | ||
|
|
2e5fa69942 | ||
|
|
e1e9bc026a | ||
|
|
74d5ab7fea | ||
|
|
e8e84e00af | ||
|
|
a7b3fba018 | ||
|
|
5cdf1d5599 | ||
|
|
e6dd2b22d8 | ||
|
|
df6c3addcf | ||
|
|
e9d5c3db0e | ||
|
|
36f12f9c97 | ||
|
|
55213c409b | ||
|
|
d9474afa34 | ||
|
|
9c8b690739 | ||
|
|
d20a2129aa | ||
|
|
704375099b | ||
|
|
bf9ac7accb | ||
|
|
b2cf15139a | ||
|
|
4352e95f82 | ||
|
|
fb7a98761f | ||
|
|
5d0f79892c | ||
|
|
d3f9b53810 | ||
|
|
7632dc783a | ||
|
|
61f28a588b | ||
|
|
e448c9a0d3 | ||
|
|
155bbfbf4e | ||
|
|
cf0b9a0ae0 | ||
|
|
2b65e23b48 | ||
|
|
d363a9fc1b | ||
|
|
a99b0072e0 | ||
|
|
f940d05d12 | ||
|
|
8d80e0a46e | ||
|
|
37fec69462 | ||
|
|
09a196149e | ||
|
|
bb8e8780bd | ||
|
|
bade2162a6 | ||
|
|
4e2578f3e0 | ||
|
|
62e13ade01 | ||
|
|
acea3875a1 | ||
|
|
354f10ddee | ||
|
|
5e6d298ca0 | ||
|
|
9019b0ad29 | ||
|
|
b2112f2b01 | ||
|
|
9e652761b8 | ||
|
|
fe54085cc6 | ||
|
|
ef05e5c524 | ||
|
|
d11c6988cc | ||
|
|
39de8439ba | ||
|
|
15635534b0 | ||
|
|
5b547611a5 | ||
|
|
11e6b793d5 | ||
|
|
b9507381ed | ||
|
|
3bd50a1ad1 | ||
|
|
e6452955b6 | ||
|
|
14397d1550 | ||
|
|
8267cbd8f0 | ||
|
|
1ff2dc6733 | ||
|
|
04d88d0523 | ||
|
|
5e8b4e0e61 | ||
|
|
151230c611 | ||
|
|
52750e6d6b | ||
|
|
8ff112b802 | ||
|
|
88516d2857 | ||
|
|
9bf7c088cf | ||
|
|
b0542a5bc3 | ||
|
|
ac06e7723f | ||
|
|
12608d8d32 | ||
|
|
8018f1323d | ||
|
|
90874b01a7 | ||
|
|
6685fc9b02 | ||
|
|
ad52546e0c | ||
|
|
2518b1421c | ||
|
|
551418c293 | ||
|
|
524ebbbdd7 | ||
|
|
40d0e765fe | ||
|
|
53b2f476e2 | ||
|
|
d6a952f182 | ||
|
|
4eff5ad84e | ||
|
|
0d93850813 | ||
|
|
129eb1b818 | ||
|
|
0d8b8504b4 | ||
|
|
a8cd6f4f74 | ||
|
|
d1f8e0a97e | ||
|
|
c0a7ddc711 | ||
|
|
c80b9013d2 | ||
|
|
c1de1f148b | ||
|
|
f36e2f19b8 | ||
|
|
d46b2dc298 | ||
|
|
6c1e2f1280 | ||
|
|
f952785c8e | ||
|
|
8a769c60f2 | ||
|
|
7fcbfba7e0 | ||
|
|
9be32a3ebf | ||
|
|
cc8f817006 | ||
|
|
8f88da6016 | ||
|
|
4f441340ea | ||
|
|
6259cd7803 | ||
|
|
608324c500 | ||
|
|
42362dca90 | ||
|
|
20bebafc89 | ||
|
|
bd2547046a | ||
|
|
3666331de8 | ||
|
|
dc6bce6f53 | ||
|
|
5e1ebeb4df | ||
|
|
e1e722f09f | ||
|
|
4988f92d03 | ||
|
|
e95005199c | ||
|
|
e05d0d8daa | ||
|
|
141a65d48e | ||
|
|
d2cbfd491a | ||
|
|
5f71ff2db5 | ||
|
|
2ea38519e4 | ||
|
|
4fac0c3921 | ||
|
|
6a021f938d | ||
|
|
544e715905 | ||
|
|
b3b6a9a913 | ||
|
|
d487a9d1ab | ||
|
|
28bf0413cc | ||
|
|
0e44293231 | ||
|
|
45a0747176 | ||
|
|
7e29ecde9b | ||
|
|
8000d523f1 | ||
|
|
ca09587d87 | ||
|
|
726d68df31 | ||
|
|
250e3407fa | ||
|
|
fcd37cbae2 | ||
|
|
70e76d9a1a | ||
|
|
6a3bd89095 | ||
|
|
4ccf03dfd3 | ||
|
|
f845c0ad80 | ||
|
|
165752f6d6 | ||
|
|
c0ee8b82f8 | ||
|
|
cc1e0d8986 | ||
|
|
7f6fbd2bff | ||
|
|
92d8ed9e3f | ||
|
|
45b2443982 | ||
|
|
3775fb336b | ||
|
|
f7a8ca33fc | ||
|
|
c45265b085 | ||
|
|
79400b6b0e | ||
|
|
2bff826a10 | ||
|
|
d5fc87c233 | ||
|
|
78a0416b19 | ||
|
|
eb5bc14974 | ||
|
|
7e99e8c7a4 | ||
|
|
9b0f4d5aef | ||
|
|
b58049968f | ||
|
|
9bf0d3f7d1 | ||
|
|
8300c47e4a | ||
|
|
c73fcc19f2 | ||
|
|
f93573177a | ||
|
|
fe9c6437d8 | ||
|
|
c110ffc4b1 | ||
|
|
7af63d1519 | ||
|
|
31ba1f2c4c | ||
|
|
33afd13a8c | ||
|
|
b341ffacbf | ||
|
|
0d1d1f0f37 | ||
|
|
3f59ed48d2 | ||
|
|
de832ff497 | ||
|
|
1aef82f422 | ||
|
|
065a1c9ceb | ||
|
|
ff219ce696 | ||
|
|
8bd406bcf4 | ||
|
|
7b70b680f0 | ||
|
|
c3586a70fd | ||
|
|
cc7d741681 | ||
|
|
ce0dfdabfb | ||
|
|
737327fa8a | ||
|
|
b1e79284e4 | ||
|
|
29b5955e9e | ||
|
|
3986dc0686 | ||
|
|
59190e33c9 | ||
|
|
091b1a1d5b | ||
|
|
cb0ba901de | ||
|
|
14ba9d0f7f | ||
|
|
ec9bc437f3 | ||
|
|
930aa73657 | ||
|
|
cf2bf2dacf | ||
|
|
5a8508c16c | ||
|
|
5bcc0ed84d | ||
|
|
4795a315ad | ||
|
|
6559f232a3 | ||
|
|
db8b33a621 | ||
|
|
781a4ee16d | ||
|
|
7ce94a5166 | ||
|
|
a487a7bd2f | ||
|
|
f0fedcc049 | ||
|
|
3a63f98ac3 | ||
|
|
4c994e6e55 | ||
|
|
1c93846ed3 | ||
|
|
3ef444c128 | ||
|
|
eaaba8ab0c | ||
|
|
1daa45d604 | ||
|
|
cf7e19bfde | ||
|
|
6a76cc7a29 | ||
|
|
fff16d2211 | ||
|
|
a2df7cda22 | ||
|
|
5858fa4de4 | ||
|
|
fb6ec0caf4 | ||
|
|
944bcb7e84 | ||
|
|
4274e6a148 | ||
|
|
5e629e7890 | ||
|
|
e991a01b50 | ||
|
|
7a1700cec3 | ||
|
|
79eb5b9cdf | ||
|
|
7886aa6041 | ||
|
|
b928bedeb6 | ||
|
|
beb2b47162 | ||
|
|
2cc37481ca | ||
|
|
5ac62d60be | ||
|
|
6fb1e2e5f1 | ||
|
|
385695a610 | ||
|
|
838776c471 | ||
|
|
44743b772b | ||
|
|
88f67efd51 | ||
|
|
a04bdc147f | ||
|
|
145d9bafa0 | ||
|
|
d2c00cce70 | ||
|
|
602f8bc843 | ||
|
|
89cb808481 | ||
|
|
4d290c9064 | ||
|
|
9ee60c9361 | ||
|
|
77cc91319a | ||
|
|
ee4009bf8d | ||
|
|
ff1c0bd347 | ||
|
|
e1add3c7e6 | ||
|
|
bf06734a9b | ||
|
|
5ed21f9b76 | ||
|
|
e689cb541a | ||
|
|
da32765902 | ||
|
|
9392ceda61 | ||
|
|
694b10d3b2 | ||
|
|
6b3c64faea | ||
|
|
ab17dd08cd | ||
|
|
f889bcf927 | ||
|
|
34024c9fb4 | ||
|
|
9d5e16aa5c | ||
|
|
f1a2bea67c | ||
|
|
5d4192bbcf | ||
|
|
ea6ea4b0ee | ||
|
|
7f4d47505e | ||
|
|
f9a3b17677 | ||
|
|
d0374a2dea | ||
|
|
cb89cc17be | ||
|
|
d506807a8f | ||
|
|
1a0fc309f9 | ||
|
|
5ed7662798 | ||
|
|
e3d6a32554 | ||
|
|
6f990d488f | ||
|
|
610de198e9 | ||
|
|
928be0facb | ||
|
|
80799753be | ||
|
|
f9d2232a9b | ||
|
|
cbd8685d4b | ||
|
|
274cf08dad | ||
|
|
2cbe5f38cd | ||
|
|
3d4058ad01 | ||
|
|
761ec6f4af | ||
|
|
5900068898 | ||
|
|
13f5e3eff2 | ||
|
|
db9e950558 | ||
|
|
3f93bf08fb | ||
|
|
65eebcbb5d | ||
|
|
6ed3495780 | ||
|
|
06049a7135 | ||
|
|
12e073ca46 | ||
|
|
4ee4054ab3 | ||
|
|
11664a9218 | ||
|
|
d414c19904 | ||
|
|
279a0aed91 | ||
|
|
c6e0e36531 | ||
|
|
10b9f19036 | ||
|
|
ad661ea464 | ||
|
|
affe6b08ab | ||
|
|
1b2c218e83 | ||
|
|
9e96add299 | ||
|
|
9f9c3ba7f1 | ||
|
|
d15b8a5246 | ||
|
|
c1e1c730bb | ||
|
|
a53c68054d | ||
|
|
99a79df02d | ||
|
|
1a0f318968 | ||
|
|
6ac65c73d5 | ||
|
|
dc5a778610 | ||
|
|
20d9a232cc | ||
|
|
280bd61e2a | ||
|
|
dadfc15d39 | ||
|
|
1764041272 | ||
|
|
b9ef4eee63 | ||
|
|
823061c699 | ||
|
|
6809988e9c | ||
|
|
a1a3ea6234 | ||
|
|
3684296959 | ||
|
|
68c8d91871 | ||
|
|
7655b67338 | ||
|
|
68aef50283 | ||
|
|
6494e07e9e | ||
|
|
859de1004e | ||
|
|
0afc8a2dc5 | ||
|
|
f73184ac1e | ||
|
|
52b66be43b | ||
|
|
bd208bd1ab | ||
|
|
f7952008cd | ||
|
|
a0c82d3f3f | ||
|
|
dd01fd1688 | ||
|
|
d2dc95c169 | ||
|
|
53f7165e24 | ||
|
|
c90a250ba7 | ||
|
|
e80dd66809 | ||
|
|
95558371df | ||
|
|
085f79cefd | ||
|
|
a17b9fdd13 | ||
|
|
73b6854266 | ||
|
|
fe8d512596 | ||
|
|
ef8754c018 | ||
|
|
483ccbff00 | ||
|
|
07f736b8e6 | ||
|
|
cd1de763e3 | ||
|
|
d6d4008348 | ||
|
|
4bbbbf9fa2 | ||
|
|
a3d29bb8f0 | ||
|
|
0d58aee2fe | ||
|
|
bc5d0cc4a9 | ||
|
|
59c3bea2d6 | ||
|
|
13163ddb7e | ||
|
|
02a9256950 | ||
|
|
d31d6c1f95 | ||
|
|
bc099e9dc0 | ||
|
|
79bf0523a5 | ||
|
|
a0d2ccb5ab | ||
|
|
df54840a88 | ||
|
|
4b62517d99 | ||
|
|
0ce9ec3ae2 | ||
|
|
5279fa8fbe | ||
|
|
0d75e6db9b | ||
|
|
ffb541a12e | ||
|
|
5fdaa11367 | ||
|
|
6b339da061 | ||
|
|
f454fb5e1c | ||
|
|
5db8c47aa8 | ||
|
|
e7571f3e83 | ||
|
|
d9b513e88c | ||
|
|
7dcde390cd | ||
|
|
6a750f4eb2 | ||
|
|
c6d24d25cc | ||
|
|
c19ec913cb | ||
|
|
438ea04a1a | ||
|
|
d7044c1663 | ||
|
|
3497d275a8 | ||
|
|
6fd61889a8 | ||
|
|
85983954de | ||
|
|
1e9eec2c48 | ||
|
|
bd97745ed1 | ||
|
|
34d450fecf | ||
|
|
be107c0858 | ||
|
|
8289786099 | ||
|
|
56f159d50a | ||
|
|
61961bab05 | ||
|
|
e0387dce00 | ||
|
|
46b3db033b | ||
|
|
bf9fdae58b | ||
|
|
7b8cafc8ac | ||
|
|
7793fab5d2 | ||
|
|
1ddcda5c5d | ||
|
|
9714393538 | ||
|
|
d46f369599 | ||
|
|
2dfd2a53c2 | ||
|
|
e3675ec9a4 | ||
|
|
cb2ed0c766 | ||
|
|
6638fdcaff | ||
|
|
d0b4634429 | ||
|
|
1fdf1f1339 | ||
|
|
6290c6d0af | ||
|
|
26a3ea4b18 | ||
|
|
c7b2245005 | ||
|
|
5ba06796b1 | ||
|
|
e359b1dfdf | ||
|
|
cbc8216fe0 | ||
|
|
da238b9986 | ||
|
|
897ddfe77a | ||
|
|
80f2db794f | ||
|
|
913a2601d5 | ||
|
|
40c27eef79 | ||
|
|
df45e00fbd | ||
|
|
a323f1ffb7 | ||
|
|
ea6092db8a | ||
|
|
8c6eb48876 | ||
|
|
37d2f8a8ad | ||
|
|
f18acf3e68 | ||
|
|
3fb08ca2c3 | ||
|
|
83be09d643 | ||
|
|
6de8249fb0 | ||
|
|
013ddcff66 | ||
|
|
8ece4caf1c | ||
|
|
a94b12e8cd | ||
|
|
c38103068e | ||
|
|
f8caaf0e99 | ||
|
|
ee809ddb37 | ||
|
|
227bd0523e | ||
|
|
c096b29521 | ||
|
|
6a0520b126 | ||
|
|
240373898a | ||
|
|
d33ad0cdef | ||
|
|
a3a3070158 | ||
|
|
b717c3d550 | ||
|
|
9aa5820ac2 | ||
|
|
1ac65dd9bd | ||
|
|
797a6951a8 | ||
|
|
7268de6e1e | ||
|
|
fc602ce9f4 | ||
|
|
403bff27b4 | ||
|
|
44b9ba911d | ||
|
|
c24f8fc85b | ||
|
|
75c56cbeee | ||
|
|
15f42c9658 | ||
|
|
525d0c21bb | ||
|
|
cbf05cfe5b | ||
|
|
aaa506a581 | ||
|
|
a2fbfad00e | ||
|
|
031c52e25a | ||
|
|
693dfd827c | ||
|
|
d26a2d35bf | ||
|
|
9839de128c | ||
|
|
12872ee51e | ||
|
|
2af08d6823 | ||
|
|
f646075311 | ||
|
|
dfca767476 | ||
|
|
fd7b5952c2 | ||
|
|
4b46eddc47 | ||
|
|
e26121177f | ||
|
|
91eb0c314f | ||
|
|
1d7a2d4eae | ||
|
|
e4235d4d75 | ||
|
|
41a83115be | ||
|
|
3ce887cb34 | ||
|
|
874eb6189e | ||
|
|
5c5c491597 | ||
|
|
ff78c1443c | ||
|
|
cdc1c2d776 | ||
|
|
a004c247ab | ||
|
|
048e90fb8f | ||
|
|
c1498145e6 | ||
|
|
7654d5183a | ||
|
|
9b7fc0a93b | ||
|
|
200318ddcf | ||
|
|
1fdd0a1b32 | ||
|
|
8869772fa4 | ||
|
|
96bc894962 | ||
|
|
5a9f5f2eca | ||
|
|
bd9dbcbb42 | ||
|
|
f8269bb764 | ||
|
|
c215047c00 | ||
|
|
a313e3f364 | ||
|
|
b34be1184e | ||
|
|
e23c5527da | ||
|
|
847e62dd27 | ||
|
|
f5d83aa259 | ||
|
|
4a5c0ae5a0 | ||
|
|
b4a4323906 | ||
|
|
48fc5af5f7 | ||
|
|
a1753a28ec | ||
|
|
fa4039cf63 | ||
|
|
4b0814c0a1 | ||
|
|
78d0b06b36 | ||
|
|
426bdf5df3 | ||
|
|
5dbad7ebd0 | ||
|
|
6ef33c5b7f | ||
|
|
3737a6eace | ||
|
|
967e129724 | ||
|
|
e9d549377e | ||
|
|
924b8af827 | ||
|
|
045ee73b61 | ||
|
|
5d9d13ce07 | ||
|
|
5a1347ec50 | ||
|
|
c705f45856 | ||
|
|
83fc129d05 | ||
|
|
d7cde3a77f | ||
|
|
afb1ad8e94 | ||
|
|
15a79ee9bd | ||
|
|
68794c170b | ||
|
|
a9d84749ba | ||
|
|
dd5fc323ef | ||
|
|
cf1547d077 | ||
|
|
9664c99e06 | ||
|
|
17b7fb6999 | ||
|
|
21a4db8a81 | ||
|
|
eabdabcfcd | ||
|
|
c548383a4c | ||
|
|
7337f4be1e | ||
|
|
d84f223b9d | ||
|
|
5431112186 | ||
|
|
ff743151c6 | ||
|
|
b923392b53 | ||
|
|
15d272c621 | ||
|
|
eefa50b2c3 | ||
|
|
ecc7a152f7 | ||
|
|
7bf31f9a47 | ||
|
|
7dc970ff53 | ||
|
|
97d71ec361 | ||
|
|
003b939d33 | ||
|
|
9989cbff24 | ||
|
|
426ef989f8 | ||
|
|
ca6e079053 | ||
|
|
13644fd308 | ||
|
|
1ec76ae3fc | ||
|
|
51d75146cc | ||
|
|
bc4222646d | ||
|
|
c3e206e3b1 | ||
|
|
04147e11cc | ||
|
|
545cb4cddf | ||
|
|
0f948d4e2a | ||
|
|
5fb3e0fe14 | ||
|
|
fb87dfd91e | ||
|
|
be8967b05f | ||
|
|
8acfff7faa | ||
|
|
18e1f4bd28 | ||
|
|
74f88a6643 | ||
|
|
47fe764cb0 | ||
|
|
9e53770e6c | ||
|
|
a9cc001791 | ||
|
|
c24913d124 | ||
|
|
63bf0b6070 | ||
|
|
50792327a4 | ||
|
|
46e67be8ca | ||
|
|
e7c3ba5eba | ||
|
|
ea86ab2300 | ||
|
|
501e8c937f | ||
|
|
cae5c36d84 | ||
|
|
1b92fa76e1 | ||
|
|
bbdb683061 | ||
|
|
2d04547c74 | ||
|
|
5192c801f7 | ||
|
|
d966d50bd5 | ||
|
|
7e20db33f2 | ||
|
|
669ee7215b | ||
|
|
6fa00a43a4 | ||
|
|
4edf740179 | ||
|
|
c7abb4c920 | ||
|
|
df3964110a | ||
|
|
96231260bc | ||
|
|
967303d2de | ||
|
|
955481773d | ||
|
|
d66a7049e8 | ||
|
|
e73b8d2826 | ||
|
|
ea23003807 | ||
|
|
23f41f8ae7 | ||
|
|
3f416f83d3 | ||
|
|
931d1992b6 | ||
|
|
fd927a7052 | ||
|
|
dd46224afe | ||
|
|
be2b29ccc7 | ||
|
|
c93e3bc947 | ||
|
|
7d49395c41 | ||
|
|
f4c9e6d7b8 | ||
|
|
b7a907c8c8 | ||
|
|
36485a0f01 | ||
|
|
efec1b4444 | ||
|
|
bdf6500260 | ||
|
|
db4eb0579e | ||
|
|
76f33534d4 | ||
|
|
39fea5bc2f | ||
|
|
660d5c1270 | ||
|
|
781e2fc9b2 | ||
|
|
c2a2464fe8 | ||
|
|
beb3c15eb3 | ||
|
|
553010bb7b | ||
|
|
8d12bbf453 | ||
|
|
fa7588826a | ||
|
|
332f191e19 | ||
|
|
8151382a6b | ||
|
|
ae44a21be1 | ||
|
|
b0ff0995de | ||
|
|
e711095ecd | ||
|
|
08de97a2a8 | ||
|
|
5eb6302d2a | ||
|
|
2e346ae7fd | ||
|
|
1285d12915 | ||
|
|
8b5cb9258e | ||
|
|
ef3e3a0392 | ||
|
|
8fca6572f9 | ||
|
|
33eaf0e583 | ||
|
|
16acd1c08c | ||
|
|
a8e8804ce3 | ||
|
|
b8c0f997f6 | ||
|
|
11e63f38b1 | ||
|
|
ff36d8f3db | ||
|
|
975542d8af | ||
|
|
d71a9415b4 | ||
|
|
e948da95b5 | ||
|
|
9a6510c320 | ||
|
|
57ff1ede97 | ||
|
|
7c0f2563f7 | ||
|
|
d11a954b40 | ||
|
|
f354339af1 | ||
|
|
89658bb77a | ||
|
|
1ff0238b6e | ||
|
|
e777434d57 | ||
|
|
ee6efc30a3 | ||
|
|
0758bb5f38 | ||
|
|
299d5725a6 | ||
|
|
d7c9b31ec7 | ||
|
|
6c78bee5c1 | ||
|
|
dba0cbd5f9 | ||
|
|
0752e780f2 | ||
|
|
c43919ce01 | ||
|
|
0d95510b72 | ||
|
|
60fb2571a2 | ||
|
|
90cbe90492 | ||
|
|
95c203b0ed | ||
|
|
449c5c5c77 | ||
|
|
9aff208403 | ||
|
|
4318849127 | ||
|
|
29e8cdf699 | ||
|
|
4427dbdcad | ||
|
|
af4c3819b9 | ||
|
|
39379e1ac0 | ||
|
|
71eeb3f6b8 | ||
|
|
d409ef49af | ||
|
|
e7a80e9280 | ||
|
|
65c2d2ea0b | ||
|
|
92666dca21 | ||
|
|
3e1a79c248 | ||
|
|
73a1ce083a | ||
|
|
22dacebc5e | ||
|
|
80d0948e24 | ||
|
|
58b427b977 | ||
|
|
a4cab3565a | ||
|
|
205c9580e3 | ||
|
|
70a0ed135b | ||
|
|
f556181d77 | ||
|
|
d48e26904e | ||
|
|
19232ac405 | ||
|
|
9ee2ccc8af | ||
|
|
7079bb6a63 | ||
|
|
0ab5827ee5 | ||
|
|
c5443f622c | ||
|
|
e4aa276cca | ||
|
|
90ff2d679e | ||
|
|
da26c35d5a | ||
|
|
779e3da74e | ||
|
|
e358c08773 | ||
|
|
2945fa3a47 | ||
|
|
ab1541e741 | ||
|
|
3aeaa709a5 | ||
|
|
91e627df6b | ||
|
|
d0795e9e1c | ||
|
|
0e12dd4874 | ||
|
|
25c0e48181 | ||
|
|
0d43c3620d | ||
|
|
2f6137f8df | ||
|
|
2843b86a93 | ||
|
|
8235de07ff | ||
|
|
e2f9a4c7f0 | ||
|
|
55c6e3cf93 | ||
|
|
11c154e564 | ||
|
|
7fc0d27c3c | ||
|
|
1ac76cfcd8 | ||
|
|
c8ed04aaaf | ||
|
|
6641651f3c | ||
|
|
dbf164bfb2 | ||
|
|
8a617c3008 | ||
|
|
a50a2430ba | ||
|
|
5c3c552288 | ||
|
|
69fdddfc71 | ||
|
|
db5b988275 | ||
|
|
4284757035 | ||
|
|
b93a47acc0 | ||
|
|
d59f9857ce | ||
|
|
8ce212b74b | ||
|
|
e78aea5735 | ||
|
|
9a3c5c3f40 | ||
|
|
60ca3f9c34 | ||
|
|
e7e740dff1 | ||
|
|
8343a98d77 | ||
|
|
5862039a00 | ||
|
|
8af989b75f | ||
|
|
08d0e5ff75 | ||
|
|
5196d10e5c | ||
|
|
3392ec463d | ||
|
|
33529404cf | ||
|
|
00e7a36013 | ||
|
|
3060b394ab | ||
|
|
a43d9022fe | ||
|
|
6abdc68ca5 | ||
|
|
61c66b0e96 | ||
|
|
36cc23457a | ||
|
|
d573b238de | ||
|
|
8afe25fe85 | ||
|
|
f80647ff0d | ||
|
|
7e64cbabf8 | ||
|
|
14a06410ae | ||
|
|
85c2a4f4f0 | ||
|
|
da9e211ec7 | ||
|
|
a81070c471 | ||
|
|
e3ad7efa4f | ||
|
|
a4dafd7155 | ||
|
|
645aec853e | ||
|
|
d8d5e4a3c4 | ||
|
|
7a48c04057 | ||
|
|
64aaaa707e | ||
|
|
445d40dc5f | ||
|
|
ebdcb531f2 | ||
|
|
c9cdb891d6 | ||
|
|
f5c6c002a8 | ||
|
|
d171c6bb9a | ||
|
|
1c81a4faed | ||
|
|
e7d1d5cb71 | ||
|
|
060d831d50 | ||
|
|
316bd6dd01 | ||
|
|
34081e5903 | ||
|
|
e2d843b65e | ||
|
|
a796f5fe4b | ||
|
|
51ee41c773 | ||
|
|
7e5ed3efe5 | ||
|
|
8dd25ac315 | ||
|
|
1cdaa58e7a | ||
|
|
fa3aa24a3d | ||
|
|
091431d95b | ||
|
|
1ecf0122ab | ||
|
|
79980a1725 | ||
|
|
8badcc3f6e | ||
|
|
4d6e57257c | ||
|
|
a7a93b8500 | ||
|
|
85cc34fb4c | ||
|
|
772a996b6e | ||
|
|
e67eff822d | ||
|
|
c39ed6120f | ||
|
|
c38f4e6543 | ||
|
|
098433b697 | ||
|
|
c8e20c905b | ||
|
|
bd2446ba0a | ||
|
|
c179e4aaf3 | ||
|
|
2f8de2a919 | ||
|
|
338110973d | ||
|
|
3c9c4495bc | ||
|
|
93476f782c | ||
|
|
3aec6ee578 | ||
|
|
3bca76d4c8 | ||
|
|
b9d6f35aac | ||
|
|
9b6959414a | ||
|
|
400dd6aa5e | ||
|
|
14af2f6efd | ||
|
|
0a2de9e0d5 | ||
|
|
89bfad78a6 | ||
|
|
52486fa278 | ||
|
|
dc0e14eb21 | ||
|
|
70278374e7 | ||
|
|
ac3588c76a | ||
|
|
ab335aef2a | ||
|
|
719c855bdb | ||
|
|
f283e50018 | ||
|
|
99b952ee28 | ||
|
|
24639b62c0 | ||
|
|
573cc531bf | ||
|
|
29e24bae93 | ||
|
|
22e4cc07c0 | ||
|
|
9264347698 | ||
|
|
579c26ac59 | ||
|
|
ef577dd313 | ||
|
|
62c7e52487 | ||
|
|
3534ac6477 | ||
|
|
1738f7b311 | ||
|
|
eb25caec81 | ||
|
|
a6c60e2c04 | ||
|
|
adafbdf6d3 | ||
|
|
7eab14938d | ||
|
|
039e55673b | ||
|
|
ec3a9b6cb4 | ||
|
|
17a6494b2b | ||
|
|
0b05c7074f | ||
|
|
876ccc7cbf | ||
|
|
bdf14b8f24 | ||
|
|
43375a6f5b | ||
|
|
e00328ae13 | ||
|
|
07c553294b |
@@ -9,8 +9,8 @@
|
|||||||
|
|
||||||
package discord;
|
package discord;
|
||||||
|
|
||||||
import engine.Enum;
|
|
||||||
import engine.gameManager.ConfigManager;
|
import engine.gameManager.ConfigManager;
|
||||||
|
import engine.mbEnums;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
|
|
||||||
import java.sql.*;
|
import java.sql.*;
|
||||||
@@ -70,7 +70,7 @@ public class Database {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean updateAccountStatus(String discordAccountID, Enum.AccountStatus accountStatus) {
|
public boolean updateAccountStatus(String discordAccountID, mbEnums.AccountStatus accountStatus) {
|
||||||
|
|
||||||
try (Connection connection = DriverManager.getConnection(sqlURI, ConfigManager.MB_DATABASE_USER.getValue(),
|
try (Connection connection = DriverManager.getConnection(sqlURI, ConfigManager.MB_DATABASE_USER.getValue(),
|
||||||
ConfigManager.MB_DATABASE_PASS.getValue());
|
ConfigManager.MB_DATABASE_PASS.getValue());
|
||||||
@@ -131,7 +131,7 @@ public class Database {
|
|||||||
discordAccount = new DiscordAccount();
|
discordAccount = new DiscordAccount();
|
||||||
discordAccount.discordAccount = rs.getString("discordAccount");
|
discordAccount.discordAccount = rs.getString("discordAccount");
|
||||||
discordAccount.gameAccountName = rs.getString("acct_uname");
|
discordAccount.gameAccountName = rs.getString("acct_uname");
|
||||||
discordAccount.status = Enum.AccountStatus.valueOf(rs.getString("status"));
|
discordAccount.status = mbEnums.AccountStatus.valueOf(rs.getString("status"));
|
||||||
discordAccount.isDiscordAdmin = rs.getByte("discordAdmin"); // Registration date cannot be null
|
discordAccount.isDiscordAdmin = rs.getByte("discordAdmin"); // Registration date cannot be null
|
||||||
|
|
||||||
Timestamp registrationDate = rs.getTimestamp("registrationDate");
|
Timestamp registrationDate = rs.getTimestamp("registrationDate");
|
||||||
@@ -328,7 +328,7 @@ public class Database {
|
|||||||
discordAccount = new DiscordAccount();
|
discordAccount = new DiscordAccount();
|
||||||
discordAccount.discordAccount = rs.getString("discordAccount");
|
discordAccount.discordAccount = rs.getString("discordAccount");
|
||||||
discordAccount.gameAccountName = rs.getString("acct_uname");
|
discordAccount.gameAccountName = rs.getString("acct_uname");
|
||||||
discordAccount.status = Enum.AccountStatus.valueOf(rs.getString("status"));
|
discordAccount.status = mbEnums.AccountStatus.valueOf(rs.getString("status"));
|
||||||
|
|
||||||
// Registration date cannot be null
|
// Registration date cannot be null
|
||||||
|
|
||||||
|
|||||||
@@ -8,14 +8,14 @@
|
|||||||
|
|
||||||
package discord;
|
package discord;
|
||||||
|
|
||||||
import engine.Enum;
|
import engine.mbEnums;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
public class DiscordAccount {
|
public class DiscordAccount {
|
||||||
public String discordAccount;
|
public String discordAccount;
|
||||||
public String gameAccountName;
|
public String gameAccountName;
|
||||||
public Enum.AccountStatus status;
|
public mbEnums.AccountStatus status;
|
||||||
public LocalDateTime registrationDate;
|
public LocalDateTime registrationDate;
|
||||||
public LocalDateTime lastUpdateRequest;
|
public LocalDateTime lastUpdateRequest;
|
||||||
public byte isDiscordAdmin;
|
public byte isDiscordAdmin;
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ package discord.handlers;
|
|||||||
import discord.Database;
|
import discord.Database;
|
||||||
import discord.DiscordAccount;
|
import discord.DiscordAccount;
|
||||||
import discord.MagicBot;
|
import discord.MagicBot;
|
||||||
import engine.Enum;
|
import engine.mbEnums;
|
||||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -21,7 +21,7 @@ public class AccountInfoRequest {
|
|||||||
public static void handleRequest(MessageReceivedEvent event) {
|
public static void handleRequest(MessageReceivedEvent event) {
|
||||||
|
|
||||||
String discordAccountID = event.getAuthor().getId();
|
String discordAccountID = event.getAuthor().getId();
|
||||||
Enum.AccountStatus accountStatus;
|
mbEnums.AccountStatus accountStatus;
|
||||||
|
|
||||||
if (Database.online == false) {
|
if (Database.online == false) {
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ package discord.handlers;
|
|||||||
import discord.DiscordAccount;
|
import discord.DiscordAccount;
|
||||||
import discord.MagicBot;
|
import discord.MagicBot;
|
||||||
import discord.RobotSpeak;
|
import discord.RobotSpeak;
|
||||||
import engine.Enum;
|
import engine.mbEnums;
|
||||||
import net.dv8tion.jda.api.entities.User;
|
import net.dv8tion.jda.api.entities.User;
|
||||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
@@ -23,7 +23,7 @@ public class BanToggleHandler {
|
|||||||
public static void handleRequest(MessageReceivedEvent event, String[] args) {
|
public static void handleRequest(MessageReceivedEvent event, String[] args) {
|
||||||
|
|
||||||
String discordAccountID;
|
String discordAccountID;
|
||||||
Enum.AccountStatus accountStatus;
|
mbEnums.AccountStatus accountStatus;
|
||||||
|
|
||||||
// Early exit if database unavailable or is not an admin
|
// Early exit if database unavailable or is not an admin
|
||||||
|
|
||||||
@@ -55,10 +55,10 @@ public class BanToggleHandler {
|
|||||||
|
|
||||||
// toggle ban status
|
// toggle ban status
|
||||||
|
|
||||||
if (discordAccounts.get(0).status.equals(Enum.AccountStatus.BANNED))
|
if (discordAccounts.get(0).status.equals(mbEnums.AccountStatus.BANNED))
|
||||||
accountStatus = Enum.AccountStatus.ACTIVE;
|
accountStatus = mbEnums.AccountStatus.ACTIVE;
|
||||||
else
|
else
|
||||||
accountStatus = Enum.AccountStatus.BANNED;
|
accountStatus = mbEnums.AccountStatus.BANNED;
|
||||||
|
|
||||||
// We have a valid discord ID at this point. Banstick?
|
// We have a valid discord ID at this point. Banstick?
|
||||||
|
|
||||||
@@ -82,7 +82,7 @@ public class BanToggleHandler {
|
|||||||
|
|
||||||
// If we're toggling status to active we're done here.
|
// If we're toggling status to active we're done here.
|
||||||
|
|
||||||
if (accountStatus.equals(Enum.AccountStatus.ACTIVE))
|
if (accountStatus.equals(mbEnums.AccountStatus.ACTIVE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Set users role to noob
|
// Set users role to noob
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ package discord.handlers;
|
|||||||
import discord.Database;
|
import discord.Database;
|
||||||
import discord.DiscordAccount;
|
import discord.DiscordAccount;
|
||||||
import discord.MagicBot;
|
import discord.MagicBot;
|
||||||
import engine.Enum;
|
import engine.mbEnums;
|
||||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
|
|
||||||
@@ -53,7 +53,7 @@ public class PasswordChangeHandler {
|
|||||||
|
|
||||||
// Banned or suspended user's get no love.
|
// Banned or suspended user's get no love.
|
||||||
|
|
||||||
if (discordAccount.status.equals(Enum.AccountStatus.BANNED)) {
|
if (discordAccount.status.equals(mbEnums.AccountStatus.BANNED)) {
|
||||||
MagicBot.sendResponse(event,
|
MagicBot.sendResponse(event,
|
||||||
"Sorry but that is too much work. \n" +
|
"Sorry but that is too much work. \n" +
|
||||||
"Your account detailings cannot for to log into game!");
|
"Your account detailings cannot for to log into game!");
|
||||||
|
|||||||
@@ -1,706 +0,0 @@
|
|||||||
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
|
||||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
|
||||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
|
||||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
|
||||||
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
|
||||||
// Magicbane Emulator Project © 2013 - 2022
|
|
||||||
// www.magicbane.com
|
|
||||||
|
|
||||||
package engine.InterestManagement;
|
|
||||||
|
|
||||||
import engine.Enum;
|
|
||||||
import engine.gameManager.ConfigManager;
|
|
||||||
import engine.gameManager.DbManager;
|
|
||||||
import engine.gameManager.ZoneManager;
|
|
||||||
import engine.math.Vector2f;
|
|
||||||
import engine.math.Vector3fImmutable;
|
|
||||||
import engine.objects.AbstractWorldObject;
|
|
||||||
import engine.objects.Zone;
|
|
||||||
import engine.util.MapLoader;
|
|
||||||
import org.pmw.tinylog.Logger;
|
|
||||||
|
|
||||||
import javax.imageio.ImageIO;
|
|
||||||
import java.awt.*;
|
|
||||||
import java.awt.image.BufferedImage;
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.sql.ResultSet;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
public class HeightMap {
|
|
||||||
|
|
||||||
// Class variables
|
|
||||||
|
|
||||||
// Heightmap data for all zones.
|
|
||||||
|
|
||||||
public static final HashMap<Integer, HeightMap> heightmapByLoadNum = new HashMap<>();
|
|
||||||
|
|
||||||
// Bootstrap Tracking
|
|
||||||
|
|
||||||
public static int heightMapsCreated = 0;
|
|
||||||
public static HeightMap PlayerCityHeightMap;
|
|
||||||
|
|
||||||
// Heightmap data for this heightmap
|
|
||||||
|
|
||||||
public BufferedImage heightmapImage;
|
|
||||||
|
|
||||||
private int heightMapID;
|
|
||||||
private int maxHeight;
|
|
||||||
private int fullExtentsX;
|
|
||||||
private int fullExtentsY;
|
|
||||||
|
|
||||||
private float bucketWidthX;
|
|
||||||
private float bucketWidthY;
|
|
||||||
private int zoneLoadID;
|
|
||||||
private float seaLevel = 0;
|
|
||||||
private float outsetX;
|
|
||||||
private float outsetZ;
|
|
||||||
private int[][] pixelColorValues;
|
|
||||||
|
|
||||||
public HeightMap(ResultSet rs) throws SQLException {
|
|
||||||
|
|
||||||
this.heightMapID = rs.getInt("heightMapID");
|
|
||||||
this.maxHeight = rs.getInt("maxHeight");
|
|
||||||
int halfExtentsX = rs.getInt("xRadius");
|
|
||||||
int halfExtentsY = rs.getInt("zRadius");
|
|
||||||
this.zoneLoadID = rs.getInt("zoneLoadID");
|
|
||||||
this.seaLevel = rs.getFloat("seaLevel");
|
|
||||||
this.outsetX = rs.getFloat("outsetX");
|
|
||||||
this.outsetZ = rs.getFloat("outsetZ");
|
|
||||||
|
|
||||||
|
|
||||||
// Cache the full extents to avoid the calculation
|
|
||||||
|
|
||||||
this.fullExtentsX = halfExtentsX * 2;
|
|
||||||
this.fullExtentsY = halfExtentsY * 2;
|
|
||||||
|
|
||||||
this.heightmapImage = null;
|
|
||||||
File imageFile = new File(ConfigManager.DEFAULT_DATA_DIR + "heightmaps/" + this.heightMapID + ".bmp");
|
|
||||||
|
|
||||||
// early exit if no image file was found. Will log in caller.
|
|
||||||
|
|
||||||
if (!imageFile.exists())
|
|
||||||
return;
|
|
||||||
|
|
||||||
// load the heightmap image.
|
|
||||||
|
|
||||||
try {
|
|
||||||
this.heightmapImage = ImageIO.read(imageFile);
|
|
||||||
} catch (IOException e) {
|
|
||||||
Logger.error("***Error loading heightmap data for heightmap " + this.heightMapID + e.toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
// We needed to flip the image as OpenGL and Shadowbane both use the bottom left corner as origin.
|
|
||||||
|
|
||||||
this.heightmapImage = MapLoader.flipImage(this.heightmapImage);
|
|
||||||
|
|
||||||
// Calculate the data we do not load from table
|
|
||||||
|
|
||||||
float numOfBuckets = this.heightmapImage.getWidth() - 1;
|
|
||||||
float calculatedWidth = this.fullExtentsX / numOfBuckets;
|
|
||||||
this.bucketWidthX = calculatedWidth;
|
|
||||||
this.bucketWidthY = this.bucketWidthX; // This makes no sense.
|
|
||||||
|
|
||||||
// Generate pixel array from image data
|
|
||||||
|
|
||||||
generatePixelData();
|
|
||||||
|
|
||||||
HeightMap.heightmapByLoadNum.put(this.zoneLoadID, this);
|
|
||||||
|
|
||||||
heightMapsCreated++;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Created for PlayerCities
|
|
||||||
public HeightMap() {
|
|
||||||
|
|
||||||
this.heightMapID = 999999;
|
|
||||||
this.maxHeight = 5; // for real...
|
|
||||||
int halfExtentsX = (int) Enum.CityBoundsType.ZONE.extents;
|
|
||||||
int halfExtentsY = (int) Enum.CityBoundsType.ZONE.extents;
|
|
||||||
this.zoneLoadID = 0;
|
|
||||||
this.seaLevel = 0;
|
|
||||||
this.outsetX = 128;
|
|
||||||
this.outsetZ = 128;
|
|
||||||
|
|
||||||
|
|
||||||
// Cache the full extents to avoid the calculation
|
|
||||||
|
|
||||||
this.fullExtentsX = halfExtentsX * 2;
|
|
||||||
this.fullExtentsY = halfExtentsY * 2;
|
|
||||||
|
|
||||||
|
|
||||||
// load the heightmap image.
|
|
||||||
|
|
||||||
|
|
||||||
// We needed to flip the image as OpenGL and Shadowbane both use the bottom left corner as origin.
|
|
||||||
|
|
||||||
this.heightmapImage = null;
|
|
||||||
|
|
||||||
// Calculate the data we do not load from table
|
|
||||||
|
|
||||||
this.bucketWidthX = 1;
|
|
||||||
this.bucketWidthY = 1;
|
|
||||||
|
|
||||||
this.pixelColorValues = new int[this.fullExtentsX + 1][this.fullExtentsY + 1];
|
|
||||||
|
|
||||||
for (int y = 0; y <= this.fullExtentsY; y++) {
|
|
||||||
for (int x = 0; x <= this.fullExtentsX; x++) {
|
|
||||||
pixelColorValues[x][y] = 255;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
HeightMap.heightmapByLoadNum.put(this.zoneLoadID, this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public HeightMap(Zone zone) {
|
|
||||||
|
|
||||||
this.heightMapID = 999999;
|
|
||||||
this.maxHeight = 0;
|
|
||||||
int halfExtentsX = (int) zone.getBounds().getHalfExtents().x;
|
|
||||||
int halfExtentsY = (int) zone.getBounds().getHalfExtents().y;
|
|
||||||
this.zoneLoadID = 0;
|
|
||||||
this.seaLevel = 0;
|
|
||||||
this.outsetX = 0;
|
|
||||||
this.outsetZ = 0;
|
|
||||||
|
|
||||||
// Cache the full extents to avoid the calculation
|
|
||||||
|
|
||||||
this.fullExtentsX = halfExtentsX * 2;
|
|
||||||
this.fullExtentsY = halfExtentsY * 2;
|
|
||||||
|
|
||||||
|
|
||||||
// We needed to flip the image as OpenGL and Shadowbane both use the bottom left corner as origin.
|
|
||||||
|
|
||||||
this.heightmapImage = null;
|
|
||||||
|
|
||||||
// Calculate the data we do not load from table
|
|
||||||
|
|
||||||
this.bucketWidthX = 1;
|
|
||||||
this.bucketWidthY = 1;
|
|
||||||
|
|
||||||
this.pixelColorValues = new int[this.fullExtentsX + 1][this.fullExtentsY + 1];
|
|
||||||
|
|
||||||
for (int y = 0; y <= this.fullExtentsY; y++) {
|
|
||||||
for (int x = 0; x <= this.fullExtentsX; x++) {
|
|
||||||
pixelColorValues[x][y] = 255;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
HeightMap.heightmapByLoadNum.put(this.zoneLoadID, this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void GeneratePlayerCityHeightMap() {
|
|
||||||
|
|
||||||
HeightMap.PlayerCityHeightMap = new HeightMap();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void GenerateCustomHeightMap(Zone zone) {
|
|
||||||
|
|
||||||
HeightMap heightMap = new HeightMap(zone);
|
|
||||||
|
|
||||||
HeightMap.heightmapByLoadNum.put(zone.getLoadNum(), heightMap);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Zone getNextZoneWithTerrain(Zone zone) {
|
|
||||||
|
|
||||||
Zone nextZone = zone;
|
|
||||||
|
|
||||||
if (zone.getHeightMap() != null)
|
|
||||||
return zone;
|
|
||||||
|
|
||||||
if (zone.equals(ZoneManager.getSeaFloor()))
|
|
||||||
return zone;
|
|
||||||
|
|
||||||
while (nextZone.getHeightMap() == null)
|
|
||||||
nextZone = nextZone.getParent();
|
|
||||||
|
|
||||||
return nextZone;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static float getWorldHeight(AbstractWorldObject worldObject) {
|
|
||||||
|
|
||||||
Vector2f parentLoc = new Vector2f(-1, -1);
|
|
||||||
Zone currentZone = ZoneManager.findSmallestZone(worldObject.getLoc());
|
|
||||||
|
|
||||||
if (currentZone == null)
|
|
||||||
return worldObject.getAltitude();
|
|
||||||
|
|
||||||
currentZone = getNextZoneWithTerrain(currentZone);
|
|
||||||
|
|
||||||
if (currentZone == ZoneManager.getSeaFloor())
|
|
||||||
return currentZone.getAbsY() + worldObject.getAltitude();
|
|
||||||
|
|
||||||
Zone parentZone = getNextZoneWithTerrain(currentZone.getParent());
|
|
||||||
HeightMap heightMap = currentZone.getHeightMap();
|
|
||||||
|
|
||||||
Vector2f zoneLoc = ZoneManager.worldToZoneSpace(worldObject.getLoc(), currentZone);
|
|
||||||
Vector3fImmutable localLocFromCenter = ZoneManager.worldToLocal(worldObject.getLoc(), currentZone);
|
|
||||||
|
|
||||||
if ((parentZone != null) && (parentZone.getHeightMap() != null))
|
|
||||||
parentLoc = ZoneManager.worldToZoneSpace(worldObject.getLoc(), parentZone);
|
|
||||||
|
|
||||||
float interaltitude = currentZone.getHeightMap().getInterpolatedTerrainHeight(zoneLoc);
|
|
||||||
|
|
||||||
float worldAltitude = currentZone.getWorldAltitude();
|
|
||||||
|
|
||||||
float realWorldAltitude = interaltitude + worldAltitude;
|
|
||||||
|
|
||||||
//OUTSET
|
|
||||||
|
|
||||||
if (parentZone != null) {
|
|
||||||
|
|
||||||
float parentXRadius = currentZone.getBounds().getHalfExtents().x;
|
|
||||||
float parentZRadius = currentZone.getBounds().getHalfExtents().y;
|
|
||||||
|
|
||||||
float offsetX = Math.abs((localLocFromCenter.x / parentXRadius));
|
|
||||||
float offsetZ = Math.abs((localLocFromCenter.z / parentZRadius));
|
|
||||||
|
|
||||||
float bucketScaleX = heightMap.outsetX / parentXRadius;
|
|
||||||
float bucketScaleZ = heightMap.outsetZ / parentZRadius;
|
|
||||||
|
|
||||||
if (bucketScaleX <= 0.40000001)
|
|
||||||
bucketScaleX = heightMap.outsetZ / parentXRadius;
|
|
||||||
|
|
||||||
if (bucketScaleX > 0.40000001)
|
|
||||||
bucketScaleX = 0.40000001f;
|
|
||||||
|
|
||||||
if (bucketScaleZ <= 0.40000001)
|
|
||||||
bucketScaleZ = heightMap.outsetX / parentZRadius;
|
|
||||||
|
|
||||||
if (bucketScaleZ > 0.40000001)
|
|
||||||
bucketScaleZ = 0.40000001f;
|
|
||||||
|
|
||||||
float outsideGridSizeX = 1 - bucketScaleX; //32/256
|
|
||||||
float outsideGridSizeZ = 1 - bucketScaleZ;
|
|
||||||
float weight;
|
|
||||||
|
|
||||||
double scale;
|
|
||||||
|
|
||||||
if (offsetX > outsideGridSizeX && offsetX > offsetZ) {
|
|
||||||
weight = (offsetX - outsideGridSizeX) / bucketScaleX;
|
|
||||||
scale = Math.atan2((.5 - weight) * 3.1415927, 1);
|
|
||||||
|
|
||||||
float scaleChild = (float) ((scale + 1) * .5);
|
|
||||||
float scaleParent = 1 - scaleChild;
|
|
||||||
|
|
||||||
float parentAltitude = parentZone.getHeightMap().getInterpolatedTerrainHeight(parentLoc);
|
|
||||||
float parentCenterAltitude = parentZone.getHeightMap().getInterpolatedTerrainHeight(ZoneManager.worldToZoneSpace(currentZone.getLoc(), parentZone));
|
|
||||||
|
|
||||||
parentCenterAltitude += currentZone.getYCoord();
|
|
||||||
parentCenterAltitude += interaltitude;
|
|
||||||
|
|
||||||
float firstScale = parentAltitude * scaleParent;
|
|
||||||
float secondScale = parentCenterAltitude * scaleChild;
|
|
||||||
float outsetALt = firstScale + secondScale;
|
|
||||||
|
|
||||||
outsetALt += currentZone.getParent().getWorldAltitude();
|
|
||||||
realWorldAltitude = outsetALt;
|
|
||||||
|
|
||||||
} else if (offsetZ > outsideGridSizeZ) {
|
|
||||||
|
|
||||||
weight = (offsetZ - outsideGridSizeZ) / bucketScaleZ;
|
|
||||||
scale = Math.atan2((.5 - weight) * 3.1415927, 1);
|
|
||||||
|
|
||||||
float scaleChild = (float) ((scale + 1) * .5);
|
|
||||||
float scaleParent = 1 - scaleChild;
|
|
||||||
float parentAltitude = parentZone.getHeightMap().getInterpolatedTerrainHeight(parentLoc);
|
|
||||||
float parentCenterAltitude = parentZone.getHeightMap().getInterpolatedTerrainHeight(ZoneManager.worldToZoneSpace(currentZone.getLoc(), parentZone));
|
|
||||||
|
|
||||||
parentCenterAltitude += currentZone.getYCoord();
|
|
||||||
parentCenterAltitude += interaltitude;
|
|
||||||
float firstScale = parentAltitude * scaleParent;
|
|
||||||
float secondScale = parentCenterAltitude * scaleChild;
|
|
||||||
float outsetALt = firstScale + secondScale;
|
|
||||||
|
|
||||||
outsetALt += currentZone.getParent().getWorldAltitude();
|
|
||||||
realWorldAltitude = outsetALt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return realWorldAltitude;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static float getWorldHeight(Vector3fImmutable worldLoc) {
|
|
||||||
|
|
||||||
Vector2f parentLoc = new Vector2f(-1, -1);
|
|
||||||
Zone currentZone = ZoneManager.findSmallestZone(worldLoc);
|
|
||||||
|
|
||||||
if (currentZone == null)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
currentZone = getNextZoneWithTerrain(currentZone);
|
|
||||||
|
|
||||||
if (currentZone == ZoneManager.getSeaFloor())
|
|
||||||
return currentZone.getAbsY();
|
|
||||||
|
|
||||||
Zone parentZone = getNextZoneWithTerrain(currentZone.getParent());
|
|
||||||
HeightMap heightMap = currentZone.getHeightMap();
|
|
||||||
|
|
||||||
if ((heightMap == null) || (currentZone == ZoneManager.getSeaFloor()))
|
|
||||||
return currentZone.getAbsY();
|
|
||||||
|
|
||||||
Vector2f zoneLoc = ZoneManager.worldToZoneSpace(worldLoc, currentZone);
|
|
||||||
Vector3fImmutable localLocFromCenter = ZoneManager.worldToLocal(worldLoc, currentZone);
|
|
||||||
|
|
||||||
if ((parentZone != null) && (parentZone.getHeightMap() != null))
|
|
||||||
parentLoc = ZoneManager.worldToZoneSpace(worldLoc, parentZone);
|
|
||||||
|
|
||||||
float interaltitude = currentZone.getHeightMap().getInterpolatedTerrainHeight(zoneLoc);
|
|
||||||
|
|
||||||
float worldAltitude = currentZone.getWorldAltitude();
|
|
||||||
|
|
||||||
float realWorldAltitude = interaltitude + worldAltitude;
|
|
||||||
|
|
||||||
//OUTSET
|
|
||||||
|
|
||||||
if (parentZone != null) {
|
|
||||||
|
|
||||||
// if (currentZone.getHeightMap() != null && parentZone.getHeightMap() != null && parentZone.getParent() != null && parentZone.getParent().getHeightMap() != null)
|
|
||||||
// return realWorldAltitude;
|
|
||||||
|
|
||||||
float parentXRadius = currentZone.getBounds().getHalfExtents().x;
|
|
||||||
float parentZRadius = currentZone.getBounds().getHalfExtents().y;
|
|
||||||
|
|
||||||
float offsetX = Math.abs((localLocFromCenter.x / parentXRadius));
|
|
||||||
float offsetZ = Math.abs((localLocFromCenter.z / parentZRadius));
|
|
||||||
|
|
||||||
float bucketScaleX = heightMap.outsetX / parentXRadius;
|
|
||||||
float bucketScaleZ = heightMap.outsetZ / parentZRadius;
|
|
||||||
|
|
||||||
float outsideGridSizeX = 1 - bucketScaleX; //32/256
|
|
||||||
float outsideGridSizeZ = 1 - bucketScaleZ;
|
|
||||||
float weight;
|
|
||||||
|
|
||||||
double scale;
|
|
||||||
|
|
||||||
|
|
||||||
if (offsetX > outsideGridSizeX && offsetX > offsetZ) {
|
|
||||||
weight = (offsetX - outsideGridSizeX) / bucketScaleX;
|
|
||||||
scale = Math.atan2((.5 - weight) * 3.1415927, 1);
|
|
||||||
|
|
||||||
float scaleChild = (float) ((scale + 1) * .5);
|
|
||||||
float scaleParent = 1 - scaleChild;
|
|
||||||
|
|
||||||
float parentAltitude = parentZone.getHeightMap().getInterpolatedTerrainHeight(parentLoc);
|
|
||||||
float parentCenterAltitude = parentZone.getHeightMap().getInterpolatedTerrainHeight(ZoneManager.worldToZoneSpace(currentZone.getLoc(), parentZone));
|
|
||||||
|
|
||||||
parentCenterAltitude += currentZone.getYCoord();
|
|
||||||
parentCenterAltitude += interaltitude;
|
|
||||||
|
|
||||||
float firstScale = parentAltitude * scaleParent;
|
|
||||||
float secondScale = parentCenterAltitude * scaleChild;
|
|
||||||
float outsetALt = firstScale + secondScale;
|
|
||||||
|
|
||||||
outsetALt += currentZone.getParent().getWorldAltitude();
|
|
||||||
realWorldAltitude = outsetALt;
|
|
||||||
|
|
||||||
} else if (offsetZ > outsideGridSizeZ) {
|
|
||||||
|
|
||||||
weight = (offsetZ - outsideGridSizeZ) / bucketScaleZ;
|
|
||||||
scale = Math.atan2((.5 - weight) * 3.1415927, 1);
|
|
||||||
|
|
||||||
float scaleChild = (float) ((scale + 1) * .5);
|
|
||||||
float scaleParent = 1 - scaleChild;
|
|
||||||
float parentAltitude = parentZone.getHeightMap().getInterpolatedTerrainHeight(parentLoc);
|
|
||||||
float parentCenterAltitude = parentZone.getHeightMap().getInterpolatedTerrainHeight(ZoneManager.worldToZoneSpace(currentZone.getLoc(), parentZone));
|
|
||||||
|
|
||||||
parentCenterAltitude += currentZone.getYCoord();
|
|
||||||
parentCenterAltitude += interaltitude;
|
|
||||||
float firstScale = parentAltitude * scaleParent;
|
|
||||||
float secondScale = parentCenterAltitude * scaleChild;
|
|
||||||
float outsetALt = firstScale + secondScale;
|
|
||||||
|
|
||||||
outsetALt += currentZone.getParent().getWorldAltitude();
|
|
||||||
realWorldAltitude = outsetALt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return realWorldAltitude;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static float getOutsetHeight(float interpolatedAltitude, Zone zone, Vector3fImmutable worldLocation) {
|
|
||||||
|
|
||||||
Vector2f parentLoc;
|
|
||||||
float outsetALt = 0;
|
|
||||||
|
|
||||||
if (zone.getParent() == null || zone.getParent().getHeightMap() == null)
|
|
||||||
return interpolatedAltitude + zone.getWorldAltitude();
|
|
||||||
|
|
||||||
if (zone.getParent() != null && zone.getParent().getHeightMap() != null) {
|
|
||||||
|
|
||||||
parentLoc = ZoneManager.worldToZoneSpace(worldLocation, zone.getParent());
|
|
||||||
|
|
||||||
Vector3fImmutable localLocFromCenter = ZoneManager.worldToLocal(worldLocation, zone);
|
|
||||||
|
|
||||||
float parentXRadius = zone.getBounds().getHalfExtents().x;
|
|
||||||
float parentZRadius = zone.getBounds().getHalfExtents().y;
|
|
||||||
|
|
||||||
float bucketScaleX = zone.getHeightMap().outsetX / parentXRadius;
|
|
||||||
float bucketScaleZ = zone.getHeightMap().outsetZ / parentZRadius;
|
|
||||||
|
|
||||||
float outsideGridSizeX = 1 - bucketScaleX; //32/256
|
|
||||||
float outsideGridSizeZ = 1 - bucketScaleZ;
|
|
||||||
|
|
||||||
float weight;
|
|
||||||
double scale;
|
|
||||||
|
|
||||||
float offsetX = Math.abs((localLocFromCenter.x / parentXRadius));
|
|
||||||
float offsetZ = Math.abs((localLocFromCenter.z / parentZRadius));
|
|
||||||
|
|
||||||
if (offsetX > outsideGridSizeX && offsetX > offsetZ) {
|
|
||||||
weight = (offsetX - outsideGridSizeX) / bucketScaleX;
|
|
||||||
scale = Math.atan2((.5 - weight) * 3.1415927, 1);
|
|
||||||
|
|
||||||
float scaleChild = (float) ((scale + 1) * .5);
|
|
||||||
float scaleParent = 1 - scaleChild;
|
|
||||||
|
|
||||||
float parentAltitude = zone.getParent().getHeightMap().getInterpolatedTerrainHeight(parentLoc);
|
|
||||||
float parentCenterAltitude = zone.getParent().getHeightMap().getInterpolatedTerrainHeight(ZoneManager.worldToZoneSpace(zone.getLoc(), zone.getParent()));
|
|
||||||
|
|
||||||
parentCenterAltitude += zone.getYCoord();
|
|
||||||
parentCenterAltitude += interpolatedAltitude;
|
|
||||||
|
|
||||||
float firstScale = parentAltitude * scaleParent;
|
|
||||||
float secondScale = parentCenterAltitude * scaleChild;
|
|
||||||
outsetALt = firstScale + secondScale;
|
|
||||||
|
|
||||||
outsetALt += zone.getParent().getAbsY();
|
|
||||||
|
|
||||||
} else if (offsetZ > outsideGridSizeZ) {
|
|
||||||
|
|
||||||
weight = (offsetZ - outsideGridSizeZ) / bucketScaleZ;
|
|
||||||
scale = Math.atan2((.5 - weight) * 3.1415927, 1);
|
|
||||||
|
|
||||||
float scaleChild = (float) ((scale + 1) * .5);
|
|
||||||
float scaleParent = 1 - scaleChild;
|
|
||||||
float parentAltitude = zone.getParent().getHeightMap().getInterpolatedTerrainHeight(parentLoc);
|
|
||||||
float parentCenterAltitude = zone.getHeightMap().getInterpolatedTerrainHeight(ZoneManager.worldToZoneSpace(zone.getLoc(), zone));
|
|
||||||
|
|
||||||
parentCenterAltitude += zone.getYCoord();
|
|
||||||
parentCenterAltitude += interpolatedAltitude;
|
|
||||||
|
|
||||||
float firstScale = parentAltitude * scaleParent;
|
|
||||||
float secondScale = parentCenterAltitude * scaleChild;
|
|
||||||
outsetALt = firstScale + secondScale;
|
|
||||||
|
|
||||||
outsetALt += zone.getParent().getAbsY();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return outsetALt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Vector2f getGridOffset(Vector2f gridSquare) {
|
|
||||||
|
|
||||||
int floorX = (int) gridSquare.x;
|
|
||||||
int floorY = (int) gridSquare.y;
|
|
||||||
|
|
||||||
return new Vector2f(gridSquare.x - floorX, gridSquare.y - floorY);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void loadAlHeightMaps() {
|
|
||||||
|
|
||||||
// Load the heightmaps into staging hashmap keyed by HashMapID
|
|
||||||
|
|
||||||
DbManager.HeightMapQueries.LOAD_ALL_HEIGHTMAPS();
|
|
||||||
|
|
||||||
//generate static player city heightmap.
|
|
||||||
|
|
||||||
HeightMap.GeneratePlayerCityHeightMap();
|
|
||||||
|
|
||||||
|
|
||||||
// Clear all heightmap image data as it's no longer needed.
|
|
||||||
|
|
||||||
for (HeightMap heightMap : HeightMap.heightmapByLoadNum.values()) {
|
|
||||||
heightMap.heightmapImage = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
Logger.info(HeightMap.heightmapByLoadNum.size() + " Heightmaps cached.");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isLocUnderwater(Vector3fImmutable currentLoc) {
|
|
||||||
|
|
||||||
float localAltitude = HeightMap.getWorldHeight(currentLoc);
|
|
||||||
Zone zone = ZoneManager.findSmallestZone(currentLoc);
|
|
||||||
|
|
||||||
if (localAltitude < zone.getSeaLevel())
|
|
||||||
return true;
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Vector2f getGridSquare(Vector2f zoneLoc) {
|
|
||||||
|
|
||||||
if (zoneLoc.x < 0)
|
|
||||||
zoneLoc.setX(0);
|
|
||||||
|
|
||||||
if (zoneLoc.x > this.fullExtentsX - 1)
|
|
||||||
zoneLoc.setX((this.fullExtentsX - 1) + .9999999f);
|
|
||||||
|
|
||||||
if (zoneLoc.y < 0)
|
|
||||||
zoneLoc.setY(0);
|
|
||||||
|
|
||||||
if (zoneLoc.y > this.fullExtentsY - 1)
|
|
||||||
zoneLoc.setY((this.fullExtentsY - 1) + .9999999f);
|
|
||||||
|
|
||||||
float xBucket = (zoneLoc.x / this.bucketWidthX);
|
|
||||||
float yBucket = (zoneLoc.y / this.bucketWidthY);
|
|
||||||
|
|
||||||
return new Vector2f(xBucket, yBucket);
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getInterpolatedTerrainHeight(Vector2f zoneLoc) {
|
|
||||||
|
|
||||||
Vector2f gridSquare;
|
|
||||||
|
|
||||||
if (zoneLoc.x < 0 || zoneLoc.x > this.fullExtentsX)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
if (zoneLoc.y < 0 || zoneLoc.y > this.fullExtentsY)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
int maxX = (int) (this.fullExtentsX / this.bucketWidthX);
|
|
||||||
int maxY = (int) (this.fullExtentsY / this.bucketWidthY);
|
|
||||||
|
|
||||||
//flip the Y so it grabs from the bottom left instead of top left.
|
|
||||||
//zoneLoc.setY(maxZoneHeight - zoneLoc.y);
|
|
||||||
|
|
||||||
gridSquare = getGridSquare(zoneLoc);
|
|
||||||
|
|
||||||
int gridX = (int) gridSquare.x;
|
|
||||||
int gridY = (int) (gridSquare.y);
|
|
||||||
|
|
||||||
if (gridX > maxX)
|
|
||||||
gridX = maxX;
|
|
||||||
if (gridY > maxY)
|
|
||||||
gridY = maxY;
|
|
||||||
|
|
||||||
float offsetX = (gridSquare.x - gridX);
|
|
||||||
float offsetY = gridSquare.y - gridY;
|
|
||||||
|
|
||||||
//get height of the 4 vertices.
|
|
||||||
|
|
||||||
float topLeftHeight = 0;
|
|
||||||
float topRightHeight = 0;
|
|
||||||
float bottomLeftHeight = 0;
|
|
||||||
float bottomRightHeight = 0;
|
|
||||||
|
|
||||||
int nextY = gridY + 1;
|
|
||||||
int nextX = gridX + 1;
|
|
||||||
|
|
||||||
if (nextY > maxY)
|
|
||||||
nextY = gridY;
|
|
||||||
|
|
||||||
if (nextX > maxX)
|
|
||||||
nextX = gridX;
|
|
||||||
|
|
||||||
topLeftHeight = pixelColorValues[gridX][gridY];
|
|
||||||
topRightHeight = pixelColorValues[nextX][gridY];
|
|
||||||
bottomLeftHeight = pixelColorValues[gridX][nextY];
|
|
||||||
bottomRightHeight = pixelColorValues[nextX][nextY];
|
|
||||||
|
|
||||||
float interpolatedHeight;
|
|
||||||
|
|
||||||
interpolatedHeight = topRightHeight * (1 - offsetY) * (offsetX);
|
|
||||||
interpolatedHeight += (bottomRightHeight * offsetY * offsetX);
|
|
||||||
interpolatedHeight += (bottomLeftHeight * (1 - offsetX) * offsetY);
|
|
||||||
interpolatedHeight += (topLeftHeight * (1 - offsetX) * (1 - offsetY));
|
|
||||||
|
|
||||||
interpolatedHeight *= (float) this.maxHeight / 256; // Scale height
|
|
||||||
|
|
||||||
return interpolatedHeight;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getInterpolatedTerrainHeight(Vector3fImmutable zoneLoc3f) {
|
|
||||||
|
|
||||||
Vector2f zoneLoc = new Vector2f(zoneLoc3f.x, zoneLoc3f.z);
|
|
||||||
|
|
||||||
Vector2f gridSquare;
|
|
||||||
|
|
||||||
if (zoneLoc.x < 0 || zoneLoc.x > this.fullExtentsX)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
if (zoneLoc.y < 0 || zoneLoc.y > this.fullExtentsY)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
//flip the Y so it grabs from the bottom left instead of top left.
|
|
||||||
//zoneLoc.setY(maxZoneHeight - zoneLoc.y);
|
|
||||||
|
|
||||||
gridSquare = getGridSquare(zoneLoc);
|
|
||||||
|
|
||||||
int gridX = (int) gridSquare.x;
|
|
||||||
int gridY = (int) (gridSquare.y);
|
|
||||||
|
|
||||||
float offsetX = (gridSquare.x - gridX);
|
|
||||||
float offsetY = gridSquare.y - gridY;
|
|
||||||
|
|
||||||
//get height of the 4 vertices.
|
|
||||||
|
|
||||||
float topLeftHeight = pixelColorValues[gridX][gridY];
|
|
||||||
float topRightHeight = pixelColorValues[gridX + 1][gridY];
|
|
||||||
float bottomLeftHeight = pixelColorValues[gridX][gridY + 1];
|
|
||||||
float bottomRightHeight = pixelColorValues[gridX + 1][gridY + 1];
|
|
||||||
|
|
||||||
float interpolatedHeight;
|
|
||||||
|
|
||||||
interpolatedHeight = topRightHeight * (1 - offsetY) * (offsetX);
|
|
||||||
interpolatedHeight += (bottomRightHeight * offsetY * offsetX);
|
|
||||||
interpolatedHeight += (bottomLeftHeight * (1 - offsetX) * offsetY);
|
|
||||||
interpolatedHeight += (topLeftHeight * (1 - offsetX) * (1 - offsetY));
|
|
||||||
|
|
||||||
interpolatedHeight *= (float) this.maxHeight / 256; // Scale height
|
|
||||||
|
|
||||||
return interpolatedHeight;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void generatePixelData() {
|
|
||||||
|
|
||||||
Color color;
|
|
||||||
|
|
||||||
// Generate altitude lookup table for this heightmap
|
|
||||||
|
|
||||||
this.pixelColorValues = new int[this.heightmapImage.getWidth()][this.heightmapImage.getHeight()];
|
|
||||||
|
|
||||||
for (int y = 0; y < this.heightmapImage.getHeight(); y++) {
|
|
||||||
for (int x = 0; x < this.heightmapImage.getWidth(); x++) {
|
|
||||||
|
|
||||||
color = new Color(this.heightmapImage.getRGB(x, y));
|
|
||||||
pixelColorValues[x][y] = color.getRed();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getScaledHeightForColor(float color) {
|
|
||||||
|
|
||||||
return (color / 256) * this.maxHeight;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getBucketWidthX() {
|
|
||||||
return bucketWidthX;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getBucketWidthY() {
|
|
||||||
return bucketWidthY;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getHeightMapID() {
|
|
||||||
return heightMapID;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BufferedImage getHeightmapImage() {
|
|
||||||
return heightmapImage;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getSeaLevel() {
|
|
||||||
return seaLevel;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -8,13 +8,13 @@
|
|||||||
|
|
||||||
package engine.InterestManagement;
|
package engine.InterestManagement;
|
||||||
|
|
||||||
import engine.Enum;
|
|
||||||
import engine.Enum.DispatchChannel;
|
|
||||||
import engine.Enum.GameObjectType;
|
|
||||||
import engine.gameManager.GroupManager;
|
import engine.gameManager.GroupManager;
|
||||||
import engine.gameManager.SessionManager;
|
import engine.gameManager.SessionManager;
|
||||||
import engine.job.JobScheduler;
|
import engine.job.JobScheduler;
|
||||||
import engine.jobs.RefreshGroupJob;
|
import engine.jobs.RefreshGroupJob;
|
||||||
|
import engine.mbEnums;
|
||||||
|
import engine.mbEnums.DispatchChannel;
|
||||||
|
import engine.mbEnums.GameObjectType;
|
||||||
import engine.net.AbstractNetMsg;
|
import engine.net.AbstractNetMsg;
|
||||||
import engine.net.Dispatch;
|
import engine.net.Dispatch;
|
||||||
import engine.net.DispatchMessage;
|
import engine.net.DispatchMessage;
|
||||||
@@ -140,7 +140,7 @@ public enum InterestManager implements Runnable {
|
|||||||
|
|
||||||
else {
|
else {
|
||||||
if (pc != null)
|
if (pc != null)
|
||||||
if (pcc.getSeeInvis() < pc.getHidden())
|
if (pcc.getSeeInvis() < pc.hidden)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!cc.sendMsg(uom)) {
|
if (!cc.sendMsg(uom)) {
|
||||||
@@ -340,7 +340,7 @@ public enum InterestManager implements Runnable {
|
|||||||
if (loadedPlayer.getObjectUUID() == player.getObjectUUID())
|
if (loadedPlayer.getObjectUUID() == player.getObjectUUID())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (player.getSeeInvis() < loadedPlayer.getHidden())
|
if (player.getSeeInvis() < loadedPlayer.hidden)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (loadedPlayer.safemodeInvis())
|
if (loadedPlayer.safemodeInvis())
|
||||||
@@ -372,7 +372,7 @@ public enum InterestManager implements Runnable {
|
|||||||
|
|
||||||
if (playerLoadedObject.getObjectType().equals(GameObjectType.PlayerCharacter)) {
|
if (playerLoadedObject.getObjectType().equals(GameObjectType.PlayerCharacter)) {
|
||||||
PlayerCharacter loadedPlayer = (PlayerCharacter) playerLoadedObject;
|
PlayerCharacter loadedPlayer = (PlayerCharacter) playerLoadedObject;
|
||||||
if (player.getSeeInvis() < loadedPlayer.getHidden())
|
if (player.getSeeInvis() < loadedPlayer.hidden)
|
||||||
toRemove.add(playerLoadedObject);
|
toRemove.add(playerLoadedObject);
|
||||||
else if (loadedPlayer.safemodeInvis())
|
else if (loadedPlayer.safemodeInvis())
|
||||||
toRemove.add(playerLoadedObject);
|
toRemove.add(playerLoadedObject);
|
||||||
@@ -437,7 +437,7 @@ public enum InterestManager implements Runnable {
|
|||||||
|
|
||||||
// dont load if invis
|
// dont load if invis
|
||||||
|
|
||||||
if (player.getSeeInvis() < awopc.getHidden())
|
if (player.getSeeInvis() < awopc.hidden)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
lcm = new LoadCharacterMsg(awopc, PlayerCharacter.hideNonAscii());
|
lcm = new LoadCharacterMsg(awopc, PlayerCharacter.hideNonAscii());
|
||||||
@@ -467,7 +467,7 @@ public enum InterestManager implements Runnable {
|
|||||||
if (awonpc.despawned == true)
|
if (awonpc.despawned == true)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
awonpc.playerAgroMap.put(player.getObjectUUID(), false);
|
awonpc.playerAgroMap.put(player.getObjectUUID(), 0f);
|
||||||
((Mob) awonpc).setCombatTarget(null);
|
((Mob) awonpc).setCombatTarget(null);
|
||||||
lcm = new LoadCharacterMsg(awonpc, PlayerCharacter.hideNonAscii());
|
lcm = new LoadCharacterMsg(awonpc, PlayerCharacter.hideNonAscii());
|
||||||
|
|
||||||
@@ -480,9 +480,9 @@ public enum InterestManager implements Runnable {
|
|||||||
if (!awonpc.isAlive())
|
if (!awonpc.isAlive())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
awonpc.playerAgroMap.put(player.getObjectUUID(), false);
|
awonpc.playerAgroMap.put(player.getObjectUUID(), 0f);
|
||||||
|
|
||||||
if ((awonpc.agentType.equals(Enum.AIAgentType.MOBILE)))
|
if ((awonpc.agentType.equals(mbEnums.AIAgentType.MOBILE)))
|
||||||
((Mob) awonpc).setCombatTarget(null);
|
((Mob) awonpc).setCombatTarget(null);
|
||||||
|
|
||||||
lcm = new LoadCharacterMsg(awonpc, PlayerCharacter.hideNonAscii());
|
lcm = new LoadCharacterMsg(awonpc, PlayerCharacter.hideNonAscii());
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ package engine.InterestManagement;
|
|||||||
* Interest management facilities.
|
* Interest management facilities.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import engine.Enum;
|
|
||||||
import engine.math.Vector3fImmutable;
|
import engine.math.Vector3fImmutable;
|
||||||
|
import engine.mbEnums;
|
||||||
import engine.net.Dispatch;
|
import engine.net.Dispatch;
|
||||||
import engine.net.DispatchMessage;
|
import engine.net.DispatchMessage;
|
||||||
import engine.net.client.msg.TerritoryChangeMessage;
|
import engine.net.client.msg.TerritoryChangeMessage;
|
||||||
@@ -88,17 +88,17 @@ public enum RealmMap {
|
|||||||
if (city != null) {
|
if (city != null) {
|
||||||
TerritoryChangeMessage tcm = new TerritoryChangeMessage((PlayerCharacter) realm.getRulingCity().getOwner(), realm);
|
TerritoryChangeMessage tcm = new TerritoryChangeMessage((PlayerCharacter) realm.getRulingCity().getOwner(), realm);
|
||||||
Dispatch dispatch = Dispatch.borrow(player, tcm);
|
Dispatch dispatch = Dispatch.borrow(player, tcm);
|
||||||
DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.PRIMARY);
|
DispatchMessage.dispatchMsgDispatch(dispatch, mbEnums.DispatchChannel.PRIMARY);
|
||||||
} else {
|
} else {
|
||||||
TerritoryChangeMessage tcm = new TerritoryChangeMessage(null, realm);
|
TerritoryChangeMessage tcm = new TerritoryChangeMessage(null, realm);
|
||||||
Dispatch dispatch = Dispatch.borrow(player, tcm);
|
Dispatch dispatch = Dispatch.borrow(player, tcm);
|
||||||
DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.PRIMARY);
|
DispatchMessage.dispatchMsgDispatch(dispatch, mbEnums.DispatchChannel.PRIMARY);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
TerritoryChangeMessage tcm = new TerritoryChangeMessage(null, realm);
|
TerritoryChangeMessage tcm = new TerritoryChangeMessage(null, realm);
|
||||||
Dispatch dispatch = Dispatch.borrow(player, tcm);
|
Dispatch dispatch = Dispatch.borrow(player, tcm);
|
||||||
DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.PRIMARY);
|
DispatchMessage.dispatchMsgDispatch(dispatch, mbEnums.DispatchChannel.PRIMARY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,230 @@
|
|||||||
|
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
||||||
|
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
||||||
|
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
||||||
|
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
||||||
|
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
||||||
|
// Magicbane Emulator Project © 2013 - 2022
|
||||||
|
// www.magicbane.com
|
||||||
|
|
||||||
|
package engine.InterestManagement;
|
||||||
|
|
||||||
|
import engine.gameManager.ZoneManager;
|
||||||
|
import engine.math.Vector2f;
|
||||||
|
import engine.math.Vector3fImmutable;
|
||||||
|
import engine.objects.Zone;
|
||||||
|
import org.pmw.tinylog.Logger;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
import static java.lang.Math.PI;
|
||||||
|
|
||||||
|
public class Terrain {
|
||||||
|
public static final HashMap<Integer, short[][]> _heightmap_pixel_cache = new HashMap<>();
|
||||||
|
public short[][] terrain_pixel_data;
|
||||||
|
public Vector2f terrain_size = new Vector2f();
|
||||||
|
public Vector2f cell_size = new Vector2f();
|
||||||
|
public Vector2f cell_count = new Vector2f();
|
||||||
|
public float terrain_scale;
|
||||||
|
public Vector2f blend_values = new Vector2f();
|
||||||
|
public Vector2f blend_ratio = new Vector2f();
|
||||||
|
public int heightmap;
|
||||||
|
Zone zone;
|
||||||
|
|
||||||
|
public Terrain(Zone zone) {
|
||||||
|
|
||||||
|
this.zone = zone;
|
||||||
|
this.heightmap = this.zone.template.terrain_image;
|
||||||
|
|
||||||
|
// Configure PLANAR zones to use the same 16x16 pixel image
|
||||||
|
// that all similar terrains share. (See JSON)
|
||||||
|
|
||||||
|
if (this.zone.template.terrain_type.equals("PLANAR"))
|
||||||
|
this.heightmap = 1006300; // all 0
|
||||||
|
|
||||||
|
// Load pixel data for this terrain from cache
|
||||||
|
|
||||||
|
this.terrain_pixel_data = Terrain._heightmap_pixel_cache.get(heightmap);
|
||||||
|
|
||||||
|
if (terrain_pixel_data == null)
|
||||||
|
Logger.error("Pixel map empty for zone: " + this.zone.getObjectUUID() + ":" + this.zone.zoneName);
|
||||||
|
|
||||||
|
// Configure terrain based on zone properties
|
||||||
|
|
||||||
|
this.terrain_size.x = this.zone.major_radius * 2;
|
||||||
|
this.terrain_size.y = this.zone.minor_radius * 2;
|
||||||
|
|
||||||
|
this.cell_count.x = this.terrain_pixel_data.length - 1;
|
||||||
|
this.cell_count.y = this.terrain_pixel_data[0].length - 1;
|
||||||
|
|
||||||
|
this.cell_size.x = terrain_size.x / this.cell_count.x;
|
||||||
|
this.cell_size.y = terrain_size.y / this.cell_count.y;
|
||||||
|
|
||||||
|
// Blending configuration. These ratios are used to calculate
|
||||||
|
// the blending area between child and parent terrains when
|
||||||
|
// they are stitched together.
|
||||||
|
|
||||||
|
this.blend_values.x = this.zone.template.max_blend;
|
||||||
|
this.blend_values.y = this.zone.template.min_blend;
|
||||||
|
|
||||||
|
Vector2f major_blend = new Vector2f(this.blend_values.x / this.zone.major_radius,
|
||||||
|
this.blend_values.y / this.zone.major_radius);
|
||||||
|
|
||||||
|
Vector2f minor_blend = new Vector2f(this.blend_values.x / this.zone.minor_radius,
|
||||||
|
this.blend_values.y / this.zone.minor_radius);
|
||||||
|
|
||||||
|
if (major_blend.y > 0.4f)
|
||||||
|
blend_ratio.x = major_blend.y;
|
||||||
|
else
|
||||||
|
blend_ratio.x = Math.min(major_blend.x, 0.4f);
|
||||||
|
|
||||||
|
if (minor_blend.y > 0.4f)
|
||||||
|
blend_ratio.y = minor_blend.y;
|
||||||
|
else
|
||||||
|
blend_ratio.y = Math.min(minor_blend.x, 0.4f);
|
||||||
|
|
||||||
|
// Scale coefficient for this terrain
|
||||||
|
|
||||||
|
this.terrain_scale = this.zone.template.terrain_max_y / 255f;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Zone getNextZoneWithTerrain(Zone zone) {
|
||||||
|
|
||||||
|
// Not all zones have a terrain. Some are for display only
|
||||||
|
// and heights returned are from the parent heightmap. This
|
||||||
|
// is controlled in the JSON via the has_terrain_gen field.
|
||||||
|
|
||||||
|
Zone terrain_zone = zone;
|
||||||
|
|
||||||
|
if (zone == null)
|
||||||
|
return ZoneManager.seaFloor;
|
||||||
|
|
||||||
|
if (zone.terrain != null)
|
||||||
|
return zone;
|
||||||
|
|
||||||
|
if (zone.equals(ZoneManager.seaFloor))
|
||||||
|
return zone;
|
||||||
|
|
||||||
|
while (terrain_zone.terrain == null)
|
||||||
|
terrain_zone = terrain_zone.parent;
|
||||||
|
|
||||||
|
return terrain_zone;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static float getWorldHeight(Zone zone, Vector3fImmutable world_loc) {
|
||||||
|
|
||||||
|
// Retrieve the next zone with a terrain defined.
|
||||||
|
|
||||||
|
Zone terrainZone = getNextZoneWithTerrain(zone);
|
||||||
|
Zone parentZone = getNextZoneWithTerrain(zone.parent);
|
||||||
|
|
||||||
|
// Transform world loc into zone space coordinate system
|
||||||
|
|
||||||
|
Vector2f terrainLoc = ZoneManager.worldToTerrainSpace(world_loc, terrainZone);
|
||||||
|
Vector2f parentLoc = ZoneManager.worldToTerrainSpace(world_loc, parentZone);
|
||||||
|
|
||||||
|
// Offset from origin needed for blending function
|
||||||
|
|
||||||
|
Vector2f terrainOffset = ZoneManager.worldToZoneOffset(world_loc, terrainZone);
|
||||||
|
|
||||||
|
// Interpolate height for this position in both terrains
|
||||||
|
|
||||||
|
float interpolatedChildHeight = terrainZone.terrain.getInterpolatedTerrainHeight(terrainLoc);
|
||||||
|
interpolatedChildHeight += terrainZone.global_height;
|
||||||
|
|
||||||
|
float interpolatedParentTerrainHeight = parentZone.terrain.getInterpolatedTerrainHeight(parentLoc);
|
||||||
|
interpolatedParentTerrainHeight += parentZone.global_height;
|
||||||
|
|
||||||
|
// Blend between terrains
|
||||||
|
|
||||||
|
float blendCoefficient = terrainZone.terrain.getTerrainBlendCoefficient(terrainOffset);
|
||||||
|
|
||||||
|
float terrainHeight = interpolatedChildHeight * blendCoefficient;
|
||||||
|
terrainHeight += interpolatedParentTerrainHeight * (1 - blendCoefficient);
|
||||||
|
|
||||||
|
return terrainHeight;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static float getWorldHeight(Vector3fImmutable world_loc) {
|
||||||
|
|
||||||
|
Zone currentZone = ZoneManager.findSmallestZone(world_loc);
|
||||||
|
|
||||||
|
return getWorldHeight(currentZone, world_loc);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public Vector2f getTerrainCell(Vector2f terrain_loc) {
|
||||||
|
|
||||||
|
// Calculate terrain cell with offset
|
||||||
|
|
||||||
|
Vector2f terrain_cell = new Vector2f(terrain_loc.x / this.cell_size.x, terrain_loc.y / this.cell_size.y);
|
||||||
|
|
||||||
|
// Clamp values when standing directly on pole
|
||||||
|
|
||||||
|
terrain_cell.x = Math.max(0, Math.min(this.cell_count.x - 1, terrain_cell.x));
|
||||||
|
terrain_cell.y = Math.max(0, Math.min(this.cell_count.y - 1, terrain_cell.y));
|
||||||
|
|
||||||
|
return terrain_cell;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getInterpolatedTerrainHeight(Vector2f terrain_loc) {
|
||||||
|
|
||||||
|
float interpolatedHeight;
|
||||||
|
|
||||||
|
// Early exit for guild zones
|
||||||
|
|
||||||
|
if (this.zone.guild_zone)
|
||||||
|
return 5.0f;
|
||||||
|
|
||||||
|
// Determine terrain and offset from top left vertex
|
||||||
|
|
||||||
|
Vector2f terrain_cell = getTerrainCell(terrain_loc);
|
||||||
|
|
||||||
|
int pixel_x = (int) Math.floor(terrain_cell.x);
|
||||||
|
int pixel_y = (int) Math.floor(terrain_cell.y);
|
||||||
|
|
||||||
|
Vector2f pixel_offset = new Vector2f(terrain_cell.x % 1, terrain_cell.y % 1);
|
||||||
|
|
||||||
|
// 4 surrounding vertices from the pixel array.
|
||||||
|
|
||||||
|
short top_left_pixel = terrain_pixel_data[pixel_x][pixel_y];
|
||||||
|
short top_right_pixel = terrain_pixel_data[pixel_x + 1][pixel_y];
|
||||||
|
short bottom_left_pixel = terrain_pixel_data[pixel_x][pixel_y + 1];
|
||||||
|
short bottom_right_pixel = terrain_pixel_data[pixel_x + 1][pixel_y + 1];
|
||||||
|
|
||||||
|
// Interpolate between the 4 vertices
|
||||||
|
|
||||||
|
interpolatedHeight = top_left_pixel * (1 - pixel_offset.x) * (1 - pixel_offset.y);
|
||||||
|
interpolatedHeight += top_right_pixel * (1 - pixel_offset.y) * (pixel_offset.x);
|
||||||
|
interpolatedHeight += (bottom_left_pixel * (1 - pixel_offset.x) * pixel_offset.y);
|
||||||
|
interpolatedHeight += (bottom_right_pixel * pixel_offset.y * pixel_offset.x);
|
||||||
|
|
||||||
|
interpolatedHeight *= this.terrain_scale; // Scale height
|
||||||
|
|
||||||
|
return interpolatedHeight;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getTerrainBlendCoefficient(Vector2f zone_offset) {
|
||||||
|
|
||||||
|
// Normalize terrain offset
|
||||||
|
|
||||||
|
Vector2f normalizedOffset = new Vector2f(Math.abs(zone_offset.x) / this.zone.template.major_radius,
|
||||||
|
Math.abs(zone_offset.y) / this.zone.template.minor_radius);
|
||||||
|
|
||||||
|
float blendCoefficient;
|
||||||
|
|
||||||
|
if (normalizedOffset.x <= 1 - blend_ratio.x || normalizedOffset.x <= normalizedOffset.y) {
|
||||||
|
|
||||||
|
if (normalizedOffset.y < 1 - blend_ratio.y)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
blendCoefficient = (normalizedOffset.y - (1 - blend_ratio.y)) / blend_ratio.y;
|
||||||
|
} else
|
||||||
|
blendCoefficient = (normalizedOffset.x - (1 - blend_ratio.x)) / blend_ratio.x;
|
||||||
|
|
||||||
|
blendCoefficient = (float) Math.atan((0.5f - blendCoefficient) * PI);
|
||||||
|
|
||||||
|
return (blendCoefficient + 1) * 0.5f;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
package engine.InterestManagement;
|
package engine.InterestManagement;
|
||||||
|
|
||||||
import engine.Enum.GridObjectType;
|
import engine.mbEnums.GridObjectType;
|
||||||
import engine.math.FastMath;
|
import engine.math.FastMath;
|
||||||
import engine.math.Vector3f;
|
import engine.math.Vector3f;
|
||||||
import engine.math.Vector3fImmutable;
|
import engine.math.Vector3fImmutable;
|
||||||
|
|||||||
@@ -9,8 +9,8 @@
|
|||||||
|
|
||||||
package engine.db.archive;
|
package engine.db.archive;
|
||||||
|
|
||||||
import engine.Enum;
|
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
|
import engine.mbEnums;
|
||||||
import engine.objects.Bane;
|
import engine.objects.Bane;
|
||||||
import engine.objects.City;
|
import engine.objects.City;
|
||||||
import engine.workthreads.WarehousePushThread;
|
import engine.workthreads.WarehousePushThread;
|
||||||
@@ -21,7 +21,7 @@ import java.sql.*;
|
|||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.concurrent.LinkedBlockingQueue;
|
import java.util.concurrent.LinkedBlockingQueue;
|
||||||
|
|
||||||
import static engine.Enum.RecordEventType;
|
import static engine.mbEnums.RecordEventType;
|
||||||
|
|
||||||
public class BaneRecord extends DataRecord {
|
public class BaneRecord extends DataRecord {
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ public class BaneRecord extends DataRecord {
|
|||||||
private DateTime baneDropTime;
|
private DateTime baneDropTime;
|
||||||
|
|
||||||
private BaneRecord(Bane bane) {
|
private BaneRecord(Bane bane) {
|
||||||
this.recordType = Enum.DataRecordType.BANE;
|
this.recordType = mbEnums.DataRecordType.BANE;
|
||||||
this.eventType = RecordEventType.PENDING;
|
this.eventType = RecordEventType.PENDING;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -51,7 +51,7 @@ public class BaneRecord extends DataRecord {
|
|||||||
baneRecord = new BaneRecord(bane);
|
baneRecord = new BaneRecord(bane);
|
||||||
baneRecord.eventType = eventType;
|
baneRecord.eventType = eventType;
|
||||||
} else {
|
} else {
|
||||||
baneRecord.recordType = Enum.DataRecordType.BANE;
|
baneRecord.recordType = mbEnums.DataRecordType.BANE;
|
||||||
baneRecord.eventType = eventType;
|
baneRecord.eventType = eventType;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,8 +9,8 @@
|
|||||||
|
|
||||||
package engine.db.archive;
|
package engine.db.archive;
|
||||||
|
|
||||||
import engine.Enum;
|
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
|
import engine.mbEnums;
|
||||||
import engine.objects.Guild;
|
import engine.objects.Guild;
|
||||||
import engine.objects.PlayerCharacter;
|
import engine.objects.PlayerCharacter;
|
||||||
import engine.workthreads.WarehousePushThread;
|
import engine.workthreads.WarehousePushThread;
|
||||||
@@ -33,7 +33,7 @@ public class CharacterRecord extends DataRecord {
|
|||||||
private PlayerCharacter player;
|
private PlayerCharacter player;
|
||||||
|
|
||||||
private CharacterRecord(PlayerCharacter player) {
|
private CharacterRecord(PlayerCharacter player) {
|
||||||
this.recordType = Enum.DataRecordType.CHARACTER;
|
this.recordType = mbEnums.DataRecordType.CHARACTER;
|
||||||
this.player = player;
|
this.player = player;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -45,7 +45,7 @@ public class CharacterRecord extends DataRecord {
|
|||||||
if (characterRecord == null) {
|
if (characterRecord == null) {
|
||||||
characterRecord = new CharacterRecord(player);
|
characterRecord = new CharacterRecord(player);
|
||||||
} else {
|
} else {
|
||||||
characterRecord.recordType = Enum.DataRecordType.CHARACTER;
|
characterRecord.recordType = mbEnums.DataRecordType.CHARACTER;
|
||||||
characterRecord.player = player;
|
characterRecord.player = player;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,8 +9,8 @@
|
|||||||
|
|
||||||
package engine.db.archive;
|
package engine.db.archive;
|
||||||
|
|
||||||
import engine.Enum;
|
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
|
import engine.mbEnums;
|
||||||
import engine.objects.City;
|
import engine.objects.City;
|
||||||
import engine.workthreads.WarehousePushThread;
|
import engine.workthreads.WarehousePushThread;
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ import java.util.concurrent.LinkedBlockingQueue;
|
|||||||
public class CityRecord extends DataRecord {
|
public class CityRecord extends DataRecord {
|
||||||
|
|
||||||
private static final LinkedBlockingQueue<CityRecord> recordPool = new LinkedBlockingQueue<>();
|
private static final LinkedBlockingQueue<CityRecord> recordPool = new LinkedBlockingQueue<>();
|
||||||
private Enum.RecordEventType eventType;
|
private mbEnums.RecordEventType eventType;
|
||||||
private City city;
|
private City city;
|
||||||
private String cityHash;
|
private String cityHash;
|
||||||
private String cityGuildHash;
|
private String cityGuildHash;
|
||||||
@@ -32,13 +32,13 @@ public class CityRecord extends DataRecord {
|
|||||||
private java.time.LocalDateTime establishedDatetime;
|
private java.time.LocalDateTime establishedDatetime;
|
||||||
|
|
||||||
private CityRecord(City city) {
|
private CityRecord(City city) {
|
||||||
this.recordType = Enum.DataRecordType.CITY;
|
this.recordType = mbEnums.DataRecordType.CITY;
|
||||||
this.city = city;
|
this.city = city;
|
||||||
this.eventType = Enum.RecordEventType.CREATE;
|
this.eventType = mbEnums.RecordEventType.CREATE;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static CityRecord borrow(City city, Enum.RecordEventType eventType) {
|
public static CityRecord borrow(City city, mbEnums.RecordEventType eventType) {
|
||||||
CityRecord cityRecord;
|
CityRecord cityRecord;
|
||||||
|
|
||||||
cityRecord = recordPool.poll();
|
cityRecord = recordPool.poll();
|
||||||
@@ -47,7 +47,7 @@ public class CityRecord extends DataRecord {
|
|||||||
cityRecord = new CityRecord(city);
|
cityRecord = new CityRecord(city);
|
||||||
cityRecord.eventType = eventType;
|
cityRecord.eventType = eventType;
|
||||||
} else {
|
} else {
|
||||||
cityRecord.recordType = Enum.DataRecordType.CITY;
|
cityRecord.recordType = mbEnums.DataRecordType.CITY;
|
||||||
cityRecord.eventType = eventType;
|
cityRecord.eventType = eventType;
|
||||||
cityRecord.city = city;
|
cityRecord.city = city;
|
||||||
|
|
||||||
@@ -67,9 +67,9 @@ public class CityRecord extends DataRecord {
|
|||||||
cityRecord.locX = cityRecord.city.getTOL().getLoc().x;
|
cityRecord.locX = cityRecord.city.getTOL().getLoc().x;
|
||||||
cityRecord.locY = -cityRecord.city.getTOL().getLoc().z; // flip sign on 'y' coordinate
|
cityRecord.locY = -cityRecord.city.getTOL().getLoc().z; // flip sign on 'y' coordinate
|
||||||
|
|
||||||
cityRecord.zoneHash = cityRecord.city.getParent().getHash();
|
cityRecord.zoneHash = cityRecord.city.getParent().hash;
|
||||||
|
|
||||||
if (cityRecord.eventType.equals(Enum.RecordEventType.CREATE))
|
if (cityRecord.eventType.equals(mbEnums.RecordEventType.CREATE))
|
||||||
cityRecord.establishedDatetime = cityRecord.city.established;
|
cityRecord.establishedDatetime = cityRecord.city.established;
|
||||||
else
|
else
|
||||||
cityRecord.establishedDatetime = java.time.LocalDateTime.now();
|
cityRecord.establishedDatetime = java.time.LocalDateTime.now();
|
||||||
|
|||||||
@@ -9,11 +9,11 @@
|
|||||||
|
|
||||||
package engine.db.archive;
|
package engine.db.archive;
|
||||||
|
|
||||||
import engine.Enum;
|
import engine.mbEnums;
|
||||||
|
|
||||||
class DataRecord {
|
class DataRecord {
|
||||||
|
|
||||||
public Enum.DataRecordType recordType;
|
public mbEnums.DataRecordType recordType;
|
||||||
|
|
||||||
DataRecord() {
|
DataRecord() {
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import java.sql.ResultSet;
|
|||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.concurrent.LinkedBlockingQueue;
|
import java.util.concurrent.LinkedBlockingQueue;
|
||||||
|
|
||||||
import static engine.Enum.DataRecordType;
|
import static engine.mbEnums.DataRecordType;
|
||||||
|
|
||||||
public class DataWarehouse implements Runnable {
|
public class DataWarehouse implements Runnable {
|
||||||
|
|
||||||
|
|||||||
@@ -9,9 +9,9 @@
|
|||||||
|
|
||||||
package engine.db.archive;
|
package engine.db.archive;
|
||||||
|
|
||||||
import engine.Enum;
|
|
||||||
import engine.Enum.RecordEventType;
|
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
|
import engine.mbEnums;
|
||||||
|
import engine.mbEnums.RecordEventType;
|
||||||
import engine.objects.Guild;
|
import engine.objects.Guild;
|
||||||
import engine.workthreads.WarehousePushThread;
|
import engine.workthreads.WarehousePushThread;
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ public class GuildRecord extends DataRecord {
|
|||||||
public static HashMap<Integer, GuildRecord> GuildRecordCache = null;
|
public static HashMap<Integer, GuildRecord> GuildRecordCache = null;
|
||||||
public String guildHash;
|
public String guildHash;
|
||||||
public int guildID;
|
public int guildID;
|
||||||
private Enum.RecordEventType eventType;
|
private mbEnums.RecordEventType eventType;
|
||||||
private Guild guild;
|
private Guild guild;
|
||||||
private String guildName;
|
private String guildName;
|
||||||
private String charterName;
|
private String charterName;
|
||||||
@@ -44,9 +44,9 @@ public class GuildRecord extends DataRecord {
|
|||||||
private java.time.LocalDateTime eventDatetime;
|
private java.time.LocalDateTime eventDatetime;
|
||||||
|
|
||||||
private GuildRecord(Guild guild) {
|
private GuildRecord(Guild guild) {
|
||||||
this.recordType = Enum.DataRecordType.GUILD;
|
this.recordType = mbEnums.DataRecordType.GUILD;
|
||||||
this.guild = guild;
|
this.guild = guild;
|
||||||
this.eventType = Enum.RecordEventType.CREATE;
|
this.eventType = mbEnums.RecordEventType.CREATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -71,7 +71,7 @@ public class GuildRecord extends DataRecord {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static GuildRecord borrow(Guild guild, Enum.RecordEventType eventType) {
|
public static GuildRecord borrow(Guild guild, mbEnums.RecordEventType eventType) {
|
||||||
GuildRecord guildRecord;
|
GuildRecord guildRecord;
|
||||||
//add
|
//add
|
||||||
guildRecord = recordPool.poll();
|
guildRecord = recordPool.poll();
|
||||||
@@ -81,7 +81,7 @@ public class GuildRecord extends DataRecord {
|
|||||||
guildRecord.eventType = eventType;
|
guildRecord.eventType = eventType;
|
||||||
} else {
|
} else {
|
||||||
guildRecord.guild = guild;
|
guildRecord.guild = guild;
|
||||||
guildRecord.recordType = Enum.DataRecordType.GUILD;
|
guildRecord.recordType = mbEnums.DataRecordType.GUILD;
|
||||||
guildRecord.eventType = eventType;
|
guildRecord.eventType = eventType;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -89,7 +89,7 @@ public class GuildRecord extends DataRecord {
|
|||||||
guildRecord.guildHash = guildRecord.guild.getHash();
|
guildRecord.guildHash = guildRecord.guild.getHash();
|
||||||
guildRecord.guildID = guildRecord.guild.getObjectUUID();
|
guildRecord.guildID = guildRecord.guild.getObjectUUID();
|
||||||
guildRecord.guildName = guildRecord.guild.getName();
|
guildRecord.guildName = guildRecord.guild.getName();
|
||||||
guildRecord.charterName = Enum.GuildType.getGuildTypeFromInt(guildRecord.guild.getCharter()).getCharterName();
|
guildRecord.charterName = mbEnums.GuildCharterType.getGuildTypeFromInt(guildRecord.guild.getCharter()).getCharterName();
|
||||||
|
|
||||||
guildRecord.GLHash = DataWarehouse.hasher.encrypt(guildRecord.guild.getGuildLeaderUUID());
|
guildRecord.GLHash = DataWarehouse.hasher.encrypt(guildRecord.guild.getGuildLeaderUUID());
|
||||||
|
|
||||||
|
|||||||
@@ -9,8 +9,8 @@
|
|||||||
|
|
||||||
package engine.db.archive;
|
package engine.db.archive;
|
||||||
|
|
||||||
import engine.Enum;
|
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
|
import engine.mbEnums;
|
||||||
import engine.objects.AbstractCharacter;
|
import engine.objects.AbstractCharacter;
|
||||||
import engine.objects.Mine;
|
import engine.objects.Mine;
|
||||||
import engine.objects.PlayerCharacter;
|
import engine.objects.PlayerCharacter;
|
||||||
@@ -23,7 +23,7 @@ import java.util.concurrent.LinkedBlockingQueue;
|
|||||||
public class MineRecord extends DataRecord {
|
public class MineRecord extends DataRecord {
|
||||||
|
|
||||||
private static final LinkedBlockingQueue<MineRecord> recordPool = new LinkedBlockingQueue<>();
|
private static final LinkedBlockingQueue<MineRecord> recordPool = new LinkedBlockingQueue<>();
|
||||||
private Enum.RecordEventType eventType;
|
private mbEnums.RecordEventType eventType;
|
||||||
private String zoneHash;
|
private String zoneHash;
|
||||||
private String charHash;
|
private String charHash;
|
||||||
private String mineGuildHash;
|
private String mineGuildHash;
|
||||||
@@ -33,12 +33,12 @@ public class MineRecord extends DataRecord {
|
|||||||
private float locY;
|
private float locY;
|
||||||
|
|
||||||
private MineRecord() {
|
private MineRecord() {
|
||||||
this.recordType = Enum.DataRecordType.MINE;
|
this.recordType = mbEnums.DataRecordType.MINE;
|
||||||
this.eventType = Enum.RecordEventType.CAPTURE;
|
this.eventType = mbEnums.RecordEventType.CAPTURE;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static MineRecord borrow(Mine mine, AbstractCharacter character, Enum.RecordEventType eventType) {
|
public static MineRecord borrow(Mine mine, AbstractCharacter character, mbEnums.RecordEventType eventType) {
|
||||||
|
|
||||||
MineRecord mineRecord;
|
MineRecord mineRecord;
|
||||||
mineRecord = recordPool.poll();
|
mineRecord = recordPool.poll();
|
||||||
@@ -48,13 +48,13 @@ public class MineRecord extends DataRecord {
|
|||||||
mineRecord = new MineRecord();
|
mineRecord = new MineRecord();
|
||||||
mineRecord.eventType = eventType;
|
mineRecord.eventType = eventType;
|
||||||
} else {
|
} else {
|
||||||
mineRecord.recordType = Enum.DataRecordType.MINE;
|
mineRecord.recordType = mbEnums.DataRecordType.MINE;
|
||||||
mineRecord.eventType = eventType;
|
mineRecord.eventType = eventType;
|
||||||
}
|
}
|
||||||
|
|
||||||
mineRecord.zoneHash = mine.getParentZone().getHash();
|
mineRecord.zoneHash = mine.getParentZone().hash;
|
||||||
|
|
||||||
if (character.getObjectType().equals(Enum.GameObjectType.PlayerCharacter)) {
|
if (character.getObjectType().equals(mbEnums.GameObjectType.PlayerCharacter)) {
|
||||||
player = (PlayerCharacter) character;
|
player = (PlayerCharacter) character;
|
||||||
mineRecord.charHash = player.getHash();
|
mineRecord.charHash = player.getHash();
|
||||||
} else
|
} else
|
||||||
|
|||||||
@@ -23,8 +23,8 @@ import java.time.LocalDateTime;
|
|||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.concurrent.LinkedBlockingQueue;
|
import java.util.concurrent.LinkedBlockingQueue;
|
||||||
|
|
||||||
import static engine.Enum.DataRecordType;
|
import static engine.mbEnums.DataRecordType;
|
||||||
import static engine.Enum.PvpHistoryType;
|
import static engine.mbEnums.PvpHistoryType;
|
||||||
|
|
||||||
public class PvpRecord extends DataRecord {
|
public class PvpRecord extends DataRecord {
|
||||||
|
|
||||||
@@ -281,7 +281,7 @@ public class PvpRecord extends DataRecord {
|
|||||||
outStatement.setInt(8, this.victim.getLevel());
|
outStatement.setInt(8, this.victim.getLevel());
|
||||||
|
|
||||||
outStatement.setString(9, DataWarehouse.hasher.encrypt(zone.getObjectUUID()));
|
outStatement.setString(9, DataWarehouse.hasher.encrypt(zone.getObjectUUID()));
|
||||||
outStatement.setString(10, zone.getName());
|
outStatement.setString(10, zone.zoneName);
|
||||||
outStatement.setFloat(11, this.location.getX());
|
outStatement.setFloat(11, this.location.getX());
|
||||||
outStatement.setFloat(12, -this.location.getZ()); // flip sign on 'y' coordinate
|
outStatement.setFloat(12, -this.location.getZ()); // flip sign on 'y' coordinate
|
||||||
outStatement.setBoolean(13, this.pvpExp);
|
outStatement.setBoolean(13, this.pvpExp);
|
||||||
|
|||||||
@@ -9,8 +9,8 @@
|
|||||||
|
|
||||||
package engine.db.archive;
|
package engine.db.archive;
|
||||||
|
|
||||||
import engine.Enum;
|
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
|
import engine.mbEnums;
|
||||||
import engine.objects.Realm;
|
import engine.objects.Realm;
|
||||||
import engine.workthreads.WarehousePushThread;
|
import engine.workthreads.WarehousePushThread;
|
||||||
|
|
||||||
@@ -23,20 +23,20 @@ public class RealmRecord extends DataRecord {
|
|||||||
private static final LinkedBlockingQueue<RealmRecord> recordPool = new LinkedBlockingQueue<>();
|
private static final LinkedBlockingQueue<RealmRecord> recordPool = new LinkedBlockingQueue<>();
|
||||||
|
|
||||||
private Realm realm;
|
private Realm realm;
|
||||||
private Enum.RecordEventType eventType;
|
private mbEnums.RecordEventType eventType;
|
||||||
private String cityHash;
|
private String cityHash;
|
||||||
private String guildHash;
|
private String guildHash;
|
||||||
private String charterType;
|
private String charterType;
|
||||||
private LocalDateTime eventDateTime;
|
private LocalDateTime eventDateTime;
|
||||||
|
|
||||||
private RealmRecord(Realm realm) {
|
private RealmRecord(Realm realm) {
|
||||||
this.recordType = Enum.DataRecordType.REALM;
|
this.recordType = mbEnums.DataRecordType.REALM;
|
||||||
this.realm = realm;
|
this.realm = realm;
|
||||||
this.eventType = Enum.RecordEventType.CAPTURE;
|
this.eventType = mbEnums.RecordEventType.CAPTURE;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static RealmRecord borrow(Realm realm, Enum.RecordEventType eventType) {
|
public static RealmRecord borrow(Realm realm, mbEnums.RecordEventType eventType) {
|
||||||
RealmRecord realmRecord;
|
RealmRecord realmRecord;
|
||||||
|
|
||||||
realmRecord = recordPool.poll();
|
realmRecord = recordPool.poll();
|
||||||
@@ -45,7 +45,7 @@ public class RealmRecord extends DataRecord {
|
|||||||
realmRecord = new RealmRecord(realm);
|
realmRecord = new RealmRecord(realm);
|
||||||
realmRecord.eventType = eventType;
|
realmRecord.eventType = eventType;
|
||||||
} else {
|
} else {
|
||||||
realmRecord.recordType = Enum.DataRecordType.REALM;
|
realmRecord.recordType = mbEnums.DataRecordType.REALM;
|
||||||
realmRecord.eventType = eventType;
|
realmRecord.eventType = eventType;
|
||||||
realmRecord.realm = realm;
|
realmRecord.realm = realm;
|
||||||
|
|
||||||
@@ -53,9 +53,9 @@ public class RealmRecord extends DataRecord {
|
|||||||
|
|
||||||
realmRecord.cityHash = realm.getRulingCity().getHash();
|
realmRecord.cityHash = realm.getRulingCity().getHash();
|
||||||
realmRecord.guildHash = realm.getRulingCity().getGuild().getHash();
|
realmRecord.guildHash = realm.getRulingCity().getGuild().getHash();
|
||||||
realmRecord.charterType = Enum.CharterType.getCharterTypeByID(realmRecord.realm.getCharterType()).name();
|
realmRecord.charterType = mbEnums.CharterType.getCharterTypeByID(realmRecord.realm.getCharterType()).name();
|
||||||
|
|
||||||
if (realmRecord.eventType.equals(Enum.RecordEventType.CAPTURE))
|
if (realmRecord.eventType.equals(mbEnums.RecordEventType.CAPTURE))
|
||||||
realmRecord.eventDateTime = realm.ruledSince;
|
realmRecord.eventDateTime = realm.ruledSince;
|
||||||
else
|
else
|
||||||
realmRecord.eventDateTime = LocalDateTime.now();
|
realmRecord.eventDateTime = LocalDateTime.now();
|
||||||
|
|||||||
@@ -9,10 +9,10 @@
|
|||||||
|
|
||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.Enum;
|
|
||||||
import engine.Enum.GameObjectType;
|
|
||||||
import engine.gameManager.ConfigManager;
|
import engine.gameManager.ConfigManager;
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
|
import engine.mbEnums;
|
||||||
|
import engine.mbEnums.GameObjectType;
|
||||||
import engine.objects.Account;
|
import engine.objects.Account;
|
||||||
import engine.objects.PlayerCharacter;
|
import engine.objects.PlayerCharacter;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
@@ -27,7 +27,7 @@ public class dbAccountHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public dbAccountHandler() {
|
public dbAccountHandler() {
|
||||||
this.localClass = Account.class;
|
this.localClass = Account.class;
|
||||||
this.localObjectType = Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
|
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Account GET_ACCOUNT(int accountID) {
|
public Account GET_ACCOUNT(int accountID) {
|
||||||
@@ -204,7 +204,7 @@ public class dbAccountHandler extends dbHandlerBase {
|
|||||||
if (account != null) {
|
if (account != null) {
|
||||||
account.runAfterLoad();
|
account.runAfterLoad();
|
||||||
|
|
||||||
if (ConfigManager.serverType.equals(Enum.ServerType.LOGINSERVER))
|
if (ConfigManager.serverType.equals(mbEnums.ServerType.LOGINSERVER))
|
||||||
Account.AccountsMap.put(uname, account.getObjectUUID());
|
Account.AccountsMap.put(uname, account.getObjectUUID());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,9 +9,9 @@
|
|||||||
|
|
||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.Enum;
|
|
||||||
import engine.Enum.GameObjectType;
|
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
|
import engine.mbEnums;
|
||||||
|
import engine.mbEnums.GameObjectType;
|
||||||
import engine.objects.BaseClass;
|
import engine.objects.BaseClass;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
|
|
||||||
@@ -25,7 +25,7 @@ public class dbBaseClassHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public dbBaseClassHandler() {
|
public dbBaseClassHandler() {
|
||||||
this.localClass = BaseClass.class;
|
this.localClass = BaseClass.class;
|
||||||
this.localObjectType = Enum.GameObjectType.BaseClass;
|
this.localObjectType = mbEnums.GameObjectType.BaseClass;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BaseClass GET_BASE_CLASS(final int id) {
|
public BaseClass GET_BASE_CLASS(final int id) {
|
||||||
|
|||||||
@@ -1,51 +0,0 @@
|
|||||||
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
|
||||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
|
||||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
|
||||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
|
||||||
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
|
||||||
// Magicbane Emulator Project © 2013 - 2022
|
|
||||||
// www.magicbane.com
|
|
||||||
|
|
||||||
|
|
||||||
package engine.db.handlers;
|
|
||||||
|
|
||||||
import engine.gameManager.DbManager;
|
|
||||||
import engine.objects.Boon;
|
|
||||||
import org.pmw.tinylog.Logger;
|
|
||||||
|
|
||||||
import java.sql.Connection;
|
|
||||||
import java.sql.PreparedStatement;
|
|
||||||
import java.sql.ResultSet;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
|
|
||||||
public class dbBoonHandler extends dbHandlerBase {
|
|
||||||
|
|
||||||
public dbBoonHandler() {
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public ArrayList<Boon> GET_BOON_AMOUNTS_FOR_ITEMBASE(int itemBaseUUID) {
|
|
||||||
|
|
||||||
ArrayList<Boon> boons = new ArrayList<>();
|
|
||||||
Boon thisBoon;
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `static_item_boons` WHERE `itemBaseID` = ?")) {
|
|
||||||
|
|
||||||
preparedStatement.setInt(1, itemBaseUUID);
|
|
||||||
|
|
||||||
ResultSet rs = preparedStatement.executeQuery();
|
|
||||||
|
|
||||||
while (rs.next()) {
|
|
||||||
thisBoon = new Boon(rs);
|
|
||||||
boons.add(thisBoon);
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
return boons;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -9,12 +9,13 @@
|
|||||||
|
|
||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.Enum;
|
import engine.gameManager.BuildingManager;
|
||||||
import engine.Enum.DbObjectType;
|
|
||||||
import engine.Enum.ProtectionState;
|
|
||||||
import engine.Enum.TaxType;
|
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
import engine.math.Vector3fImmutable;
|
import engine.math.Vector3fImmutable;
|
||||||
|
import engine.mbEnums;
|
||||||
|
import engine.mbEnums.DbObjectType;
|
||||||
|
import engine.mbEnums.ProtectionState;
|
||||||
|
import engine.mbEnums.TaxType;
|
||||||
import engine.objects.*;
|
import engine.objects.*;
|
||||||
import org.joda.time.DateTime;
|
import org.joda.time.DateTime;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
@@ -27,12 +28,13 @@ import java.time.LocalDateTime;
|
|||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
public class dbBuildingHandler extends dbHandlerBase {
|
public class dbBuildingHandler extends dbHandlerBase {
|
||||||
|
|
||||||
public dbBuildingHandler() {
|
public dbBuildingHandler() {
|
||||||
this.localClass = Building.class;
|
this.localClass = Building.class;
|
||||||
this.localObjectType = Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
|
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Building CREATE_BUILDING(int parentZoneID, int OwnerUUID, String name, int meshUUID,
|
public Building CREATE_BUILDING(int parentZoneID, int OwnerUUID, String name, int meshUUID,
|
||||||
@@ -88,14 +90,12 @@ public class dbBuildingHandler extends dbHandlerBase {
|
|||||||
return removeFromBuildings(b);
|
return removeFromBuildings(b);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ArrayList<Building> GET_ALL_BUILDINGS_FOR_ZONE(Zone zone) {
|
public ArrayList<Building> GET_ALL_BUILDINGS() {
|
||||||
|
|
||||||
ArrayList<Building> buildings = new ArrayList<>();
|
ArrayList<Building> buildings = new ArrayList<>();
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_building`.*, `object`.`parent` FROM `object` INNER JOIN `obj_building` ON `obj_building`.`UID` = `object`.`UID` WHERE `object`.`parent` = ?;")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_building`.*, `object`.`parent` FROM `object` INNER JOIN `obj_building` ON `obj_building`.`UID` = `object`.`UID` ORDER BY `object`.`UID` ASC;")) {
|
||||||
|
|
||||||
preparedStatement.setLong(1, zone.getObjectUUID());
|
|
||||||
|
|
||||||
ResultSet rs = preparedStatement.executeQuery();
|
ResultSet rs = preparedStatement.executeQuery();
|
||||||
buildings = getObjectsFromRs(rs, 1000);
|
buildings = getObjectsFromRs(rs, 1000);
|
||||||
@@ -112,7 +112,7 @@ public class dbBuildingHandler extends dbHandlerBase {
|
|||||||
if (uuid == 0)
|
if (uuid == 0)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
Building building = (Building) DbManager.getFromCache(Enum.GameObjectType.Building, uuid);
|
Building building = (Building) DbManager.getFromCache(mbEnums.GameObjectType.Building, uuid);
|
||||||
|
|
||||||
if (building != null)
|
if (building != null)
|
||||||
return building;
|
return building;
|
||||||
@@ -425,26 +425,28 @@ public class dbBuildingHandler extends dbHandlerBase {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LOAD_ALL_FRIENDS_FOR_BUILDING(Building building) {
|
public void LOAD_BUILDING_FRIENDS() {
|
||||||
|
|
||||||
if (building == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `dyn_building_friends` WHERE `buildingUID` = ?")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `dyn_building_friends`")) {
|
||||||
|
|
||||||
preparedStatement.setInt(1, building.getObjectUUID());
|
|
||||||
ResultSet rs = preparedStatement.executeQuery();
|
ResultSet rs = preparedStatement.executeQuery();
|
||||||
|
|
||||||
while (rs.next()) {
|
while (rs.next()) {
|
||||||
BuildingFriends friend = new BuildingFriends(rs);
|
BuildingFriends friend = new BuildingFriends(rs);
|
||||||
switch (friend.getFriendType()) {
|
|
||||||
|
// Create map if it does not yet exist
|
||||||
|
|
||||||
|
if (!BuildingManager._buildingFriends.containsKey(friend.buildingUID))
|
||||||
|
BuildingManager._buildingFriends.put(friend.buildingUID, new ConcurrentHashMap<>());
|
||||||
|
|
||||||
|
switch (friend.friendType) {
|
||||||
case 7:
|
case 7:
|
||||||
building.getFriends().put(friend.getPlayerUID(), friend);
|
BuildingManager._buildingFriends.get(friend.buildingUID).put(friend.playerUID, friend);
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
case 9:
|
case 9:
|
||||||
building.getFriends().put(friend.getGuildUID(), friend);
|
BuildingManager._buildingFriends.get(friend.buildingUID).put(friend.guildUID, friend);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -455,26 +457,29 @@ public class dbBuildingHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LOAD_ALL_CONDEMNED_FOR_BUILDING(Building building) {
|
public void LOAD_BUILDING_CONDEMNED() {
|
||||||
|
|
||||||
if (building == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `dyn_building_condemned` WHERE `buildingUID` = ?")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `dyn_building_condemned`")) {
|
||||||
|
|
||||||
preparedStatement.setInt(1, building.getObjectUUID());
|
|
||||||
ResultSet rs = preparedStatement.executeQuery();
|
ResultSet rs = preparedStatement.executeQuery();
|
||||||
|
|
||||||
while (rs.next()) {
|
while (rs.next()) {
|
||||||
|
|
||||||
Condemned condemned = new Condemned(rs);
|
Condemned condemned = new Condemned(rs);
|
||||||
switch (condemned.getFriendType()) {
|
|
||||||
|
// Create map if it does not yet exist
|
||||||
|
|
||||||
|
if (!BuildingManager._buildingCondemned.containsKey(condemned.buildingUUID))
|
||||||
|
BuildingManager._buildingCondemned.put(condemned.buildingUUID, new ConcurrentHashMap<>());
|
||||||
|
|
||||||
|
switch (condemned.friendType) {
|
||||||
case 2:
|
case 2:
|
||||||
building.getCondemned().put(condemned.getPlayerUID(), condemned);
|
BuildingManager._buildingCondemned.get(condemned.buildingUUID).put(condemned.playerUID, condemned);
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
case 5:
|
case 5:
|
||||||
building.getCondemned().put(condemned.getGuildUID(), condemned);
|
BuildingManager._buildingCondemned.get(condemned.buildingUUID).put(condemned.guildUID, condemned);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -484,35 +489,27 @@ public class dbBuildingHandler extends dbHandlerBase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ArrayList<Vector3fImmutable> LOAD_PATROL_POINTS(Building building) {
|
public void LOAD_BARRACKS_PATROL_POINTS() {
|
||||||
|
|
||||||
if (building == null)
|
|
||||||
return null;
|
|
||||||
|
|
||||||
ArrayList<Vector3fImmutable> patrolPoints = new ArrayList<>();
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `dyn_building_patrol_points` WHERE `buildingUID` = ?")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `dyn_building_patrol_points`")) {
|
||||||
|
|
||||||
preparedStatement.setInt(1, building.getObjectUUID());
|
|
||||||
|
|
||||||
|
|
||||||
ResultSet rs = preparedStatement.executeQuery();
|
ResultSet rs = preparedStatement.executeQuery();
|
||||||
|
|
||||||
while (rs.next()) {
|
while (rs.next()) {
|
||||||
float x1 = rs.getFloat("patrolX");
|
|
||||||
float y1 = rs.getFloat("patrolY");
|
int buildingUUID = rs.getInt("buildingUID");
|
||||||
float z1 = rs.getFloat("patrolZ");
|
|
||||||
Vector3fImmutable patrolPoint = new Vector3fImmutable(x1, y1, z1);
|
if (!BuildingManager._buildingPatrolPoints.containsKey(buildingUUID))
|
||||||
patrolPoints.add(patrolPoint);
|
BuildingManager._buildingPatrolPoints.put(buildingUUID, new ArrayList<>());
|
||||||
|
|
||||||
|
Vector3fImmutable patrolPoint = new Vector3fImmutable(rs.getFloat("patrolX"), rs.getFloat("patrolY"), rs.getFloat("patrolZ"));
|
||||||
|
BuildingManager._buildingPatrolPoints.get(buildingUUID).add(patrolPoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
Logger.error(e);
|
Logger.error(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
return patrolPoints;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean ADD_TO_CONDEMNLIST(final long parentUID, final long playerUID, final long guildID, final int friendType) {
|
public boolean ADD_TO_CONDEMNLIST(final long parentUID, final long playerUID, final long guildID, final int friendType) {
|
||||||
@@ -722,10 +719,10 @@ public class dbBuildingHandler extends dbHandlerBase {
|
|||||||
+ "WHERE`buildingUID` = ? AND `playerUID` = ? AND `guildUID` = ? AND `friendType` = ?")) {
|
+ "WHERE`buildingUID` = ? AND `playerUID` = ? AND `guildUID` = ? AND `friendType` = ?")) {
|
||||||
|
|
||||||
preparedStatement.setBoolean(1, active);
|
preparedStatement.setBoolean(1, active);
|
||||||
preparedStatement.setInt(2, condemn.getParent());
|
preparedStatement.setInt(2, condemn.buildingUUID);
|
||||||
preparedStatement.setInt(3, condemn.getPlayerUID());
|
preparedStatement.setInt(3, condemn.playerUID);
|
||||||
preparedStatement.setInt(4, condemn.getGuildUID());
|
preparedStatement.setInt(4, condemn.guildUID);
|
||||||
preparedStatement.setInt(5, condemn.getFriendType());
|
preparedStatement.setInt(5, condemn.friendType);
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
return (preparedStatement.executeUpdate() > 0);
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
|
import engine.mbEnums;
|
||||||
import engine.objects.BuildingLocation;
|
import engine.objects.BuildingLocation;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
|
|
||||||
@@ -23,7 +24,7 @@ public class dbBuildingLocationHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public dbBuildingLocationHandler() {
|
public dbBuildingLocationHandler() {
|
||||||
this.localClass = BuildingLocation.class;
|
this.localClass = BuildingLocation.class;
|
||||||
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
|
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public ArrayList<BuildingLocation> LOAD_BUILDING_LOCATIONS() {
|
public ArrayList<BuildingLocation> LOAD_BUILDING_LOCATIONS() {
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
|
import engine.mbEnums;
|
||||||
import engine.objects.Account;
|
import engine.objects.Account;
|
||||||
import engine.objects.PlayerCharacter;
|
import engine.objects.PlayerCharacter;
|
||||||
import engine.session.CSSession;
|
import engine.session.CSSession;
|
||||||
@@ -26,7 +27,7 @@ public class dbCSSessionHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public dbCSSessionHandler() {
|
public dbCSSessionHandler() {
|
||||||
this.localClass = CSSession.class;
|
this.localClass = CSSession.class;
|
||||||
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
|
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean ADD_CSSESSION(String secKey, Account acc, InetAddress inet, String machineID) {
|
public boolean ADD_CSSESSION(String secKey, Account acc, InetAddress inet, String machineID) {
|
||||||
|
|||||||
@@ -9,8 +9,8 @@
|
|||||||
|
|
||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.Enum;
|
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
|
import engine.mbEnums;
|
||||||
import engine.objects.CharacterPower;
|
import engine.objects.CharacterPower;
|
||||||
import engine.objects.PlayerCharacter;
|
import engine.objects.PlayerCharacter;
|
||||||
import engine.server.MBServerStatics;
|
import engine.server.MBServerStatics;
|
||||||
@@ -23,7 +23,7 @@ public class dbCharacterPowerHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public dbCharacterPowerHandler() {
|
public dbCharacterPowerHandler() {
|
||||||
this.localClass = CharacterPower.class;
|
this.localClass = CharacterPower.class;
|
||||||
this.localObjectType = Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
|
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public CharacterPower ADD_CHARACTER_POWER(CharacterPower toAdd) {
|
public CharacterPower ADD_CHARACTER_POWER(CharacterPower toAdd) {
|
||||||
@@ -74,7 +74,7 @@ public class dbCharacterPowerHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public CharacterPower GET_CHARACTER_POWER(int objectUUID) {
|
public CharacterPower GET_CHARACTER_POWER(int objectUUID) {
|
||||||
|
|
||||||
CharacterPower characterPower = (CharacterPower) DbManager.getFromCache(Enum.GameObjectType.CharacterPower, objectUUID);
|
CharacterPower characterPower = (CharacterPower) DbManager.getFromCache(mbEnums.GameObjectType.CharacterPower, objectUUID);
|
||||||
|
|
||||||
if (characterPower != null)
|
if (characterPower != null)
|
||||||
return characterPower;
|
return characterPower;
|
||||||
|
|||||||
@@ -9,8 +9,8 @@
|
|||||||
|
|
||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.Enum;
|
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
|
import engine.mbEnums;
|
||||||
import engine.objects.CharacterRune;
|
import engine.objects.CharacterRune;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
|
|
||||||
@@ -21,7 +21,7 @@ public class dbCharacterRuneHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public dbCharacterRuneHandler() {
|
public dbCharacterRuneHandler() {
|
||||||
this.localClass = CharacterRune.class;
|
this.localClass = CharacterRune.class;
|
||||||
this.localObjectType = Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
|
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public CharacterRune ADD_CHARACTER_RUNE(final CharacterRune toAdd) {
|
public CharacterRune ADD_CHARACTER_RUNE(final CharacterRune toAdd) {
|
||||||
@@ -49,7 +49,7 @@ public class dbCharacterRuneHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public CharacterRune GET_CHARACTER_RUNE(int runeID) {
|
public CharacterRune GET_CHARACTER_RUNE(int runeID) {
|
||||||
|
|
||||||
CharacterRune characterRune = (CharacterRune) DbManager.getFromCache(Enum.GameObjectType.CharacterRune, runeID);
|
CharacterRune characterRune = (CharacterRune) DbManager.getFromCache(mbEnums.GameObjectType.CharacterRune, runeID);
|
||||||
|
|
||||||
if (characterRune != null)
|
if (characterRune != null)
|
||||||
return characterRune;
|
return characterRune;
|
||||||
|
|||||||
@@ -9,8 +9,8 @@
|
|||||||
|
|
||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.Enum;
|
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
|
import engine.mbEnums;
|
||||||
import engine.objects.AbstractCharacter;
|
import engine.objects.AbstractCharacter;
|
||||||
import engine.objects.CharacterSkill;
|
import engine.objects.CharacterSkill;
|
||||||
import engine.objects.PlayerCharacter;
|
import engine.objects.PlayerCharacter;
|
||||||
@@ -24,7 +24,7 @@ public class dbCharacterSkillHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public dbCharacterSkillHandler() {
|
public dbCharacterSkillHandler() {
|
||||||
this.localClass = CharacterSkill.class;
|
this.localClass = CharacterSkill.class;
|
||||||
this.localObjectType = Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
|
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public CharacterSkill ADD_SKILL(CharacterSkill toAdd) {
|
public CharacterSkill ADD_SKILL(CharacterSkill toAdd) {
|
||||||
@@ -72,7 +72,7 @@ public class dbCharacterSkillHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public CharacterSkill GET_SKILL(final int objectUUID) {
|
public CharacterSkill GET_SKILL(final int objectUUID) {
|
||||||
|
|
||||||
CharacterSkill characterSkill = (CharacterSkill) DbManager.getFromCache(Enum.GameObjectType.CharacterSkill, objectUUID);
|
CharacterSkill characterSkill = (CharacterSkill) DbManager.getFromCache(mbEnums.GameObjectType.CharacterSkill, objectUUID);
|
||||||
|
|
||||||
if (characterSkill != null)
|
if (characterSkill != null)
|
||||||
return characterSkill;
|
return characterSkill;
|
||||||
@@ -95,7 +95,7 @@ public class dbCharacterSkillHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
ConcurrentHashMap<String, CharacterSkill> characterSkills = new ConcurrentHashMap<>(MBServerStatics.CHM_INIT_CAP, MBServerStatics.CHM_LOAD, MBServerStatics.CHM_THREAD_LOW);
|
ConcurrentHashMap<String, CharacterSkill> characterSkills = new ConcurrentHashMap<>(MBServerStatics.CHM_INIT_CAP, MBServerStatics.CHM_LOAD, MBServerStatics.CHM_THREAD_LOW);
|
||||||
|
|
||||||
if (ac == null || (!(ac.getObjectType().equals(Enum.GameObjectType.PlayerCharacter))))
|
if (ac == null || (!(ac.getObjectType().equals(mbEnums.GameObjectType.PlayerCharacter))))
|
||||||
return characterSkills;
|
return characterSkills;
|
||||||
|
|
||||||
PlayerCharacter playerCharacter = (PlayerCharacter) ac;
|
PlayerCharacter playerCharacter = (PlayerCharacter) ac;
|
||||||
|
|||||||
@@ -9,8 +9,8 @@
|
|||||||
|
|
||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.Enum;
|
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
|
import engine.mbEnums;
|
||||||
import engine.objects.AbstractGameObject;
|
import engine.objects.AbstractGameObject;
|
||||||
import engine.objects.Building;
|
import engine.objects.Building;
|
||||||
import engine.objects.City;
|
import engine.objects.City;
|
||||||
@@ -25,7 +25,7 @@ public class dbCityHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public dbCityHandler() {
|
public dbCityHandler() {
|
||||||
this.localClass = City.class;
|
this.localClass = City.class;
|
||||||
this.localObjectType = Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
|
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void addObject(ArrayList<AbstractGameObject> list, ResultSet rs) throws SQLException {
|
public static void addObject(ArrayList<AbstractGameObject> list, ResultSet rs) throws SQLException {
|
||||||
@@ -34,16 +34,19 @@ public class dbCityHandler extends dbHandlerBase {
|
|||||||
case "zone":
|
case "zone":
|
||||||
Zone zone = new Zone(rs);
|
Zone zone = new Zone(rs);
|
||||||
DbManager.addToCache(zone);
|
DbManager.addToCache(zone);
|
||||||
|
zone.runAfterLoad();
|
||||||
list.add(zone);
|
list.add(zone);
|
||||||
break;
|
break;
|
||||||
case "building":
|
case "building":
|
||||||
Building building = new Building(rs);
|
Building building = new Building(rs);
|
||||||
DbManager.addToCache(building);
|
DbManager.addToCache(building);
|
||||||
|
building.runAfterLoad();
|
||||||
list.add(building);
|
list.add(building);
|
||||||
break;
|
break;
|
||||||
case "city":
|
case "city":
|
||||||
City city = new City(rs);
|
City city = new City(rs);
|
||||||
DbManager.addToCache(city);
|
DbManager.addToCache(city);
|
||||||
|
city.runAfterLoad();
|
||||||
list.add(city);
|
list.add(city);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -96,14 +99,12 @@ public class dbCityHandler extends dbHandlerBase {
|
|||||||
return objectList;
|
return objectList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ArrayList<City> GET_CITIES_BY_ZONE(final int objectUUID) {
|
public ArrayList<City> GET_ALL_CITIES() {
|
||||||
|
|
||||||
ArrayList<City> cityList = new ArrayList<>();
|
ArrayList<City> cityList = new ArrayList<>();
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_city`.*, `object`.`parent` FROM `obj_city` INNER JOIN `object` ON `object`.`UID` = `obj_city`.`UID` WHERE `object`.`parent`=?;")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_city`.*, `object`.`parent` FROM `obj_city` INNER JOIN `object` ON `object`.`UID` = `obj_city`.`UID` ORDER BY `object`.`UID` ASC;")) {
|
||||||
|
|
||||||
preparedStatement.setLong(1, objectUUID);
|
|
||||||
|
|
||||||
ResultSet rs = preparedStatement.executeQuery();
|
ResultSet rs = preparedStatement.executeQuery();
|
||||||
cityList = getObjectsFromRs(rs, 100);
|
cityList = getObjectsFromRs(rs, 100);
|
||||||
@@ -117,7 +118,7 @@ public class dbCityHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public City GET_CITY(final int cityId) {
|
public City GET_CITY(final int cityId) {
|
||||||
|
|
||||||
City city = (City) DbManager.getFromCache(Enum.GameObjectType.City, cityId);
|
City city = (City) DbManager.getFromCache(mbEnums.GameObjectType.City, cityId);
|
||||||
|
|
||||||
if (city != null)
|
if (city != null)
|
||||||
return city;
|
return city;
|
||||||
|
|||||||
@@ -9,11 +9,11 @@
|
|||||||
|
|
||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.Enum;
|
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
|
import engine.mbEnums;
|
||||||
import engine.objects.Contract;
|
import engine.objects.Contract;
|
||||||
import engine.objects.ItemBase;
|
import engine.objects.Item;
|
||||||
import engine.objects.MobEquipment;
|
import engine.objects.MobLoot;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
@@ -25,12 +25,12 @@ public class dbContractHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public dbContractHandler() {
|
public dbContractHandler() {
|
||||||
this.localClass = Contract.class;
|
this.localClass = Contract.class;
|
||||||
this.localObjectType = Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
|
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Contract GET_CONTRACT(final int objectUUID) {
|
public Contract GET_CONTRACT(final int objectUUID) {
|
||||||
|
|
||||||
Contract contract = (Contract) DbManager.getFromCache(Enum.GameObjectType.Contract, objectUUID);
|
Contract contract = (Contract) DbManager.getFromCache(mbEnums.GameObjectType.Contract, objectUUID);
|
||||||
|
|
||||||
if (contract != null)
|
if (contract != null)
|
||||||
return contract;
|
return contract;
|
||||||
@@ -63,33 +63,12 @@ public class dbContractHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
while (rs.next()) {
|
while (rs.next()) {
|
||||||
|
|
||||||
//handle item base
|
int templateID = rs.getInt("templateID");
|
||||||
int itemBaseID = rs.getInt("itembaseID");
|
|
||||||
|
|
||||||
ItemBase ib = ItemBase.getItemBase(itemBaseID);
|
Item item = new Item(templateID);
|
||||||
|
item.objectUUID = MobLoot.lastNegativeID.decrementAndGet();
|
||||||
|
contract.getSellInventory().add(item);
|
||||||
|
|
||||||
if (ib != null) {
|
|
||||||
|
|
||||||
MobEquipment me = new MobEquipment(ib, 0, 0);
|
|
||||||
contract.getSellInventory().add(me);
|
|
||||||
|
|
||||||
//handle magic effects
|
|
||||||
String prefix = rs.getString("prefix");
|
|
||||||
int pRank = rs.getInt("pRank");
|
|
||||||
String suffix = rs.getString("suffix");
|
|
||||||
int sRank = rs.getInt("sRank");
|
|
||||||
|
|
||||||
if (prefix != null) {
|
|
||||||
me.setPrefix(prefix, pRank);
|
|
||||||
me.setIsID(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (suffix != null) {
|
|
||||||
me.setSuffix(suffix, sRank);
|
|
||||||
me.setIsID(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
Logger.error(e);
|
Logger.error(e);
|
||||||
@@ -127,12 +106,12 @@ public class dbContractHandler extends dbHandlerBase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean updateAllowedBuildings(final Contract con, final long slotbitvalue) {
|
public boolean updateAllowedBuildings(final Contract con) {
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `static_npc_contract` SET `allowedBuildingTypeID`=? WHERE `contractID`=?")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `static_npc_contract` SET `slotInBuildings`=? WHERE `contractID`=?")) {
|
||||||
|
|
||||||
preparedStatement.setLong(1, slotbitvalue);
|
preparedStatement.setString(1, mbEnums.asString(con.allowedBuildings));
|
||||||
preparedStatement.setInt(2, con.getContractID());
|
preparedStatement.setInt(2, con.getContractID());
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
return (preparedStatement.executeUpdate() > 0);
|
||||||
@@ -147,7 +126,7 @@ public class dbContractHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `static_npc_contract` SET `contractID`=?, `name`=?, "
|
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `static_npc_contract` SET `contractID`=?, `name`=?, "
|
||||||
+ "`mobbaseID`=?, `classID`=?, vendorDialog=?, iconID=?, allowedBuildingTypeID=? WHERE `ID`=?")) {
|
+ "`mobbaseID`=?, `classID`=?, vendorDialog=?, iconID=?, slotInBuildings=? WHERE `ID`=?")) {
|
||||||
|
|
||||||
preparedStatement.setInt(1, con.getContractID());
|
preparedStatement.setInt(1, con.getContractID());
|
||||||
preparedStatement.setString(2, con.getName());
|
preparedStatement.setString(2, con.getName());
|
||||||
@@ -156,7 +135,7 @@ public class dbContractHandler extends dbHandlerBase {
|
|||||||
preparedStatement.setInt(5, (con.getVendorDialog() != null) ? con.getVendorDialog().getObjectUUID() : 0);
|
preparedStatement.setInt(5, (con.getVendorDialog() != null) ? con.getVendorDialog().getObjectUUID() : 0);
|
||||||
preparedStatement.setInt(6, con.getIconID());
|
preparedStatement.setInt(6, con.getIconID());
|
||||||
preparedStatement.setInt(8, con.getObjectUUID());
|
preparedStatement.setInt(8, con.getObjectUUID());
|
||||||
preparedStatement.setLong(7, con.getAllowedBuildings().toLong());
|
preparedStatement.setString(7, mbEnums.asString(con.allowedBuildings));
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
return (preparedStatement.executeUpdate() > 0);
|
||||||
|
|
||||||
|
|||||||
@@ -9,9 +9,9 @@
|
|||||||
|
|
||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.Enum;
|
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
import engine.gameManager.PowersManager;
|
import engine.gameManager.PowersManager;
|
||||||
|
import engine.mbEnums;
|
||||||
import engine.powers.EffectsBase;
|
import engine.powers.EffectsBase;
|
||||||
import engine.powers.effectmodifiers.*;
|
import engine.powers.effectmodifiers.*;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
@@ -63,7 +63,7 @@ public class dbEffectsBaseHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
IDString = rs.getString("IDString");
|
IDString = rs.getString("IDString");
|
||||||
EffectsBase effectBase = PowersManager.getEffectByIDString(IDString);
|
EffectsBase effectBase = PowersManager.getEffectByIDString(IDString);
|
||||||
Enum.ModType modifier = Enum.ModType.GetModType(rs.getString("modType"));
|
mbEnums.ModType modifier = mbEnums.ModType.GetModType(rs.getString("modType"));
|
||||||
|
|
||||||
//combine item prefix and suffix effect modifiers
|
//combine item prefix and suffix effect modifiers
|
||||||
|
|
||||||
@@ -86,7 +86,7 @@ public class dbEffectsBaseHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static AbstractEffectModifier getCombinedModifiers(AbstractEffectModifier abstractEffectModifier, ResultSet rs, EffectsBase effectBase, Enum.ModType modifier) throws SQLException {
|
private static AbstractEffectModifier getCombinedModifiers(AbstractEffectModifier abstractEffectModifier, ResultSet rs, EffectsBase effectBase, mbEnums.ModType modifier) throws SQLException {
|
||||||
switch (modifier) {
|
switch (modifier) {
|
||||||
case AdjustAboveDmgCap:
|
case AdjustAboveDmgCap:
|
||||||
abstractEffectModifier = new AdjustAboveDmgCapEffectModifier(rs);
|
abstractEffectModifier = new AdjustAboveDmgCapEffectModifier(rs);
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
|
import engine.mbEnums;
|
||||||
import engine.objects.EffectsResourceCosts;
|
import engine.objects.EffectsResourceCosts;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
|
|
||||||
@@ -23,7 +24,7 @@ public class dbEffectsResourceCostHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public dbEffectsResourceCostHandler() {
|
public dbEffectsResourceCostHandler() {
|
||||||
this.localClass = EffectsResourceCosts.class;
|
this.localClass = EffectsResourceCosts.class;
|
||||||
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
|
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public ArrayList<EffectsResourceCosts> GET_ALL_EFFECT_RESOURCES(String idString) {
|
public ArrayList<EffectsResourceCosts> GET_ALL_EFFECT_RESOURCES(String idString) {
|
||||||
|
|||||||
@@ -9,9 +9,9 @@
|
|||||||
|
|
||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.Enum;
|
|
||||||
import engine.Enum.GuildHistoryType;
|
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
|
import engine.mbEnums;
|
||||||
|
import engine.mbEnums.GuildHistoryType;
|
||||||
import engine.objects.*;
|
import engine.objects.*;
|
||||||
import engine.server.world.WorldServer;
|
import engine.server.world.WorldServer;
|
||||||
import org.joda.time.DateTime;
|
import org.joda.time.DateTime;
|
||||||
@@ -24,7 +24,7 @@ public class dbGuildHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public dbGuildHandler() {
|
public dbGuildHandler() {
|
||||||
this.localClass = Guild.class;
|
this.localClass = Guild.class;
|
||||||
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
|
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ArrayList<PlayerCharacter> GET_GUILD_BANISHED(final int id) {
|
public static ArrayList<PlayerCharacter> GET_GUILD_BANISHED(final int id) {
|
||||||
@@ -276,7 +276,7 @@ public class dbGuildHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public Guild GET_GUILD(int id) {
|
public Guild GET_GUILD(int id) {
|
||||||
|
|
||||||
Guild guild = (Guild) DbManager.getFromCache(Enum.GameObjectType.Guild, id);
|
Guild guild = (Guild) DbManager.getFromCache(mbEnums.GameObjectType.Guild, id);
|
||||||
|
|
||||||
if (guild != null)
|
if (guild != null)
|
||||||
return guild;
|
return guild;
|
||||||
@@ -695,24 +695,4 @@ public class dbGuildHandler extends dbHandlerBase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO uncomment this when finished with guild history warehouse integration
|
|
||||||
// public HashMap<Integer, GuildRecord> GET_WAREHOUSE_GUILD_HISTORY(){
|
|
||||||
//
|
|
||||||
// HashMap<Integer, GuildRecord> tempMap = new HashMap<>();
|
|
||||||
// prepareCallable("SELECT * FROM `warehouse_guildhistory` WHERE `eventType` = 'CREATE'");
|
|
||||||
// try {
|
|
||||||
// ResultSet rs = executeQuery();
|
|
||||||
//
|
|
||||||
// while (rs.next()) {
|
|
||||||
// GuildRecord guildRecord = new GuildRecord(rs);
|
|
||||||
// tempMap.put(guildRecord.guildID, guildRecord);
|
|
||||||
// }
|
|
||||||
// }catch (Exception e){
|
|
||||||
// Logger.error(e);
|
|
||||||
// }
|
|
||||||
// return tempMap;
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,10 +9,10 @@
|
|||||||
|
|
||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.Enum;
|
|
||||||
import engine.Enum.GameObjectType;
|
|
||||||
import engine.gameManager.ConfigManager;
|
import engine.gameManager.ConfigManager;
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
|
import engine.mbEnums;
|
||||||
|
import engine.mbEnums.GameObjectType;
|
||||||
import engine.objects.AbstractGameObject;
|
import engine.objects.AbstractGameObject;
|
||||||
import engine.objects.AbstractWorldObject;
|
import engine.objects.AbstractWorldObject;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
@@ -42,7 +42,7 @@ public abstract class dbHandlerBase {
|
|||||||
// Only call runAfterLoad() for objects instanced on the world server
|
// Only call runAfterLoad() for objects instanced on the world server
|
||||||
|
|
||||||
if ((abstractGameObject != null && abstractGameObject instanceof AbstractWorldObject) &&
|
if ((abstractGameObject != null && abstractGameObject instanceof AbstractWorldObject) &&
|
||||||
(ConfigManager.serverType.equals(Enum.ServerType.WORLDSERVER) ||
|
(ConfigManager.serverType.equals(mbEnums.ServerType.WORLDSERVER) ||
|
||||||
(abstractGameObject.getObjectType() == GameObjectType.Guild)))
|
(abstractGameObject.getObjectType() == GameObjectType.Guild)))
|
||||||
((AbstractWorldObject) abstractGameObject).runAfterLoad();
|
((AbstractWorldObject) abstractGameObject).runAfterLoad();
|
||||||
|
|
||||||
|
|||||||
@@ -1,43 +0,0 @@
|
|||||||
package engine.db.handlers;
|
|
||||||
|
|
||||||
import engine.InterestManagement.HeightMap;
|
|
||||||
import engine.gameManager.DbManager;
|
|
||||||
import org.pmw.tinylog.Logger;
|
|
||||||
|
|
||||||
import java.sql.Connection;
|
|
||||||
import java.sql.PreparedStatement;
|
|
||||||
import java.sql.ResultSet;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
|
|
||||||
public class dbHeightMapHandler extends dbHandlerBase {
|
|
||||||
|
|
||||||
public dbHeightMapHandler() {
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void LOAD_ALL_HEIGHTMAPS() {
|
|
||||||
|
|
||||||
HeightMap thisHeightmap;
|
|
||||||
HeightMap.heightMapsCreated = 0;
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM static_zone_heightmap INNER JOIN static_zone_size ON static_zone_size.loadNum = static_zone_heightmap.zoneLoadID")) {
|
|
||||||
|
|
||||||
ResultSet rs = preparedStatement.executeQuery();
|
|
||||||
|
|
||||||
while (rs.next()) {
|
|
||||||
thisHeightmap = new HeightMap(rs);
|
|
||||||
|
|
||||||
if (thisHeightmap.getHeightmapImage() == null) {
|
|
||||||
Logger.info("Imagemap for " + thisHeightmap.getHeightMapID() + " was null");
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,138 +0,0 @@
|
|||||||
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
|
||||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
|
||||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
|
||||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
|
||||||
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
|
||||||
// Magicbane Emulator Project © 2013 - 2022
|
|
||||||
// www.magicbane.com
|
|
||||||
|
|
||||||
|
|
||||||
package engine.db.handlers;
|
|
||||||
|
|
||||||
import engine.gameManager.DbManager;
|
|
||||||
import engine.objects.ItemBase;
|
|
||||||
import org.pmw.tinylog.Logger;
|
|
||||||
|
|
||||||
import java.sql.Connection;
|
|
||||||
import java.sql.PreparedStatement;
|
|
||||||
import java.sql.ResultSet;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
public class dbItemBaseHandler extends dbHandlerBase {
|
|
||||||
|
|
||||||
public dbItemBaseHandler() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void LOAD_BAKEDINSTATS(ItemBase itemBase) {
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `static_item_bakedinstat` WHERE `itemID` = ?")) {
|
|
||||||
|
|
||||||
preparedStatement.setInt(1, itemBase.getUUID());
|
|
||||||
ResultSet rs = preparedStatement.executeQuery();
|
|
||||||
|
|
||||||
while (rs.next()) {
|
|
||||||
if (rs.getBoolean("fromUse"))
|
|
||||||
itemBase.getUsedStats().put(rs.getInt("token"), rs.getInt("numTrains"));
|
|
||||||
else
|
|
||||||
itemBase.getBakedInStats().put(rs.getInt("token"), rs.getInt("numTrains"));
|
|
||||||
}
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void LOAD_ANIMATIONS(ItemBase itemBase) {
|
|
||||||
|
|
||||||
ArrayList<Integer> tempList = new ArrayList<>();
|
|
||||||
ArrayList<Integer> tempListOff = new ArrayList<>();
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `static_itembase_animations` WHERE `itemBaseUUID` = ?")) {
|
|
||||||
|
|
||||||
preparedStatement.setInt(1, itemBase.getUUID());
|
|
||||||
ResultSet rs = preparedStatement.executeQuery();
|
|
||||||
|
|
||||||
while (rs.next()) {
|
|
||||||
int animation = rs.getInt("animation");
|
|
||||||
boolean rightHand = rs.getBoolean("rightHand");
|
|
||||||
|
|
||||||
if (rightHand)
|
|
||||||
tempList.add(animation);
|
|
||||||
else
|
|
||||||
tempListOff.add(animation);
|
|
||||||
}
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
itemBase.setAnimations(tempList);
|
|
||||||
itemBase.setOffHandAnimations(tempListOff);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void LOAD_ALL_ITEMBASES() {
|
|
||||||
|
|
||||||
ItemBase itemBase;
|
|
||||||
int recordsRead = 0;
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM static_itembase")) {
|
|
||||||
|
|
||||||
ResultSet rs = preparedStatement.executeQuery();
|
|
||||||
|
|
||||||
while (rs.next()) {
|
|
||||||
recordsRead++;
|
|
||||||
itemBase = new ItemBase(rs);
|
|
||||||
ItemBase.addToCache(itemBase);
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
Logger.info("read: " + recordsRead + " cached: " + ItemBase.getUUIDCache().size());
|
|
||||||
}
|
|
||||||
|
|
||||||
public HashMap<Integer, ArrayList<Integer>> LOAD_RUNES_FOR_NPC_AND_MOBS() {
|
|
||||||
|
|
||||||
HashMap<Integer, ArrayList<Integer>> runeSets = new HashMap<>();
|
|
||||||
int runeSetID;
|
|
||||||
int runeBaseID;
|
|
||||||
int recordsRead = 0;
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM static_npc_runeSet")) {
|
|
||||||
|
|
||||||
ResultSet rs = preparedStatement.executeQuery();
|
|
||||||
|
|
||||||
while (rs.next()) {
|
|
||||||
|
|
||||||
recordsRead++;
|
|
||||||
|
|
||||||
runeSetID = rs.getInt("runeSet");
|
|
||||||
runeBaseID = rs.getInt("runeBase");
|
|
||||||
|
|
||||||
if (runeSets.get(runeSetID) == null) {
|
|
||||||
ArrayList<Integer> runeList = new ArrayList<>();
|
|
||||||
runeList.add(runeBaseID);
|
|
||||||
runeSets.put(runeSetID, runeList);
|
|
||||||
} else {
|
|
||||||
ArrayList<Integer> runeList = runeSets.get(runeSetID);
|
|
||||||
runeList.add(runeSetID);
|
|
||||||
runeSets.put(runeSetID, runeList);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
return runeSets;
|
|
||||||
}
|
|
||||||
|
|
||||||
Logger.info("read: " + recordsRead + " cached: " + runeSets.size());
|
|
||||||
return runeSets;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -9,12 +9,16 @@
|
|||||||
|
|
||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.Enum.ItemContainerType;
|
|
||||||
import engine.Enum.ItemType;
|
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
|
import engine.mbEnums;
|
||||||
|
import engine.mbEnums.ItemContainerType;
|
||||||
|
import engine.mbEnums.ItemType;
|
||||||
import engine.objects.AbstractCharacter;
|
import engine.objects.AbstractCharacter;
|
||||||
import engine.objects.CharacterItemManager;
|
import engine.objects.CharacterItemManager;
|
||||||
import engine.objects.Item;
|
import engine.objects.Item;
|
||||||
|
import engine.objects.ItemTemplate;
|
||||||
|
import org.json.simple.JSONObject;
|
||||||
|
import org.json.simple.parser.JSONParser;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
@@ -29,7 +33,7 @@ public class dbItemHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public dbItemHandler() {
|
public dbItemHandler() {
|
||||||
this.localClass = Item.class;
|
this.localClass = Item.class;
|
||||||
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
|
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String formatTradeString(HashSet<Integer> list) {
|
private static String formatTradeString(HashSet<Integer> list) {
|
||||||
@@ -52,46 +56,56 @@ public class dbItemHandler extends dbHandlerBase {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Item ADD_ITEM(Item toAdd) {
|
public Item PERSIST(Item toAdd) {
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("CALL `item_CREATE`(?, ?, ?, ?, ?, ?, ?, ?, ?,?);")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("CALL `item_CREATE`(?, ?, ?, ?, ?, ?, ?, ?,?);")) {
|
||||||
|
|
||||||
preparedStatement.setInt(1, toAdd.getOwnerID());
|
preparedStatement.setInt(1, toAdd.ownerID);
|
||||||
preparedStatement.setInt(2, toAdd.getItemBaseID());
|
preparedStatement.setInt(2, toAdd.templateID);
|
||||||
preparedStatement.setInt(3, toAdd.getChargesRemaining());
|
preparedStatement.setInt(3, (byte) toAdd.chargesRemaining);
|
||||||
preparedStatement.setInt(4, toAdd.getDurabilityCurrent());
|
preparedStatement.setInt(4, (short) toAdd.combat_health_current);
|
||||||
preparedStatement.setInt(5, toAdd.getDurabilityMax());
|
|
||||||
|
|
||||||
if (toAdd.getNumOfItems() < 1)
|
if (toAdd.getNumOfItems() < 1)
|
||||||
preparedStatement.setInt(6, 1);
|
preparedStatement.setInt(5, 1);
|
||||||
else
|
else
|
||||||
preparedStatement.setInt(6, toAdd.getNumOfItems());
|
preparedStatement.setInt(5, toAdd.getNumOfItems());
|
||||||
|
|
||||||
switch (toAdd.containerType) {
|
switch (toAdd.containerType) {
|
||||||
case INVENTORY:
|
case INVENTORY:
|
||||||
preparedStatement.setString(7, "inventory");
|
preparedStatement.setString(6, "inventory");
|
||||||
break;
|
break;
|
||||||
case EQUIPPED:
|
case EQUIPPED:
|
||||||
preparedStatement.setString(7, "equip");
|
preparedStatement.setString(6, "equip");
|
||||||
break;
|
break;
|
||||||
case BANK:
|
case BANK:
|
||||||
preparedStatement.setString(7, "bank");
|
preparedStatement.setString(6, "bank");
|
||||||
break;
|
break;
|
||||||
case VAULT:
|
case VAULT:
|
||||||
preparedStatement.setString(7, "vault");
|
preparedStatement.setString(6, "vault");
|
||||||
break;
|
break;
|
||||||
case FORGE:
|
case FORGE:
|
||||||
preparedStatement.setString(7, "forge");
|
preparedStatement.setString(6, "forge");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
preparedStatement.setString(7, "none"); //Shouldn't be here
|
preparedStatement.setString(6, "none"); //Shouldn't be here
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
preparedStatement.setByte(8, toAdd.getEquipSlot());
|
if (toAdd.equipSlot.equals(mbEnums.EquipSlotType.NONE))
|
||||||
preparedStatement.setInt(9, toAdd.getFlags());
|
preparedStatement.setString(7, "");
|
||||||
preparedStatement.setString(10, toAdd.getCustomName());
|
else
|
||||||
|
preparedStatement.setString(7, toAdd.equipSlot.name());
|
||||||
|
|
||||||
|
String flagString = "";
|
||||||
|
|
||||||
|
for (mbEnums.ItemFlags itemflag : toAdd.flags)
|
||||||
|
flagString += itemflag.toString() + ";";
|
||||||
|
|
||||||
|
flagString = flagString.replaceAll(";$", "");
|
||||||
|
|
||||||
|
preparedStatement.setString(8, flagString);
|
||||||
|
preparedStatement.setString(9, toAdd.name);
|
||||||
|
|
||||||
ResultSet rs = preparedStatement.executeQuery();
|
ResultSet rs = preparedStatement.executeQuery();
|
||||||
|
|
||||||
@@ -148,7 +162,7 @@ public class dbItemHandler extends dbHandlerBase {
|
|||||||
ArrayList<Item> itemList;
|
ArrayList<Item> itemList;
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_item`.*, `object`.`parent`, `object`.`type` FROM `object` INNER JOIN `obj_item` ON `object`.`UID` = `obj_item`.`UID` WHERE `object`.`parent`=? && `obj_item`.`item_container`='equip';")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_item`.*, `object`.`parent`, `object`.`type` FROM `object` INNER JOIN `obj_item` ON `object`.`UID` = `obj_item`.`UID` WHERE `object`.`parent`=? && `obj_item`.`container`='equip';")) {
|
||||||
|
|
||||||
preparedStatement.setLong(1, targetId);
|
preparedStatement.setLong(1, targetId);
|
||||||
ResultSet rs = preparedStatement.executeQuery();
|
ResultSet rs = preparedStatement.executeQuery();
|
||||||
@@ -163,6 +177,46 @@ public class dbItemHandler extends dbHandlerBase {
|
|||||||
return itemList;
|
return itemList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void LOAD_ITEM_TEMPLATES() {
|
||||||
|
|
||||||
|
JSONParser jsonParser = new JSONParser();
|
||||||
|
|
||||||
|
try (Connection connection = DbManager.getConnection();
|
||||||
|
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `static_item_templates`;");
|
||||||
|
ResultSet rs = preparedStatement.executeQuery()) {
|
||||||
|
|
||||||
|
while (rs.next()) {
|
||||||
|
int templateID = rs.getInt("id");
|
||||||
|
JSONObject jsonObject = (JSONObject) jsonParser.parse(rs.getString("template"));
|
||||||
|
ItemTemplate itemTemplate = new ItemTemplate(jsonObject);
|
||||||
|
itemTemplate.template_id = templateID;
|
||||||
|
ItemTemplate.templates.put(templateID, itemTemplate);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
Logger.error(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void LOAD_TEMPLATE_MODTABLES() {
|
||||||
|
|
||||||
|
try (Connection connection = DbManager.getConnection();
|
||||||
|
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `static_vendor_items`;");
|
||||||
|
ResultSet rs = preparedStatement.executeQuery()) {
|
||||||
|
|
||||||
|
while (rs.next()) {
|
||||||
|
int templateID = rs.getInt("templateID");
|
||||||
|
int modTable = rs.getInt("modTable");
|
||||||
|
ItemTemplate template = ItemTemplate.templates.get(templateID);
|
||||||
|
template.modTable = modTable;
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
Logger.error(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public Item GET_ITEM(final int itemUUID) {
|
public Item GET_ITEM(final int itemUUID) {
|
||||||
|
|
||||||
Item item;
|
Item item;
|
||||||
@@ -242,7 +296,7 @@ public class dbItemHandler extends dbHandlerBase {
|
|||||||
public boolean MOVE_GOLD(final Item from, final Item to, final int amt) {
|
public boolean MOVE_GOLD(final Item from, final Item to, final int amt) {
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `item_numberOfItems` = CASE WHEN `UID`=? THEN ? WHEN `UID`=? THEN ? END WHERE `UID` IN (?, ?);")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `numberOfItems` = CASE WHEN `UID`=? THEN ? WHEN `UID`=? THEN ? END WHERE `UID` IN (?, ?);")) {
|
||||||
|
|
||||||
int newFromAmt = from.getNumOfItems() - amt;
|
int newFromAmt = from.getNumOfItems() - amt;
|
||||||
int newToAmt = to.getNumOfItems() + amt;
|
int newToAmt = to.getNumOfItems() + amt;
|
||||||
@@ -268,11 +322,11 @@ public class dbItemHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
for (Item item : inventory) {
|
for (Item item : inventory) {
|
||||||
|
|
||||||
if (item.getItemBase().getType().equals(ItemType.GOLD))
|
if (item.template.item_type.equals(ItemType.GOLD))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` LEFT JOIN `object` ON `object`.`UID` = `obj_item`.`UID` SET `object`.`parent`=NULL, `obj_item`.`item_container`='none' WHERE `object`.`UID`=?;")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` LEFT JOIN `object` ON `object`.`UID` = `obj_item`.`UID` SET `object`.`parent`=NULL, `obj_item`.`container`='none' WHERE `object`.`UID`=?;")) {
|
||||||
|
|
||||||
preparedStatement.setLong(1, item.getObjectUUID());
|
preparedStatement.setLong(1, item.getObjectUUID());
|
||||||
worked = (preparedStatement.executeUpdate() > 0);
|
worked = (preparedStatement.executeUpdate() > 0);
|
||||||
@@ -288,12 +342,12 @@ public class dbItemHandler extends dbHandlerBase {
|
|||||||
return worked;
|
return worked;
|
||||||
}
|
}
|
||||||
|
|
||||||
public HashSet<Integer> GET_ITEMS_FOR_VENDOR(final int vendorID) {
|
public HashSet<Integer> GET_VENDOR_CAN_ROLL_LIST(final int vendorID) {
|
||||||
|
|
||||||
HashSet<Integer> itemSet = new HashSet<>();
|
HashSet<Integer> itemSet = new HashSet<>();
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("SELECT ID FROM static_itembase WHERE vendorType = ?")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("SELECT templateID FROM static_vendor_items WHERE vendorType = ?")) {
|
||||||
|
|
||||||
preparedStatement.setInt(1, vendorID);
|
preparedStatement.setInt(1, vendorID);
|
||||||
|
|
||||||
@@ -311,8 +365,8 @@ public class dbItemHandler extends dbHandlerBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Used to transfer a single item between owners or equip or vault or bank or inventory
|
//Used to transfer a single item between owners or equip or vault or bank or inventory
|
||||||
public boolean UPDATE_OWNER(final Item item, int newOwnerID, boolean ownerNPC, boolean ownerPlayer,
|
public boolean UPDATE_OWNER(final Item item, int newOwnerID,
|
||||||
boolean ownerAccount, ItemContainerType containerType, int slot) {
|
ItemContainerType containerType, mbEnums.EquipSlotType slot) {
|
||||||
|
|
||||||
boolean worked = false;
|
boolean worked = false;
|
||||||
|
|
||||||
@@ -346,7 +400,12 @@ public class dbItemHandler extends dbHandlerBase {
|
|||||||
preparedStatement.setString(3, "none"); //Shouldn't be here
|
preparedStatement.setString(3, "none"); //Shouldn't be here
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
preparedStatement.setInt(4, slot);
|
|
||||||
|
if (slot.equals(mbEnums.EquipSlotType.NONE))
|
||||||
|
preparedStatement.setString(4, "");
|
||||||
|
else
|
||||||
|
preparedStatement.setString(4, slot.name());
|
||||||
|
|
||||||
ResultSet rs = preparedStatement.executeQuery();
|
ResultSet rs = preparedStatement.executeQuery();
|
||||||
|
|
||||||
if (rs.next())
|
if (rs.next())
|
||||||
@@ -362,11 +421,11 @@ public class dbItemHandler extends dbHandlerBase {
|
|||||||
public boolean SET_DURABILITY(final Item item, int value) {
|
public boolean SET_DURABILITY(final Item item, int value) {
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `item_durabilityCurrent`=? WHERE `UID`=? AND `item_durabilityCurrent`=?")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `combat_health_current`=? WHERE `UID`=? AND `combat_health_current`=?")) {
|
||||||
|
|
||||||
preparedStatement.setInt(1, value);
|
preparedStatement.setInt(1, value);
|
||||||
preparedStatement.setLong(2, item.getObjectUUID());
|
preparedStatement.setLong(2, item.getObjectUUID());
|
||||||
preparedStatement.setInt(3, item.getDurabilityCurrent());
|
preparedStatement.setInt(3, (short) item.combat_health_current);
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
return (preparedStatement.executeUpdate() > 0);
|
||||||
|
|
||||||
@@ -379,7 +438,7 @@ public class dbItemHandler extends dbHandlerBase {
|
|||||||
public boolean UPDATE_FORGE_TO_INVENTORY(final Item item) {
|
public boolean UPDATE_FORGE_TO_INVENTORY(final Item item) {
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `item_container` = ? WHERE `UID` = ? AND `item_container` = 'forge';")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `container` = ? WHERE `UID` = ? AND `container` = 'forge';")) {
|
||||||
|
|
||||||
preparedStatement.setString(1, "inventory");
|
preparedStatement.setString(1, "inventory");
|
||||||
preparedStatement.setLong(2, item.getObjectUUID());
|
preparedStatement.setLong(2, item.getObjectUUID());
|
||||||
@@ -412,11 +471,11 @@ public class dbItemHandler extends dbHandlerBase {
|
|||||||
*/
|
*/
|
||||||
public boolean UPDATE_GOLD(final Item item, int newValue, int oldValue) {
|
public boolean UPDATE_GOLD(final Item item, int newValue, int oldValue) {
|
||||||
|
|
||||||
if (!item.getItemBase().getType().equals(ItemType.GOLD))
|
if (!item.template.item_type.equals(ItemType.GOLD))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `item_numberOfItems`=? WHERE `UID`=?")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `numberOfItems`=? WHERE `UID`=?")) {
|
||||||
|
|
||||||
preparedStatement.setInt(1, newValue);
|
preparedStatement.setInt(1, newValue);
|
||||||
preparedStatement.setLong(2, item.getObjectUUID());
|
preparedStatement.setLong(2, item.getObjectUUID());
|
||||||
@@ -433,9 +492,9 @@ public class dbItemHandler extends dbHandlerBase {
|
|||||||
public boolean UPDATE_REMAINING_CHARGES(final Item item) {
|
public boolean UPDATE_REMAINING_CHARGES(final Item item) {
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `item_chargesRemaining` = ? WHERE `UID` = ?")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `chargesRemaining` = ? WHERE `UID` = ?")) {
|
||||||
|
|
||||||
preparedStatement.setInt(1, item.getChargesRemaining());
|
preparedStatement.setInt(1, (byte) item.chargesRemaining);
|
||||||
preparedStatement.setLong(2, item.getObjectUUID());
|
preparedStatement.setLong(2, item.getObjectUUID());
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
return (preparedStatement.executeUpdate() > 0);
|
||||||
@@ -453,7 +512,7 @@ public class dbItemHandler extends dbHandlerBase {
|
|||||||
public boolean ZERO_ITEM_STACK(Item item) {
|
public boolean ZERO_ITEM_STACK(Item item) {
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `item_numberOfItems`=0 WHERE `UID` = ?")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `numberOfItems`=0 WHERE `UID` = ?")) {
|
||||||
|
|
||||||
preparedStatement.setLong(1, item.getObjectUUID());
|
preparedStatement.setLong(1, item.getObjectUUID());
|
||||||
|
|
||||||
@@ -468,9 +527,16 @@ public class dbItemHandler extends dbHandlerBase {
|
|||||||
public boolean UPDATE_FLAGS(Item item) {
|
public boolean UPDATE_FLAGS(Item item) {
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `item_flags`=? WHERE `UID` = ?")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `flags`=? WHERE `UID` = ?")) {
|
||||||
|
|
||||||
preparedStatement.setInt(1, item.getFlags());
|
String flagString = "";
|
||||||
|
|
||||||
|
for (mbEnums.ItemFlags itemflag : item.flags)
|
||||||
|
flagString += itemflag.toString() + ";";
|
||||||
|
|
||||||
|
flagString = flagString.replaceAll(";$", "");
|
||||||
|
|
||||||
|
preparedStatement.setString(1, flagString);
|
||||||
preparedStatement.setLong(2, item.getObjectUUID());
|
preparedStatement.setLong(2, item.getObjectUUID());
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
return (preparedStatement.executeUpdate() > 0);
|
||||||
@@ -483,8 +549,13 @@ public class dbItemHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public boolean UPDATE_VALUE(Item item, int value) {
|
public boolean UPDATE_VALUE(Item item, int value) {
|
||||||
|
|
||||||
|
// Write 0 if we will not modify the value from template
|
||||||
|
|
||||||
|
if (item.value == item.template.item_value)
|
||||||
|
value = 0;
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `item_value`=? WHERE `UID` = ?")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `value`=? WHERE `UID` = ?")) {
|
||||||
|
|
||||||
preparedStatement.setInt(1, value);
|
preparedStatement.setInt(1, value);
|
||||||
preparedStatement.setLong(2, item.getObjectUUID());
|
preparedStatement.setLong(2, item.getObjectUUID());
|
||||||
@@ -496,4 +567,25 @@ public class dbItemHandler extends dbHandlerBase {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean UPDATE_EQUIP_SLOT(Item item) {
|
||||||
|
|
||||||
|
try (Connection connection = DbManager.getConnection();
|
||||||
|
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `equipSlot`=? WHERE `UID` = ?")) {
|
||||||
|
|
||||||
|
if (item.equipSlot.equals(mbEnums.EquipSlotType.NONE))
|
||||||
|
preparedStatement.setString(1, "");
|
||||||
|
else
|
||||||
|
preparedStatement.setString(1, item.equipSlot.name());
|
||||||
|
|
||||||
|
preparedStatement.setLong(2, item.getObjectUUID());
|
||||||
|
|
||||||
|
return (preparedStatement.executeUpdate() > 0);
|
||||||
|
|
||||||
|
} catch (SQLException e) {
|
||||||
|
Logger.error(e);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
|
import engine.mbEnums;
|
||||||
import engine.objects.Kit;
|
import engine.objects.Kit;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
|
|
||||||
@@ -23,7 +24,7 @@ public class dbKitHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public dbKitHandler() {
|
public dbKitHandler() {
|
||||||
this.localClass = Kit.class;
|
this.localClass = Kit.class;
|
||||||
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
|
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public ArrayList<Kit> GET_ALL_KITS() {
|
public ArrayList<Kit> GET_ALL_KITS() {
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
|
import engine.mbEnums;
|
||||||
import engine.objects.MenuOption;
|
import engine.objects.MenuOption;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
|
|
||||||
@@ -23,7 +24,7 @@ public class dbMenuHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public dbMenuHandler() {
|
public dbMenuHandler() {
|
||||||
this.localClass = MenuOption.class;
|
this.localClass = MenuOption.class;
|
||||||
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
|
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public ArrayList<MenuOption> GET_MENU_OPTIONS(final int id) {
|
public ArrayList<MenuOption> GET_MENU_OPTIONS(final int id) {
|
||||||
|
|||||||
@@ -8,11 +8,10 @@
|
|||||||
|
|
||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.Enum;
|
import engine.mbEnums;
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
import engine.objects.Mine;
|
import engine.objects.Mine;
|
||||||
import engine.objects.MineProduction;
|
import engine.objects.MineProduction;
|
||||||
import engine.objects.Resource;
|
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
@@ -25,7 +24,7 @@ public class dbMineHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public dbMineHandler() {
|
public dbMineHandler() {
|
||||||
this.localClass = Mine.class;
|
this.localClass = Mine.class;
|
||||||
this.localObjectType = Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
|
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Mine GET_MINE(int id) {
|
public Mine GET_MINE(int id) {
|
||||||
@@ -33,7 +32,7 @@ public class dbMineHandler extends dbHandlerBase {
|
|||||||
if (id == 0)
|
if (id == 0)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
Mine mine = (Mine) DbManager.getFromCache(Enum.GameObjectType.Mine, id);
|
Mine mine = (Mine) DbManager.getFromCache(mbEnums.GameObjectType.Mine, id);
|
||||||
|
|
||||||
if (mine != null)
|
if (mine != null)
|
||||||
return mine;
|
return mine;
|
||||||
@@ -84,7 +83,7 @@ public class dbMineHandler extends dbHandlerBase {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean CHANGE_RESOURCE(Mine mine, Resource resource) {
|
public boolean CHANGE_RESOURCE(Mine mine, mbEnums.ResourceType resource) {
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_mine` SET `mine_resource`=? WHERE `UID`=?")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_mine` SET `mine_resource`=? WHERE `UID`=?")) {
|
||||||
|
|||||||
@@ -9,7 +9,8 @@
|
|||||||
|
|
||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.Enum.GameObjectType;
|
import engine.mbEnums;
|
||||||
|
import engine.mbEnums.GameObjectType;
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
import engine.objects.MobBase;
|
import engine.objects.MobBase;
|
||||||
import engine.objects.MobBaseEffects;
|
import engine.objects.MobBaseEffects;
|
||||||
@@ -26,7 +27,7 @@ public class dbMobBaseHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public dbMobBaseHandler() {
|
public dbMobBaseHandler() {
|
||||||
this.localClass = MobBase.class;
|
this.localClass = MobBase.class;
|
||||||
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
|
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public MobBase GET_MOBBASE(int id) {
|
public MobBase GET_MOBBASE(int id) {
|
||||||
|
|||||||
@@ -10,8 +10,8 @@
|
|||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
|
import engine.mbEnums;
|
||||||
import engine.objects.Mob;
|
import engine.objects.Mob;
|
||||||
import engine.objects.Zone;
|
|
||||||
import org.joda.time.DateTime;
|
import org.joda.time.DateTime;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
|
|
||||||
@@ -25,34 +25,30 @@ public class dbMobHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public dbMobHandler() {
|
public dbMobHandler() {
|
||||||
this.localClass = Mob.class;
|
this.localClass = Mob.class;
|
||||||
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
|
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Mob ADD_MOB(Mob toAdd) {
|
public Mob PERSIST(Mob toAdd) {
|
||||||
|
|
||||||
Mob mobile = null;
|
Mob mobile = null;
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("CALL `mob_CREATE`(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("CALL `mob_CREATE`(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);")) {
|
||||||
|
|
||||||
preparedStatement.setLong(1, toAdd.getParentZoneID());
|
preparedStatement.setLong(1, toAdd.parentZoneUUID);
|
||||||
preparedStatement.setInt(2, toAdd.getMobBaseID());
|
preparedStatement.setInt(2, toAdd.loadID);
|
||||||
preparedStatement.setInt(3, toAdd.getGuildUUID());
|
preparedStatement.setInt(3, toAdd.guildUUID);
|
||||||
preparedStatement.setFloat(4, toAdd.getSpawnX());
|
preparedStatement.setFloat(4, toAdd.bindLoc.x);
|
||||||
preparedStatement.setFloat(5, toAdd.getSpawnY());
|
preparedStatement.setFloat(5, toAdd.bindLoc.y);
|
||||||
preparedStatement.setFloat(6, toAdd.getSpawnZ());
|
preparedStatement.setFloat(6, toAdd.bindLoc.z);
|
||||||
preparedStatement.setInt(7, 0);
|
preparedStatement.setInt(7, 0);
|
||||||
preparedStatement.setFloat(8, toAdd.getSpawnRadius());
|
preparedStatement.setFloat(8, toAdd.spawnRadius);
|
||||||
preparedStatement.setInt(9, toAdd.getTrueSpawnTime());
|
preparedStatement.setInt(9, toAdd.spawnDelay);
|
||||||
|
preparedStatement.setInt(10, toAdd.contractUUID);
|
||||||
if (toAdd.getContract() != null)
|
preparedStatement.setInt(11, toAdd.buildingUUID);
|
||||||
preparedStatement.setInt(10, toAdd.getContract().getContractID());
|
preparedStatement.setInt(12, toAdd.level);
|
||||||
else
|
preparedStatement.setString(13, toAdd.firstName);
|
||||||
preparedStatement.setInt(10, 0);
|
preparedStatement.setString(14, toAdd.behaviourType.toString());
|
||||||
|
|
||||||
preparedStatement.setInt(11, toAdd.getBuildingID());
|
|
||||||
preparedStatement.setInt(12, toAdd.getLevel());
|
|
||||||
preparedStatement.setString(13, toAdd.getFirstName());
|
|
||||||
|
|
||||||
ResultSet rs = preparedStatement.executeQuery();
|
ResultSet rs = preparedStatement.executeQuery();
|
||||||
|
|
||||||
@@ -69,6 +65,23 @@ public class dbMobHandler extends dbHandlerBase {
|
|||||||
return mobile;
|
return mobile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ArrayList<Mob> GET_ALL_MOBS() {
|
||||||
|
|
||||||
|
ArrayList<Mob> mobileList = new ArrayList<>();
|
||||||
|
|
||||||
|
try (Connection connection = DbManager.getConnection();
|
||||||
|
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_mob`.*, `object`.`parent` FROM `object` INNER JOIN `obj_mob` ON `obj_mob`.`UID` = `object`.`UID` ORDER BY `object`.`UID` ASC;")) {
|
||||||
|
|
||||||
|
ResultSet rs = preparedStatement.executeQuery();
|
||||||
|
mobileList = getObjectsFromRs(rs, 1000);
|
||||||
|
|
||||||
|
} catch (SQLException e) {
|
||||||
|
Logger.error(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return mobileList;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean updateUpgradeTime(Mob mob, DateTime upgradeDateTime) {
|
public boolean updateUpgradeTime(Mob mob, DateTime upgradeDateTime) {
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
@@ -106,17 +119,17 @@ public class dbMobHandler extends dbHandlerBase {
|
|||||||
return row_count;
|
return row_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LOAD_PATROL_POINTS(Mob captain) {
|
public void LOAD_GUARD_MINIONS(Mob guardCaptain) {
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `dyn_guards` WHERE `captainUID` = ?")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `dyn_guards` WHERE `captainUID` = ?")) {
|
||||||
|
|
||||||
preparedStatement.setInt(1, captain.getObjectUUID());
|
preparedStatement.setInt(1, guardCaptain.getObjectUUID());
|
||||||
ResultSet rs = preparedStatement.executeQuery();
|
ResultSet rs = preparedStatement.executeQuery();
|
||||||
|
|
||||||
while (rs.next()) {
|
while (rs.next()) {
|
||||||
String name = rs.getString("name");
|
String minionName = rs.getString("minionName");
|
||||||
Mob toCreate = Mob.createGuardMob(captain, captain.getGuild(), captain.getParentZone(), captain.building.getLoc(), captain.getLevel(), name);
|
Mob toCreate = Mob.createGuardMinion(guardCaptain, guardCaptain.getLevel(), minionName);
|
||||||
|
|
||||||
if (toCreate == null)
|
if (toCreate == null)
|
||||||
return;
|
return;
|
||||||
@@ -131,15 +144,13 @@ public class dbMobHandler extends dbHandlerBase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean ADD_TO_GUARDS(final long captainUID, final int mobBaseID, final String name, final int slot) {
|
public boolean ADD_GUARD_MINION(final long captainUID, final String minionName) {
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO `dyn_guards` (`captainUID`, `mobBaseID`,`name`, `slot`) VALUES (?,?,?,?)")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO `dyn_guards` (`captainUID`, `minionName`) VALUES (?,?)")) {
|
||||||
|
|
||||||
preparedStatement.setLong(1, captainUID);
|
preparedStatement.setLong(1, captainUID);
|
||||||
preparedStatement.setInt(2, mobBaseID);
|
preparedStatement.setString(2, minionName);
|
||||||
preparedStatement.setString(3, name);
|
|
||||||
preparedStatement.setInt(4, slot);
|
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
return (preparedStatement.executeUpdate() > 0);
|
||||||
|
|
||||||
@@ -149,14 +160,13 @@ public class dbMobHandler extends dbHandlerBase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean REMOVE_FROM_GUARDS(final long captainUID, final int mobBaseID, final int slot) {
|
public boolean REMOVE_GUARD_MINION(final long captainUID, final String minionName) {
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("DELETE FROM `dyn_guards` WHERE `captainUID`=? AND `mobBaseID`=? AND `slot` =?")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("DELETE FROM `dyn_guards` WHERE `captainUID`=? AND `minionName`=? LIMIT 1;")) {
|
||||||
|
|
||||||
preparedStatement.setLong(1, captainUID);
|
preparedStatement.setLong(1, captainUID);
|
||||||
preparedStatement.setInt(2, mobBaseID);
|
preparedStatement.setString(2, minionName);
|
||||||
preparedStatement.setInt(3, slot);
|
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
return (preparedStatement.executeUpdate() > 0);
|
||||||
|
|
||||||
@@ -166,24 +176,19 @@ public class dbMobHandler extends dbHandlerBase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean REMOVE_ALL_MINIONS(final long captainUID) {
|
||||||
public ArrayList<Mob> GET_ALL_MOBS_FOR_ZONE(Zone zone) {
|
|
||||||
|
|
||||||
ArrayList<Mob> mobileList = new ArrayList<>();
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_mob`.*, `object`.`parent` FROM `object` INNER JOIN `obj_mob` ON `obj_mob`.`UID` = `object`.`UID` WHERE `object`.`parent` = ?;")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("DELETE FROM `dyn_guards` WHERE `captainUID`=?;")) {
|
||||||
|
|
||||||
preparedStatement.setLong(1, zone.getObjectUUID());
|
preparedStatement.setLong(1, captainUID);
|
||||||
|
|
||||||
ResultSet rs = preparedStatement.executeQuery();
|
return (preparedStatement.executeUpdate() > 0);
|
||||||
mobileList = getObjectsFromRs(rs, 1000);
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
Logger.error(e);
|
Logger.error(e);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return mobileList;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Mob GET_MOB(final int objectUUID) {
|
public Mob GET_MOB(final int objectUUID) {
|
||||||
|
|||||||
@@ -9,13 +9,13 @@
|
|||||||
|
|
||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.Enum.ProfitType;
|
import engine.mbEnums;
|
||||||
|
import engine.mbEnums.ProfitType;
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
import engine.math.Vector3fImmutable;
|
import engine.math.Vector3fImmutable;
|
||||||
import engine.objects.NPC;
|
import engine.objects.NPC;
|
||||||
import engine.objects.NPCProfits;
|
import engine.objects.NPCProfits;
|
||||||
import engine.objects.ProducedItem;
|
import engine.objects.ProducedItem;
|
||||||
import engine.objects.Zone;
|
|
||||||
import org.joda.time.DateTime;
|
import org.joda.time.DateTime;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
|
|
||||||
@@ -24,12 +24,52 @@ import java.sql.PreparedStatement;
|
|||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
public class dbNPCHandler extends dbHandlerBase {
|
public class dbNPCHandler extends dbHandlerBase {
|
||||||
|
|
||||||
public dbNPCHandler() {
|
public dbNPCHandler() {
|
||||||
this.localClass = NPC.class;
|
this.localClass = NPC.class;
|
||||||
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
|
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static HashMap<Integer, ArrayList<Integer>> LOAD_RUNES_FOR_NPC_AND_MOBS() {
|
||||||
|
|
||||||
|
HashMap<Integer, ArrayList<Integer>> runeSets = new HashMap<>();
|
||||||
|
int runeSetID;
|
||||||
|
int runeBaseID;
|
||||||
|
int recordsRead = 0;
|
||||||
|
|
||||||
|
try (Connection connection = DbManager.getConnection();
|
||||||
|
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM static_npc_runeSet")) {
|
||||||
|
|
||||||
|
ResultSet rs = preparedStatement.executeQuery();
|
||||||
|
|
||||||
|
while (rs.next()) {
|
||||||
|
|
||||||
|
recordsRead++;
|
||||||
|
|
||||||
|
runeSetID = rs.getInt("runeSet");
|
||||||
|
runeBaseID = rs.getInt("runeBase");
|
||||||
|
|
||||||
|
if (runeSets.get(runeSetID) == null) {
|
||||||
|
ArrayList<Integer> runeList = new ArrayList<>();
|
||||||
|
runeList.add(runeBaseID);
|
||||||
|
runeSets.put(runeSetID, runeList);
|
||||||
|
} else {
|
||||||
|
ArrayList<Integer> runeList = runeSets.get(runeSetID);
|
||||||
|
runeList.add(runeSetID);
|
||||||
|
runeSets.put(runeSetID, runeList);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (SQLException e) {
|
||||||
|
Logger.error(e);
|
||||||
|
return runeSets;
|
||||||
|
}
|
||||||
|
|
||||||
|
Logger.info("read: " + recordsRead + " cached: " + runeSets.size());
|
||||||
|
return runeSets;
|
||||||
}
|
}
|
||||||
|
|
||||||
public NPC PERSIST(NPC toAdd) {
|
public NPC PERSIST(NPC toAdd) {
|
||||||
@@ -94,14 +134,12 @@ public class dbNPCHandler extends dbHandlerBase {
|
|||||||
return row_count;
|
return row_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ArrayList<NPC> GET_ALL_NPCS_FOR_ZONE(Zone zone) {
|
public ArrayList<NPC> GET_ALL_NPCS() {
|
||||||
|
|
||||||
ArrayList<NPC> npcList = new ArrayList<>();
|
ArrayList<NPC> npcList = new ArrayList<>();
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_npc`.*, `object`.`parent` FROM `object` INNER JOIN `obj_npc` ON `obj_npc`.`UID` = `object`.`UID` WHERE `object`.`parent` = ?;")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_npc`.*, `object`.`parent` FROM `object` INNER JOIN `obj_npc` ON `obj_npc`.`UID` = `object`.`UID` ORDER BY `object`.`UID` ASC;")) {
|
||||||
|
|
||||||
preparedStatement.setLong(1, zone.getObjectUUID());
|
|
||||||
|
|
||||||
ResultSet rs = preparedStatement.executeQuery();
|
ResultSet rs = preparedStatement.executeQuery();
|
||||||
npcList = getObjectsFromRs(rs, 1000);
|
npcList = getObjectsFromRs(rs, 1000);
|
||||||
@@ -308,14 +346,14 @@ public class dbNPCHandler extends dbHandlerBase {
|
|||||||
+ NPC._pirateNames.size() + " mobBases");
|
+ NPC._pirateNames.size() + " mobBases");
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean ADD_TO_PRODUCTION_LIST(final long ID, final long npcUID, final long itemBaseID, DateTime dateTime, String prefix, String suffix, String name, boolean isRandom, int playerID) {
|
public boolean ADD_TO_PRODUCTION_LIST(final long ID, final long npcUID, final long templateID, DateTime dateTime, String prefix, String suffix, String name, boolean isRandom, int playerID) {
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO `dyn_npc_production` (`ID`,`npcUID`, `itemBaseID`,`dateToUpgrade`, `isRandom`, `prefix`, `suffix`, `name`,`playerID`) VALUES (?,?,?,?,?,?,?,?,?)")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO `dyn_npc_production` (`ID`,`npcUID`, `templateID`,`dateToUpgrade`, `isRandom`, `prefix`, `suffix`, `name`,`playerID`) VALUES (?,?,?,?,?,?,?,?,?)")) {
|
||||||
|
|
||||||
preparedStatement.setLong(1, ID);
|
preparedStatement.setLong(1, ID);
|
||||||
preparedStatement.setLong(2, npcUID);
|
preparedStatement.setLong(2, npcUID);
|
||||||
preparedStatement.setLong(3, itemBaseID);
|
preparedStatement.setLong(3, templateID);
|
||||||
preparedStatement.setTimestamp(4, new java.sql.Timestamp(dateTime.getMillis()));
|
preparedStatement.setTimestamp(4, new java.sql.Timestamp(dateTime.getMillis()));
|
||||||
preparedStatement.setBoolean(5, isRandom);
|
preparedStatement.setBoolean(5, isRandom);
|
||||||
preparedStatement.setString(6, prefix);
|
preparedStatement.setString(6, prefix);
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.Enum;
|
import engine.mbEnums;
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
import engine.objects.Petition;
|
import engine.objects.Petition;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
@@ -58,8 +58,8 @@ public class dbPetitionHandler extends dbHandlerBase {
|
|||||||
" VALUES (?,?,?,?,?,?,?,?,?);")) {
|
" VALUES (?,?,?,?,?,?,?,?,?);")) {
|
||||||
|
|
||||||
preparedStatement.setTimestamp(1, new java.sql.Timestamp(System.currentTimeMillis()));
|
preparedStatement.setTimestamp(1, new java.sql.Timestamp(System.currentTimeMillis()));
|
||||||
preparedStatement.setString(2, Enum.PetitionType.values()[petition.primaryType].name());
|
preparedStatement.setString(2, mbEnums.PetitionType.values()[petition.primaryType].name());
|
||||||
preparedStatement.setString(3, Enum.PetitionSubType.values()[petition.subType].name());
|
preparedStatement.setString(3, mbEnums.PetitionSubType.values()[petition.subType].name());
|
||||||
preparedStatement.setInt(4, petition.reportAccount.getObjectUUID());
|
preparedStatement.setInt(4, petition.reportAccount.getObjectUUID());
|
||||||
preparedStatement.setString(5, petition.reportAccount.getUname());
|
preparedStatement.setString(5, petition.reportAccount.getUname());
|
||||||
preparedStatement.setInt(6, petition.reportPlayer.getObjectUUID());
|
preparedStatement.setInt(6, petition.reportPlayer.getObjectUUID());
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.Enum;
|
import engine.mbEnums;
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
import engine.objects.AbstractWorldObject;
|
import engine.objects.AbstractWorldObject;
|
||||||
import engine.objects.Heraldry;
|
import engine.objects.Heraldry;
|
||||||
@@ -29,7 +29,7 @@ public class dbPlayerCharacterHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public dbPlayerCharacterHandler() {
|
public dbPlayerCharacterHandler() {
|
||||||
this.localClass = PlayerCharacter.class;
|
this.localClass = PlayerCharacter.class;
|
||||||
this.localObjectType = Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
|
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public PlayerCharacter ADD_PLAYER_CHARACTER(final PlayerCharacter toAdd) {
|
public PlayerCharacter ADD_PLAYER_CHARACTER(final PlayerCharacter toAdd) {
|
||||||
@@ -45,8 +45,8 @@ public class dbPlayerCharacterHandler extends dbHandlerBase {
|
|||||||
preparedStatement.setLong(1, toAdd.getAccount().getObjectUUID());
|
preparedStatement.setLong(1, toAdd.getAccount().getObjectUUID());
|
||||||
preparedStatement.setString(2, toAdd.getFirstName());
|
preparedStatement.setString(2, toAdd.getFirstName());
|
||||||
preparedStatement.setString(3, toAdd.getLastName());
|
preparedStatement.setString(3, toAdd.getLastName());
|
||||||
preparedStatement.setInt(4, toAdd.getRace().getRaceRuneID());
|
preparedStatement.setInt(4, toAdd.race.getRaceRuneID());
|
||||||
preparedStatement.setInt(5, toAdd.getBaseClass().getObjectUUID());
|
preparedStatement.setInt(5, toAdd.baseClass.getObjectUUID());
|
||||||
preparedStatement.setInt(6, toAdd.getStrMod());
|
preparedStatement.setInt(6, toAdd.getStrMod());
|
||||||
preparedStatement.setInt(7, toAdd.getDexMod());
|
preparedStatement.setInt(7, toAdd.getDexMod());
|
||||||
preparedStatement.setInt(8, toAdd.getConMod());
|
preparedStatement.setInt(8, toAdd.getConMod());
|
||||||
@@ -176,7 +176,7 @@ public class dbPlayerCharacterHandler extends dbHandlerBase {
|
|||||||
if (objectUUID == 0)
|
if (objectUUID == 0)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
PlayerCharacter playerCharacter = (PlayerCharacter) DbManager.getFromCache(Enum.GameObjectType.PlayerCharacter, objectUUID);
|
PlayerCharacter playerCharacter = (PlayerCharacter) DbManager.getFromCache(mbEnums.GameObjectType.PlayerCharacter, objectUUID);
|
||||||
|
|
||||||
if (playerCharacter != null)
|
if (playerCharacter != null)
|
||||||
return playerCharacter;
|
return playerCharacter;
|
||||||
|
|||||||
@@ -9,62 +9,57 @@
|
|||||||
|
|
||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.Enum;
|
import engine.mbEnums;
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
import engine.gameManager.PowersManager;
|
import engine.gameManager.PowersManager;
|
||||||
import engine.objects.Mob;
|
import engine.objects.Mob;
|
||||||
import engine.objects.PreparedStatementShared;
|
|
||||||
import engine.powers.EffectsBase;
|
import engine.powers.EffectsBase;
|
||||||
import engine.powers.MobPowerEntry;
|
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
|
||||||
public class dbPowerHandler extends dbHandlerBase {
|
public class dbPowerHandler extends dbHandlerBase {
|
||||||
|
|
||||||
public dbPowerHandler() {
|
public dbPowerHandler() {
|
||||||
this.localClass = Mob.class;
|
this.localClass = Mob.class;
|
||||||
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
|
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void addAllSourceTypes() {
|
public static void addAllSourceTypes() {
|
||||||
PreparedStatementShared ps = null;
|
|
||||||
try {
|
try (Connection connection = DbManager.getConnection();
|
||||||
ps = new PreparedStatementShared("SELECT * FROM static_power_sourcetype");
|
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM static_power_sourcetype")) {
|
||||||
ResultSet rs = ps.executeQuery();
|
|
||||||
|
ResultSet rs = preparedStatement.executeQuery();
|
||||||
String IDString, source;
|
String IDString, source;
|
||||||
|
|
||||||
while (rs.next()) {
|
while (rs.next()) {
|
||||||
IDString = rs.getString("IDString");
|
IDString = rs.getString("IDString");
|
||||||
int token = DbManager.hasher.SBStringHash(IDString);
|
int token = DbManager.hasher.SBStringHash(IDString);
|
||||||
|
|
||||||
|
|
||||||
source = rs.getString("source").replace("-", "").trim();
|
source = rs.getString("source").replace("-", "").trim();
|
||||||
Enum.EffectSourceType effectSourceType = Enum.EffectSourceType.GetEffectSourceType(source);
|
mbEnums.EffectSourceType effectSourceType = mbEnums.EffectSourceType.GetEffectSourceType(source);
|
||||||
|
|
||||||
if (EffectsBase.effectSourceTypeMap.containsKey(token) == false)
|
if (EffectsBase.effectSourceTypeMap.containsKey(token) == false)
|
||||||
EffectsBase.effectSourceTypeMap.put(token, new HashSet<>());
|
EffectsBase.effectSourceTypeMap.put(token, new HashSet<>());
|
||||||
|
|
||||||
EffectsBase.effectSourceTypeMap.get(token).add(effectSourceType);
|
EffectsBase.effectSourceTypeMap.get(token).add(effectSourceType);
|
||||||
}
|
}
|
||||||
rs.close();
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Logger.error(e);
|
Logger.error(e);
|
||||||
} finally {
|
|
||||||
ps.release();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void addAllAnimationOverrides() {
|
public static void addAllAnimationOverrides() {
|
||||||
PreparedStatementShared ps = null;
|
|
||||||
try {
|
try (Connection connection = DbManager.getConnection();
|
||||||
ps = new PreparedStatementShared("SELECT * FROM static_power_animation_override");
|
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM static_power_animation_override")) {
|
||||||
ResultSet rs = ps.executeQuery();
|
|
||||||
|
ResultSet rs = preparedStatement.executeQuery();
|
||||||
|
|
||||||
String IDString;
|
String IDString;
|
||||||
int animation;
|
int animation;
|
||||||
while (rs.next()) {
|
while (rs.next()) {
|
||||||
@@ -78,51 +73,10 @@ public class dbPowerHandler extends dbHandlerBase {
|
|||||||
PowersManager.AnimationOverrides.put(IDString, animation);
|
PowersManager.AnimationOverrides.put(IDString, animation);
|
||||||
|
|
||||||
}
|
}
|
||||||
rs.close();
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Logger.error(e);
|
Logger.error(e);
|
||||||
} finally {
|
|
||||||
ps.release();
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static HashMap<Integer, ArrayList<MobPowerEntry>> LOAD_MOB_POWERS() {
|
|
||||||
|
|
||||||
HashMap<Integer, ArrayList<MobPowerEntry>> mobPowers = new HashMap<>();
|
|
||||||
MobPowerEntry mobPowerEntry;
|
|
||||||
|
|
||||||
int mobbaseID;
|
|
||||||
int recordsRead = 0;
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM static_npc_mobbase_powers ORDER BY `id` ASC;")) {
|
|
||||||
|
|
||||||
ResultSet rs = preparedStatement.executeQuery();
|
|
||||||
|
|
||||||
while (rs.next()) {
|
|
||||||
|
|
||||||
recordsRead++;
|
|
||||||
|
|
||||||
mobbaseID = rs.getInt("mobbaseUUID");
|
|
||||||
mobPowerEntry = new MobPowerEntry(rs);
|
|
||||||
|
|
||||||
if (mobPowers.get(mobbaseID) == null) {
|
|
||||||
ArrayList<MobPowerEntry> powerList = new ArrayList<>();
|
|
||||||
powerList.add(mobPowerEntry);
|
|
||||||
mobPowers.put(mobbaseID, powerList);
|
|
||||||
} else {
|
|
||||||
ArrayList<MobPowerEntry> powerList = mobPowers.get(mobbaseID);
|
|
||||||
powerList.add(mobPowerEntry);
|
|
||||||
mobPowers.put(mobbaseID, powerList);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
return mobPowers;
|
|
||||||
}
|
|
||||||
|
|
||||||
Logger.info("read: " + recordsRead + " cached: " + mobPowers.size());
|
|
||||||
return mobPowers;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
|
import engine.mbEnums;
|
||||||
import engine.objects.PromotionClass;
|
import engine.objects.PromotionClass;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
|
|
||||||
@@ -23,7 +24,7 @@ public class dbPromotionClassHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public dbPromotionClassHandler() {
|
public dbPromotionClassHandler() {
|
||||||
this.localClass = PromotionClass.class;
|
this.localClass = PromotionClass.class;
|
||||||
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
|
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public ArrayList<Integer> GET_ALLOWED_RUNES(final PromotionClass pc) {
|
public ArrayList<Integer> GET_ALLOWED_RUNES(final PromotionClass pc) {
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
|
import engine.mbEnums;
|
||||||
import engine.objects.RuneBaseAttribute;
|
import engine.objects.RuneBaseAttribute;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
|
|
||||||
@@ -23,7 +24,7 @@ public class dbRuneBaseAttributeHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public dbRuneBaseAttributeHandler() {
|
public dbRuneBaseAttributeHandler() {
|
||||||
this.localClass = RuneBaseAttribute.class;
|
this.localClass = RuneBaseAttribute.class;
|
||||||
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
|
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public ArrayList<RuneBaseAttribute> GET_ATTRIBUTES_FOR_RUNEBASE() {
|
public ArrayList<RuneBaseAttribute> GET_ATTRIBUTES_FOR_RUNEBASE() {
|
||||||
|
|||||||
@@ -9,7 +9,8 @@
|
|||||||
|
|
||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.Enum.GameObjectType;
|
import engine.mbEnums;
|
||||||
|
import engine.mbEnums.GameObjectType;
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
import engine.objects.AbstractGameObject;
|
import engine.objects.AbstractGameObject;
|
||||||
import engine.objects.RuneBaseEffect;
|
import engine.objects.RuneBaseEffect;
|
||||||
@@ -26,7 +27,7 @@ public class dbRuneBaseEffectHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public dbRuneBaseEffectHandler() {
|
public dbRuneBaseEffectHandler() {
|
||||||
this.localClass = RuneBaseEffect.class;
|
this.localClass = RuneBaseEffect.class;
|
||||||
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
|
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public ArrayList<RuneBaseEffect> GET_EFFECTS_FOR_RUNEBASE(int id) {
|
public ArrayList<RuneBaseEffect> GET_EFFECTS_FOR_RUNEBASE(int id) {
|
||||||
|
|||||||
@@ -10,7 +10,10 @@
|
|||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
|
import engine.mbEnums;
|
||||||
import engine.objects.RuneBase;
|
import engine.objects.RuneBase;
|
||||||
|
import engine.powers.RunePowerEntry;
|
||||||
|
import engine.powers.RuneSkillAdjustEntry;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
@@ -24,7 +27,85 @@ public class dbRuneBaseHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public dbRuneBaseHandler() {
|
public dbRuneBaseHandler() {
|
||||||
this.localClass = RuneBase.class;
|
this.localClass = RuneBase.class;
|
||||||
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
|
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static HashMap<Integer, ArrayList<RunePowerEntry>> LOAD_RUNE_POWERS() {
|
||||||
|
|
||||||
|
HashMap<Integer, ArrayList<RunePowerEntry>> mobPowers = new HashMap<>();
|
||||||
|
RunePowerEntry runePowerEntry;
|
||||||
|
|
||||||
|
int rune_id;
|
||||||
|
int recordsRead = 0;
|
||||||
|
|
||||||
|
try (Connection connection = DbManager.getConnection();
|
||||||
|
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM static_rune_powers")) {
|
||||||
|
|
||||||
|
ResultSet rs = preparedStatement.executeQuery();
|
||||||
|
|
||||||
|
while (rs.next()) {
|
||||||
|
|
||||||
|
recordsRead++;
|
||||||
|
|
||||||
|
rune_id = rs.getInt("rune_id");
|
||||||
|
runePowerEntry = new RunePowerEntry(rs);
|
||||||
|
|
||||||
|
if (mobPowers.get(rune_id) == null) {
|
||||||
|
ArrayList<RunePowerEntry> runePowerList = new ArrayList<>();
|
||||||
|
runePowerList.add(runePowerEntry);
|
||||||
|
mobPowers.put(rune_id, runePowerList);
|
||||||
|
} else {
|
||||||
|
ArrayList<RunePowerEntry> powerList = mobPowers.get(rune_id);
|
||||||
|
powerList.add(runePowerEntry);
|
||||||
|
mobPowers.put(rune_id, powerList);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
Logger.error(e);
|
||||||
|
return mobPowers;
|
||||||
|
}
|
||||||
|
|
||||||
|
Logger.info("read: " + recordsRead + " cached: " + mobPowers.size());
|
||||||
|
return mobPowers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static HashMap<Integer, ArrayList<RuneSkillAdjustEntry>> LOAD_RUNE_SKILL_ADJUSTS() {
|
||||||
|
|
||||||
|
HashMap<Integer, ArrayList<RuneSkillAdjustEntry>> runeSkillAdjusts = new HashMap<>();
|
||||||
|
RuneSkillAdjustEntry runeSkillAdjustEntry;
|
||||||
|
|
||||||
|
int rune_id;
|
||||||
|
int recordsRead = 0;
|
||||||
|
|
||||||
|
try (Connection connection = DbManager.getConnection();
|
||||||
|
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM static_rune_skill_adjusts")) {
|
||||||
|
|
||||||
|
ResultSet rs = preparedStatement.executeQuery();
|
||||||
|
|
||||||
|
while (rs.next()) {
|
||||||
|
|
||||||
|
recordsRead++;
|
||||||
|
|
||||||
|
rune_id = rs.getInt("rune_id");
|
||||||
|
runeSkillAdjustEntry = new RuneSkillAdjustEntry(rs);
|
||||||
|
|
||||||
|
if (runeSkillAdjusts.get(rune_id) == null) {
|
||||||
|
ArrayList<RuneSkillAdjustEntry> skillAdjustList = new ArrayList<>();
|
||||||
|
skillAdjustList.add(runeSkillAdjustEntry);
|
||||||
|
runeSkillAdjusts.put(rune_id, skillAdjustList);
|
||||||
|
} else {
|
||||||
|
ArrayList<RuneSkillAdjustEntry> powerList = runeSkillAdjusts.get(rune_id);
|
||||||
|
powerList.add(runeSkillAdjustEntry);
|
||||||
|
runeSkillAdjusts.put(rune_id, powerList);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
Logger.error(e);
|
||||||
|
return runeSkillAdjusts;
|
||||||
|
}
|
||||||
|
|
||||||
|
Logger.info("read: " + recordsRead + " cached: " + runeSkillAdjusts.size());
|
||||||
|
return runeSkillAdjusts;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void GET_RUNE_REQS(final RuneBase rb) {
|
public void GET_RUNE_REQS(final RuneBase rb) {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.Enum;
|
import engine.mbEnums;
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
import engine.objects.Building;
|
import engine.objects.Building;
|
||||||
import engine.objects.Portal;
|
import engine.objects.Portal;
|
||||||
@@ -49,7 +49,7 @@ public class dbRunegateHandler extends dbHandlerBase {
|
|||||||
public ArrayList<Portal> GET_PORTAL_LIST(int gateUID) {
|
public ArrayList<Portal> GET_PORTAL_LIST(int gateUID) {
|
||||||
|
|
||||||
ArrayList<Portal> portalList = new ArrayList<>();
|
ArrayList<Portal> portalList = new ArrayList<>();
|
||||||
Building sourceBuilding = (Building) DbManager.getObject(Enum.GameObjectType.Building, gateUID);
|
Building sourceBuilding = (Building) DbManager.getObject(mbEnums.GameObjectType.Building, gateUID);
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `static_runegate_portals` WHERE `sourceBuilding` = ?;")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `static_runegate_portals` WHERE `sourceBuilding` = ?;")) {
|
||||||
@@ -60,8 +60,8 @@ public class dbRunegateHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
while (rs.next()) {
|
while (rs.next()) {
|
||||||
int targetBuildingID = rs.getInt("targetBuilding");
|
int targetBuildingID = rs.getInt("targetBuilding");
|
||||||
Building targetBuilding = (Building) DbManager.getObject(Enum.GameObjectType.Building, targetBuildingID);
|
Building targetBuilding = (Building) DbManager.getObject(mbEnums.GameObjectType.Building, targetBuildingID);
|
||||||
Enum.PortalType portalType = Enum.PortalType.valueOf(rs.getString("portalType"));
|
mbEnums.PortalType portalType = mbEnums.PortalType.valueOf(rs.getString("portalType"));
|
||||||
Portal portal = new Portal(sourceBuilding, portalType, targetBuilding);
|
Portal portal = new Portal(sourceBuilding, portalType, targetBuilding);
|
||||||
portalList.add(portal);
|
portalList.add(portal);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,8 @@
|
|||||||
|
|
||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.Enum.ProtectionState;
|
import engine.mbEnums;
|
||||||
|
import engine.mbEnums.ProtectionState;
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
import engine.math.Vector3fImmutable;
|
import engine.math.Vector3fImmutable;
|
||||||
import engine.objects.AbstractGameObject;
|
import engine.objects.AbstractGameObject;
|
||||||
@@ -28,7 +29,7 @@ public class dbShrineHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public dbShrineHandler() {
|
public dbShrineHandler() {
|
||||||
this.localClass = Shrine.class;
|
this.localClass = Shrine.class;
|
||||||
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
|
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void addObject(ArrayList<AbstractGameObject> list, ResultSet rs) throws SQLException {
|
public static void addObject(ArrayList<AbstractGameObject> list, ResultSet rs) throws SQLException {
|
||||||
|
|||||||
@@ -9,8 +9,8 @@
|
|||||||
|
|
||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.Enum;
|
import engine.mbEnums;
|
||||||
import engine.Enum.GameObjectType;
|
import engine.mbEnums.GameObjectType;
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
import engine.objects.MaxSkills;
|
import engine.objects.MaxSkills;
|
||||||
import engine.objects.SkillsBase;
|
import engine.objects.SkillsBase;
|
||||||
@@ -27,7 +27,7 @@ public class dbSkillBaseHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public dbSkillBaseHandler() {
|
public dbSkillBaseHandler() {
|
||||||
this.localClass = SkillsBase.class;
|
this.localClass = SkillsBase.class;
|
||||||
this.localObjectType = Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
|
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public SkillsBase GET_BASE(final int objectUUID) {
|
public SkillsBase GET_BASE(final int objectUUID) {
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
|
import engine.mbEnums;
|
||||||
import engine.objects.SkillReq;
|
import engine.objects.SkillReq;
|
||||||
import engine.powers.PowersBase;
|
import engine.powers.PowersBase;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
@@ -25,7 +26,7 @@ public class dbSkillReqHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public dbSkillReqHandler() {
|
public dbSkillReqHandler() {
|
||||||
this.localClass = SkillReq.class;
|
this.localClass = SkillReq.class;
|
||||||
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
|
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ArrayList<PowersBase> getAllPowersBase() {
|
public static ArrayList<PowersBase> getAllPowersBase() {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.Enum;
|
import engine.mbEnums;
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
import engine.objects.VendorDialog;
|
import engine.objects.VendorDialog;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
@@ -23,12 +23,12 @@ public class dbVendorDialogHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public dbVendorDialogHandler() {
|
public dbVendorDialogHandler() {
|
||||||
this.localClass = VendorDialog.class;
|
this.localClass = VendorDialog.class;
|
||||||
this.localObjectType = Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
|
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public VendorDialog GET_VENDORDIALOG(final int objectUUID) {
|
public VendorDialog GET_VENDORDIALOG(final int objectUUID) {
|
||||||
|
|
||||||
VendorDialog vendorDialog = (VendorDialog) DbManager.getFromCache(Enum.GameObjectType.VendorDialog, objectUUID);
|
VendorDialog vendorDialog = (VendorDialog) DbManager.getFromCache(mbEnums.GameObjectType.VendorDialog, objectUUID);
|
||||||
|
|
||||||
if (vendorDialog != null)
|
if (vendorDialog != null)
|
||||||
return vendorDialog;
|
return vendorDialog;
|
||||||
|
|||||||
@@ -9,14 +9,19 @@
|
|||||||
|
|
||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.Enum.GameObjectType;
|
import engine.mbEnums;
|
||||||
import engine.Enum.ProtectionState;
|
import engine.mbEnums.GameObjectType;
|
||||||
import engine.Enum.TransactionType;
|
import engine.mbEnums.TransactionType;
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
import engine.math.Vector3fImmutable;
|
import engine.objects.Building;
|
||||||
import engine.objects.*;
|
import engine.objects.City;
|
||||||
|
import engine.objects.Transaction;
|
||||||
|
import engine.objects.Warehouse;
|
||||||
import engine.server.MBServerStatics;
|
import engine.server.MBServerStatics;
|
||||||
import org.joda.time.DateTime;
|
import org.joda.time.DateTime;
|
||||||
|
import org.json.simple.JSONArray;
|
||||||
|
import org.json.simple.JSONObject;
|
||||||
|
import org.json.simple.parser.JSONParser;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
@@ -31,463 +36,10 @@ public class dbWarehouseHandler extends dbHandlerBase {
|
|||||||
private static final ConcurrentHashMap<Integer, String> columns = new ConcurrentHashMap<>(MBServerStatics.CHM_INIT_CAP, MBServerStatics.CHM_LOAD, MBServerStatics.CHM_THREAD_LOW);
|
private static final ConcurrentHashMap<Integer, String> columns = new ConcurrentHashMap<>(MBServerStatics.CHM_INIT_CAP, MBServerStatics.CHM_LOAD, MBServerStatics.CHM_THREAD_LOW);
|
||||||
|
|
||||||
public dbWarehouseHandler() {
|
public dbWarehouseHandler() {
|
||||||
this.localClass = Warehouse.class;
|
|
||||||
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void addObject(ArrayList<AbstractGameObject> list, ResultSet rs) throws SQLException {
|
public boolean CREATE_TRANSACTION(int warehouseBuildingID, GameObjectType targetType, int targetUUID, TransactionType transactionType, mbEnums.ResourceType resource, int amount, DateTime date) {
|
||||||
String type = rs.getString("type");
|
|
||||||
switch (type) {
|
|
||||||
case "building":
|
|
||||||
Building building = new Building(rs);
|
|
||||||
DbManager.addToCache(building);
|
|
||||||
list.add(building);
|
|
||||||
break;
|
|
||||||
case "warehouse":
|
|
||||||
Warehouse warehouse = new Warehouse(rs);
|
|
||||||
DbManager.addToCache(warehouse);
|
|
||||||
list.add(warehouse);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public ArrayList<AbstractGameObject> CREATE_WAREHOUSE(int parentZoneID, int OwnerUUID, String name, int meshUUID,
|
|
||||||
Vector3fImmutable location, float meshScale, int currentHP,
|
|
||||||
ProtectionState protectionState, int currentGold, int rank,
|
|
||||||
DateTime upgradeDate, int blueprintUUID, float w, float rotY) {
|
|
||||||
|
|
||||||
ArrayList<AbstractGameObject> warehouseList = new ArrayList<>();
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("CALL `WAREHOUSE_CREATE`(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ,? ,? ,?, ?);")) {
|
|
||||||
|
|
||||||
preparedStatement.setInt(1, parentZoneID);
|
|
||||||
preparedStatement.setInt(2, OwnerUUID);
|
|
||||||
preparedStatement.setString(3, name);
|
|
||||||
preparedStatement.setInt(4, meshUUID);
|
|
||||||
preparedStatement.setFloat(5, location.x);
|
|
||||||
preparedStatement.setFloat(6, location.y);
|
|
||||||
preparedStatement.setFloat(7, location.z);
|
|
||||||
preparedStatement.setFloat(8, meshScale);
|
|
||||||
preparedStatement.setInt(9, currentHP);
|
|
||||||
preparedStatement.setString(10, protectionState.name());
|
|
||||||
preparedStatement.setInt(11, currentGold);
|
|
||||||
preparedStatement.setInt(12, rank);
|
|
||||||
|
|
||||||
if (upgradeDate != null)
|
|
||||||
preparedStatement.setTimestamp(13, new java.sql.Timestamp(upgradeDate.getMillis()));
|
|
||||||
else
|
|
||||||
preparedStatement.setNull(13, java.sql.Types.DATE);
|
|
||||||
|
|
||||||
preparedStatement.setInt(14, blueprintUUID);
|
|
||||||
preparedStatement.setFloat(15, w);
|
|
||||||
preparedStatement.setFloat(16, rotY);
|
|
||||||
|
|
||||||
preparedStatement.execute();
|
|
||||||
ResultSet rs = preparedStatement.getResultSet();
|
|
||||||
|
|
||||||
while (rs.next())
|
|
||||||
addObject(warehouseList, rs);
|
|
||||||
|
|
||||||
while (preparedStatement.getMoreResults()) {
|
|
||||||
rs = preparedStatement.getResultSet();
|
|
||||||
|
|
||||||
while (rs.next())
|
|
||||||
addObject(warehouseList, rs);
|
|
||||||
}
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
return warehouseList;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean updateLocks(final Warehouse wh, long locks) {
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_locks`=? WHERE `UID` = ?")) {
|
|
||||||
|
|
||||||
preparedStatement.setLong(1, locks);
|
|
||||||
preparedStatement.setInt(2, wh.getUID());
|
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean updateGold(final Warehouse wh, int amount) {
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_gold`=? WHERE `UID` = ?")) {
|
|
||||||
|
|
||||||
preparedStatement.setInt(1, amount);
|
|
||||||
preparedStatement.setInt(2, wh.getUID());
|
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean updateStone(final Warehouse wh, int amount) {
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_stone`=? WHERE `UID` = ?")) {
|
|
||||||
|
|
||||||
preparedStatement.setInt(1, amount);
|
|
||||||
preparedStatement.setInt(2, wh.getUID());
|
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean updateTruesteel(final Warehouse wh, int amount) {
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_truesteel`=? WHERE `UID` = ?")) {
|
|
||||||
|
|
||||||
preparedStatement.setInt(1, amount);
|
|
||||||
preparedStatement.setInt(2, wh.getUID());
|
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean updateIron(final Warehouse wh, int amount) {
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_iron`=? WHERE `UID` = ?")) {
|
|
||||||
|
|
||||||
preparedStatement.setInt(1, amount);
|
|
||||||
preparedStatement.setInt(2, wh.getUID());
|
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean updateAdamant(final Warehouse wh, int amount) {
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_adamant`=? WHERE `UID` = ?")) {
|
|
||||||
|
|
||||||
preparedStatement.setInt(1, amount);
|
|
||||||
preparedStatement.setInt(2, wh.getUID());
|
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean updateLumber(final Warehouse wh, int amount) {
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_lumber`=? WHERE `UID` = ?")) {
|
|
||||||
|
|
||||||
preparedStatement.setInt(1, amount);
|
|
||||||
preparedStatement.setInt(2, wh.getUID());
|
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean updateOak(final Warehouse wh, int amount) {
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_oak`=? WHERE `UID` = ?")) {
|
|
||||||
|
|
||||||
preparedStatement.setInt(1, amount);
|
|
||||||
preparedStatement.setInt(2, wh.getUID());
|
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean updateBronzewood(final Warehouse wh, int amount) {
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_bronzewood`=? WHERE `UID` = ?")) {
|
|
||||||
|
|
||||||
preparedStatement.setInt(1, amount);
|
|
||||||
preparedStatement.setInt(2, wh.getUID());
|
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean updateMandrake(final Warehouse wh, int amount) {
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_mandrake`=? WHERE `UID` = ?")) {
|
|
||||||
|
|
||||||
preparedStatement.setInt(1, amount);
|
|
||||||
preparedStatement.setInt(2, wh.getUID());
|
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean updateCoal(final Warehouse wh, int amount) {
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_coal`=? WHERE `UID` = ?")) {
|
|
||||||
|
|
||||||
preparedStatement.setInt(1, amount);
|
|
||||||
preparedStatement.setInt(2, wh.getUID());
|
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean updateAgate(final Warehouse wh, int amount) {
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_agate`=? WHERE `UID` = ?")) {
|
|
||||||
|
|
||||||
preparedStatement.setInt(1, amount);
|
|
||||||
preparedStatement.setInt(2, wh.getUID());
|
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean updateDiamond(final Warehouse wh, int amount) {
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_diamond`=? WHERE `UID` = ?")) {
|
|
||||||
|
|
||||||
preparedStatement.setInt(1, amount);
|
|
||||||
preparedStatement.setInt(2, wh.getUID());
|
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean updateOnyx(final Warehouse wh, int amount) {
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_onyx`=? WHERE `UID` = ?")) {
|
|
||||||
|
|
||||||
preparedStatement.setInt(1, amount);
|
|
||||||
preparedStatement.setInt(2, wh.getUID());
|
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean updateAzoth(final Warehouse wh, int amount) {
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_azoth`=? WHERE `UID` = ?")) {
|
|
||||||
|
|
||||||
preparedStatement.setInt(1, amount);
|
|
||||||
preparedStatement.setInt(2, wh.getUID());
|
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean updateOrichalk(final Warehouse wh, int amount) {
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_orichalk`=? WHERE `UID` = ?")) {
|
|
||||||
|
|
||||||
preparedStatement.setInt(1, amount);
|
|
||||||
preparedStatement.setInt(2, wh.getUID());
|
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean updateAntimony(final Warehouse wh, int amount) {
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_antimony`=? WHERE `UID` = ?")) {
|
|
||||||
|
|
||||||
preparedStatement.setInt(1, amount);
|
|
||||||
preparedStatement.setInt(2, wh.getUID());
|
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean updateSulfur(final Warehouse wh, int amount) {
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_sulfur`=? WHERE `UID` = ?")) {
|
|
||||||
|
|
||||||
preparedStatement.setInt(1, amount);
|
|
||||||
preparedStatement.setInt(2, wh.getUID());
|
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean updateQuicksilver(final Warehouse wh, int amount) {
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_quicksilver`=? WHERE `UID` = ?")) {
|
|
||||||
|
|
||||||
preparedStatement.setInt(1, amount);
|
|
||||||
preparedStatement.setInt(2, wh.getUID());
|
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean updateGalvor(final Warehouse wh, int amount) {
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_galvor`=? WHERE `UID` = ?")) {
|
|
||||||
|
|
||||||
preparedStatement.setInt(1, amount);
|
|
||||||
preparedStatement.setInt(2, wh.getUID());
|
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean updateWormwood(final Warehouse wh, int amount) {
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_wormwood`=? WHERE `UID` = ?")) {
|
|
||||||
|
|
||||||
preparedStatement.setInt(1, amount);
|
|
||||||
preparedStatement.setInt(2, wh.getUID());
|
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean updateObsidian(final Warehouse wh, int amount) {
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_obsidian`=? WHERE `UID` = ?")) {
|
|
||||||
|
|
||||||
preparedStatement.setInt(1, amount);
|
|
||||||
preparedStatement.setInt(2, wh.getUID());
|
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean updateBloodstone(final Warehouse wh, int amount) {
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_bloodstone`=? WHERE `UID` = ?")) {
|
|
||||||
|
|
||||||
preparedStatement.setInt(1, amount);
|
|
||||||
preparedStatement.setInt(2, wh.getUID());
|
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean updateMithril(final Warehouse wh, int amount) {
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_mithril`=? WHERE `UID` = ?")) {
|
|
||||||
|
|
||||||
preparedStatement.setInt(1, amount);
|
|
||||||
preparedStatement.setInt(2, wh.getUID());
|
|
||||||
|
|
||||||
return (preparedStatement.executeUpdate() > 0);
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean CREATE_TRANSACTION(int warehouseBuildingID, GameObjectType targetType, int targetUUID, TransactionType transactionType, Resource resource, int amount, DateTime date) {
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO `dyn_warehouse_transactions` (`warehouseUID`, `targetType`,`targetUID`, `type`,`resource`,`amount`,`date` ) VALUES (?,?,?,?,?,?,?)")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO `dyn_warehouse_transactions` (`warehouseUID`, `targetType`,`targetUID`, `type`,`resource`,`amount`,`date` ) VALUES (?,?,?,?,?,?,?)")) {
|
||||||
@@ -532,24 +84,74 @@ public class dbWarehouseHandler extends dbHandlerBase {
|
|||||||
return transactionsList;
|
return transactionsList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LOAD_ALL_WAREHOUSES() {
|
public void DELETE_WAREHOUSE(Warehouse warehouse) {
|
||||||
|
|
||||||
Warehouse warehouse;
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_warehouse`.*, `object`.`parent`, `object`.`type` FROM `object` LEFT JOIN `obj_warehouse` ON `object`.`UID` = `obj_warehouse`.`UID` WHERE `object`.`type` = 'warehouse';")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("DELETE FROM `dyn_warehouse` WHERE `cityUUID` = ?;")) {
|
||||||
|
preparedStatement.setInt(1, warehouse.city.getObjectUUID());
|
||||||
|
preparedStatement.executeUpdate();
|
||||||
ResultSet rs = preparedStatement.executeQuery();
|
|
||||||
|
|
||||||
while (rs.next()) {
|
|
||||||
warehouse = new Warehouse(rs);
|
|
||||||
warehouse.runAfterLoad();
|
|
||||||
warehouse.loadAllTransactions();
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
Logger.error(e);
|
Logger.error(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean UPDATE_WAREHOUSE(Warehouse warehouse) {
|
||||||
|
|
||||||
|
JSONObject warehouseJSON = new JSONObject();
|
||||||
|
|
||||||
|
JSONObject resources = new JSONObject(warehouse.resources);
|
||||||
|
warehouseJSON.put("resources", resources);
|
||||||
|
|
||||||
|
JSONArray locks = new JSONArray();
|
||||||
|
|
||||||
|
for (mbEnums.ResourceType resource : warehouse.locked)
|
||||||
|
locks.add(resource.name());
|
||||||
|
|
||||||
|
warehouseJSON.put("locked", locks);
|
||||||
|
|
||||||
|
try (Connection connection = DbManager.getConnection();
|
||||||
|
PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO `dyn_warehouse` (`cityUUID`, `warehouse`) VALUES (?, ?) " +
|
||||||
|
"ON DUPLICATE KEY UPDATE `warehouse` = VALUES(`warehouse`)")) {
|
||||||
|
|
||||||
|
preparedStatement.setInt(1, warehouse.city.getObjectUUID());
|
||||||
|
preparedStatement.setString(2, warehouseJSON.toString());
|
||||||
|
|
||||||
|
return (preparedStatement.executeUpdate() > 0);
|
||||||
|
|
||||||
|
} catch (SQLException e) {
|
||||||
|
Logger.error(e);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void LOAD_WAREHOUSES() {
|
||||||
|
|
||||||
|
JSONParser jsonParser = new JSONParser();
|
||||||
|
|
||||||
|
try (Connection connection = DbManager.getConnection();
|
||||||
|
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `dyn_warehouse`;");
|
||||||
|
ResultSet rs = preparedStatement.executeQuery()) {
|
||||||
|
|
||||||
|
while (rs.next()) {
|
||||||
|
int cityUID = rs.getInt("cityUUID");
|
||||||
|
JSONObject jsonObject = (JSONObject) jsonParser.parse(rs.getString("warehouse"));
|
||||||
|
City city = City.getCity(cityUID);
|
||||||
|
city.warehouse = new Warehouse(jsonObject);
|
||||||
|
city.warehouse.city = city;
|
||||||
|
|
||||||
|
// Locate warehouse building
|
||||||
|
for (Building building : city.parentZone.zoneBuildingSet) {
|
||||||
|
if (building.getBlueprint().getBuildingGroup().equals(mbEnums.BuildingGroup.WAREHOUSE)) {
|
||||||
|
city.warehouse.building = building;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
Logger.error(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,11 +9,11 @@
|
|||||||
|
|
||||||
package engine.db.handlers;
|
package engine.db.handlers;
|
||||||
|
|
||||||
import engine.Enum;
|
import engine.mbEnums;
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
import engine.gameManager.ZoneManager;
|
import engine.gameManager.ZoneManager;
|
||||||
import engine.math.Vector2f;
|
|
||||||
import engine.objects.Zone;
|
import engine.objects.Zone;
|
||||||
|
import engine.objects.ZoneTemplate;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
@@ -26,33 +26,29 @@ public class dbZoneHandler extends dbHandlerBase {
|
|||||||
|
|
||||||
public dbZoneHandler() {
|
public dbZoneHandler() {
|
||||||
this.localClass = Zone.class;
|
this.localClass = Zone.class;
|
||||||
this.localObjectType = Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
|
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public ArrayList<Zone> GET_ALL_NODES(Zone zone) {
|
public ArrayList<Zone> GET_ALL_ZONES() {
|
||||||
ArrayList<Zone> wsmList = new ArrayList<>();
|
|
||||||
wsmList.addAll(zone.getNodes());
|
ArrayList<Zone> zoneList = new ArrayList<>();
|
||||||
if (zone.absX == 0.0f) {
|
|
||||||
zone.absX = zone.getXCoord();
|
try (Connection connection = DbManager.getConnection();
|
||||||
|
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_zone`.*, `object`.`parent` FROM `object` INNER JOIN `obj_zone` ON `obj_zone`.`UID` = `object`.`UID` ORDER BY `object`.`UID` ASC;")) {
|
||||||
|
|
||||||
|
ResultSet rs = preparedStatement.executeQuery();
|
||||||
|
zoneList = getObjectsFromRs(rs, 2000);
|
||||||
|
|
||||||
|
} catch (SQLException e) {
|
||||||
|
Logger.error(e);
|
||||||
}
|
}
|
||||||
if (zone.absY == 0.0f) {
|
|
||||||
zone.absY = zone.getYCoord();
|
return zoneList;
|
||||||
}
|
|
||||||
if (zone.absZ == 0.0f) {
|
|
||||||
zone.absZ = zone.getZCoord();
|
|
||||||
}
|
|
||||||
for (Zone child : zone.getNodes()) {
|
|
||||||
child.absX = child.getXCoord() + zone.absX;
|
|
||||||
child.absY = child.getYCoord() + zone.absY;
|
|
||||||
child.absZ = child.getZCoord() + zone.absZ;
|
|
||||||
wsmList.addAll(this.GET_ALL_NODES(child));
|
|
||||||
}
|
|
||||||
return wsmList;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Zone GET_BY_UID(long ID) {
|
public Zone GET_BY_UID(long ID) {
|
||||||
|
|
||||||
Zone zone = (Zone) DbManager.getFromCache(Enum.GameObjectType.Zone, (int) ID);
|
Zone zone = (Zone) DbManager.getFromCache(mbEnums.GameObjectType.Zone, (int) ID);
|
||||||
|
|
||||||
if (zone != null)
|
if (zone != null)
|
||||||
return zone;
|
return zone;
|
||||||
@@ -72,43 +68,38 @@ public class dbZoneHandler extends dbHandlerBase {
|
|||||||
return zone;
|
return zone;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ArrayList<Zone> GET_MAP_NODES(final int objectUUID) {
|
public void LOAD_ALL_ZONE_TEMPLATES() {
|
||||||
|
|
||||||
ArrayList<Zone> zoneList = new ArrayList<>();
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
try (Connection connection = DbManager.getConnection();
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_zone`.*, `object`.`parent` FROM `object` INNER JOIN `obj_zone` ON `obj_zone`.`UID` = `object`.`UID` WHERE `object`.`parent` = ?;")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM static_zone_templates")) {
|
||||||
|
|
||||||
preparedStatement.setLong(1, objectUUID);
|
|
||||||
|
|
||||||
ResultSet rs = preparedStatement.executeQuery();
|
|
||||||
zoneList = getObjectsFromRs(rs, 2000);
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
Logger.error(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
return zoneList;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void LOAD_ZONE_EXTENTS() {
|
|
||||||
|
|
||||||
try (Connection connection = DbManager.getConnection();
|
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `static_zone_size`;")) {
|
|
||||||
|
|
||||||
ResultSet rs = preparedStatement.executeQuery();
|
ResultSet rs = preparedStatement.executeQuery();
|
||||||
|
|
||||||
while (rs.next()) {
|
while (rs.next()) {
|
||||||
Vector2f zoneSize = new Vector2f();
|
ZoneTemplate zoneTemplate = new ZoneTemplate(rs);
|
||||||
int loadNum = rs.getInt("loadNum");
|
ZoneManager._zone_templates.put(zoneTemplate.templateID, zoneTemplate);
|
||||||
zoneSize.x = rs.getFloat("xRadius");
|
|
||||||
zoneSize.y = rs.getFloat("zRadius");
|
|
||||||
ZoneManager._zone_size_data.put(loadNum, zoneSize);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add player city
|
||||||
|
|
||||||
|
ZoneTemplate zoneTemplate = new ZoneTemplate();
|
||||||
|
|
||||||
|
zoneTemplate.templateID = 0;
|
||||||
|
zoneTemplate.sea_level_type = "PARENT";
|
||||||
|
zoneTemplate.sea_level = 0;
|
||||||
|
zoneTemplate.max_blend = 128;
|
||||||
|
zoneTemplate.min_blend = 128;
|
||||||
|
zoneTemplate.terrain_max_y = 5;
|
||||||
|
zoneTemplate.major_radius = (int) mbEnums.CityBoundsType.ZONE.halfExtents;
|
||||||
|
zoneTemplate.minor_radius = (int) mbEnums.CityBoundsType.ZONE.halfExtents;
|
||||||
|
zoneTemplate.terrain_type = "PLANAR";
|
||||||
|
|
||||||
|
ZoneManager._zone_templates.put(zoneTemplate.templateID, zoneTemplate);
|
||||||
|
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
Logger.error(e);
|
Logger.error(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean DELETE_ZONE(final Zone zone) {
|
public boolean DELETE_ZONE(final Zone zone) {
|
||||||
|
|||||||
@@ -9,9 +9,9 @@
|
|||||||
|
|
||||||
package engine.devcmd;
|
package engine.devcmd;
|
||||||
|
|
||||||
import engine.Enum.GameObjectType;
|
|
||||||
import engine.gameManager.ChatManager;
|
import engine.gameManager.ChatManager;
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
|
import engine.mbEnums.GameObjectType;
|
||||||
import engine.objects.*;
|
import engine.objects.*;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|||||||
@@ -9,7 +9,6 @@
|
|||||||
|
|
||||||
package engine.devcmd.cmds;
|
package engine.devcmd.cmds;
|
||||||
|
|
||||||
import engine.Enum.ProtectionState;
|
|
||||||
import engine.InterestManagement.WorldGrid;
|
import engine.InterestManagement.WorldGrid;
|
||||||
import engine.devcmd.AbstractDevCmd;
|
import engine.devcmd.AbstractDevCmd;
|
||||||
import engine.gameManager.ChatManager;
|
import engine.gameManager.ChatManager;
|
||||||
@@ -17,6 +16,7 @@ import engine.gameManager.DbManager;
|
|||||||
import engine.gameManager.ZoneManager;
|
import engine.gameManager.ZoneManager;
|
||||||
import engine.math.Vector3f;
|
import engine.math.Vector3f;
|
||||||
import engine.math.Vector3fImmutable;
|
import engine.math.Vector3fImmutable;
|
||||||
|
import engine.mbEnums.ProtectionState;
|
||||||
import engine.objects.*;
|
import engine.objects.*;
|
||||||
import engine.server.MBServerStatics;
|
import engine.server.MBServerStatics;
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ public class AddGoldCmd extends AbstractDevCmd {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Item gold = pc.getCharItemManager().getGoldInventory();
|
Item gold = pc.charItemManager.getGoldInventory();
|
||||||
int curAmt;
|
int curAmt;
|
||||||
if (gold == null)
|
if (gold == null)
|
||||||
curAmt = 0;
|
curAmt = 0;
|
||||||
@@ -54,13 +54,13 @@ public class AddGoldCmd extends AbstractDevCmd {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!pc.getCharItemManager().addGoldToInventory(amt, true)) {
|
if (!pc.charItemManager.addGoldToInventory(amt, true)) {
|
||||||
throwbackError(pc, "Failed to add gold to inventory");
|
throwbackError(pc, "Failed to add gold to inventory");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ChatManager.chatSayInfo(pc, amt + " gold added to inventory");
|
ChatManager.chatSayInfo(pc, amt + " gold added to inventory");
|
||||||
pc.getCharItemManager().updateInventory();
|
pc.charItemManager.updateInventory();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -9,18 +9,16 @@
|
|||||||
|
|
||||||
package engine.devcmd.cmds;
|
package engine.devcmd.cmds;
|
||||||
|
|
||||||
import engine.Enum.GameObjectType;
|
|
||||||
import engine.devcmd.AbstractDevCmd;
|
import engine.devcmd.AbstractDevCmd;
|
||||||
import engine.gameManager.ChatManager;
|
import engine.gameManager.ChatManager;
|
||||||
import engine.gameManager.DbManager;
|
|
||||||
import engine.gameManager.ZoneManager;
|
import engine.gameManager.ZoneManager;
|
||||||
import engine.math.Vector3fImmutable;
|
import engine.mbEnums;
|
||||||
import engine.objects.*;
|
import engine.objects.AbstractGameObject;
|
||||||
|
import engine.objects.Mob;
|
||||||
|
import engine.objects.PlayerCharacter;
|
||||||
|
import engine.objects.Zone;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Eighty
|
|
||||||
*/
|
|
||||||
public class AddMobCmd extends AbstractDevCmd {
|
public class AddMobCmd extends AbstractDevCmd {
|
||||||
|
|
||||||
public AddMobCmd() {
|
public AddMobCmd() {
|
||||||
@@ -37,27 +35,8 @@ public class AddMobCmd extends AbstractDevCmd {
|
|||||||
|
|
||||||
Zone zone = ZoneManager.findSmallestZone(pc.getLoc());
|
Zone zone = ZoneManager.findSmallestZone(pc.getLoc());
|
||||||
|
|
||||||
if (words[0].equals("all")) {
|
|
||||||
|
|
||||||
for (AbstractGameObject mobbaseAGO : DbManager.getList(GameObjectType.MobBase)) {
|
|
||||||
MobBase mb = (MobBase) mobbaseAGO;
|
|
||||||
int loadID = mb.getObjectUUID();
|
|
||||||
Mob mob = Mob.createMob(loadID, Vector3fImmutable.getRandomPointInCircle(pc.getLoc(), 100),
|
|
||||||
null, true, zone, null, 0, "", 1);
|
|
||||||
if (mob != null) {
|
|
||||||
mob.updateDatabase();
|
|
||||||
this.setResult(String.valueOf(mob.getDBID()));
|
|
||||||
} else {
|
|
||||||
throwbackError(pc, "Failed to create mob of type " + loadID);
|
|
||||||
Logger.error("Failed to create mob of type "
|
|
||||||
+ loadID);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int loadID;
|
int loadID;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
loadID = Integer.parseInt(words[0]);
|
loadID = Integer.parseInt(words[0]);
|
||||||
} catch (NumberFormatException e) {
|
} catch (NumberFormatException e) {
|
||||||
@@ -71,20 +50,19 @@ public class AddMobCmd extends AbstractDevCmd {
|
|||||||
return; // NaN
|
return; // NaN
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (zone == null) {
|
if (zone == null) {
|
||||||
throwbackError(pc, "Failed to find zone to place mob in.");
|
throwbackError(pc, "Failed to find zone to place mob in.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (zone.isPlayerCity()) {
|
if (zone.guild_zone) {
|
||||||
throwbackError(pc, "Cannot use ./mob on Player cities. Try ./servermob instead.");
|
throwbackError(pc, "Cannot use ./mob on Player cities. Try ./servermob instead.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Mob mob = Mob.createMob(loadID, pc.getLoc(),
|
Mob mob = Mob.createMob(loadID, pc.getLoc(),
|
||||||
null, true, zone, null, 0, "", 1);
|
null, zone, null, null, "", 1, mbEnums.AIAgentType.MOBILE);
|
||||||
|
|
||||||
if (mob != null) {
|
if (mob != null) {
|
||||||
mob.updateDatabase();
|
mob.updateDatabase();
|
||||||
ChatManager.chatSayInfo(pc,
|
ChatManager.chatSayInfo(pc,
|
||||||
|
|||||||
@@ -9,10 +9,10 @@
|
|||||||
|
|
||||||
package engine.devcmd.cmds;
|
package engine.devcmd.cmds;
|
||||||
|
|
||||||
import engine.Enum.GameObjectType;
|
|
||||||
import engine.InterestManagement.WorldGrid;
|
import engine.InterestManagement.WorldGrid;
|
||||||
import engine.devcmd.AbstractDevCmd;
|
import engine.devcmd.AbstractDevCmd;
|
||||||
import engine.gameManager.*;
|
import engine.gameManager.*;
|
||||||
|
import engine.mbEnums.GameObjectType;
|
||||||
import engine.objects.*;
|
import engine.objects.*;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
|
|
||||||
|
|||||||
@@ -9,10 +9,10 @@
|
|||||||
|
|
||||||
package engine.devcmd.cmds;
|
package engine.devcmd.cmds;
|
||||||
|
|
||||||
import engine.Enum.PowerActionType;
|
|
||||||
import engine.devcmd.AbstractDevCmd;
|
import engine.devcmd.AbstractDevCmd;
|
||||||
import engine.gameManager.ChatManager;
|
import engine.gameManager.ChatManager;
|
||||||
import engine.gameManager.PowersManager;
|
import engine.gameManager.PowersManager;
|
||||||
|
import engine.mbEnums.PowerActionType;
|
||||||
import engine.objects.AbstractGameObject;
|
import engine.objects.AbstractGameObject;
|
||||||
import engine.objects.PlayerCharacter;
|
import engine.objects.PlayerCharacter;
|
||||||
import engine.powers.ActionsBase;
|
import engine.powers.ActionsBase;
|
||||||
|
|||||||
@@ -1,127 +0,0 @@
|
|||||||
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
|
||||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
|
||||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
|
||||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
|
||||||
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
|
||||||
// Magicbane Emulator Project © 2013 - 2022
|
|
||||||
// www.magicbane.com
|
|
||||||
|
|
||||||
|
|
||||||
package engine.devcmd.cmds;
|
|
||||||
|
|
||||||
import engine.Enum.ModType;
|
|
||||||
import engine.devcmd.AbstractDevCmd;
|
|
||||||
import engine.gameManager.PowersManager;
|
|
||||||
import engine.net.ItemProductionManager;
|
|
||||||
import engine.objects.*;
|
|
||||||
import engine.powers.effectmodifiers.AbstractEffectModifier;
|
|
||||||
import engine.powers.poweractions.AbstractPowerAction;
|
|
||||||
import org.pmw.tinylog.Logger;
|
|
||||||
|
|
||||||
public class AuditFailedItemsCmd extends AbstractDevCmd {
|
|
||||||
|
|
||||||
public AuditFailedItemsCmd() {
|
|
||||||
super("faileditems");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void _doCmd(PlayerCharacter pcSender, String[] words,
|
|
||||||
AbstractGameObject target) {
|
|
||||||
|
|
||||||
|
|
||||||
if (ItemProductionManager.FailedItems.isEmpty())
|
|
||||||
return;
|
|
||||||
|
|
||||||
Logger.info("Auditing Item production Failed Items");
|
|
||||||
|
|
||||||
String newLine = "\r\n";
|
|
||||||
String auditFailedItem = "Failed Item Name | Prefix | Suffix | NPC | Contract | Player | ";
|
|
||||||
|
|
||||||
for (ProducedItem failedItem : ItemProductionManager.FailedItems) {
|
|
||||||
|
|
||||||
String npcName = "";
|
|
||||||
String playerName = "";
|
|
||||||
String contractName = "";
|
|
||||||
|
|
||||||
String prefix = "";
|
|
||||||
String suffix = "";
|
|
||||||
String itemName = "";
|
|
||||||
NPC npc = NPC.getFromCache(failedItem.getNpcUID());
|
|
||||||
|
|
||||||
if (npc == null) {
|
|
||||||
npcName = "null";
|
|
||||||
contractName = "null";
|
|
||||||
} else {
|
|
||||||
npcName = npc.getName();
|
|
||||||
if (npc.getContract() != null)
|
|
||||||
contractName = npc.getContract().getName();
|
|
||||||
}
|
|
||||||
|
|
||||||
PlayerCharacter roller = PlayerCharacter.getFromCache(failedItem.getPlayerID());
|
|
||||||
|
|
||||||
if (roller == null)
|
|
||||||
playerName = "null";
|
|
||||||
else
|
|
||||||
playerName = roller.getName();
|
|
||||||
|
|
||||||
ItemBase ib = ItemBase.getItemBase(failedItem.getItemBaseID());
|
|
||||||
|
|
||||||
if (ib != null) {
|
|
||||||
itemName = ib.getName();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (failedItem.isRandom() == false) {
|
|
||||||
if (failedItem.getPrefix().isEmpty() == false) {
|
|
||||||
AbstractPowerAction pa = PowersManager.getPowerActionByIDString(failedItem.getPrefix());
|
|
||||||
if (pa != null) {
|
|
||||||
for (AbstractEffectModifier aem : pa.getEffectsBase().getModifiers()) {
|
|
||||||
if (aem.modType.equals(ModType.ItemName)) {
|
|
||||||
prefix = aem.getString1();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (failedItem.getSuffix().isEmpty() == false) {
|
|
||||||
AbstractPowerAction pa = PowersManager.getPowerActionByIDString(failedItem.getSuffix());
|
|
||||||
if (pa != null) {
|
|
||||||
for (AbstractEffectModifier aem : pa.getEffectsBase().getModifiers()) {
|
|
||||||
if (aem.modType.equals(ModType.ItemName)) {
|
|
||||||
suffix = aem.getString1();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
prefix = "random";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
auditFailedItem += newLine;
|
|
||||||
auditFailedItem += itemName + " | " + prefix + " | " + suffix + " | " + failedItem.getNpcUID() + ":" + npcName + " | " + contractName + " | " + failedItem.getPlayerID() + ":" + playerName;
|
|
||||||
|
|
||||||
}
|
|
||||||
Logger.info(auditFailedItem);
|
|
||||||
ItemProductionManager.FailedItems.clear();
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String _getUsageString() {
|
|
||||||
return "' /bounds'";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String _getHelpString() {
|
|
||||||
return "Audits all the mobs in a zone.";
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
|
||||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
|
||||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
|
||||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
|
||||||
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
|
||||||
// Magicbane Emulator Project © 2013 - 2022
|
|
||||||
// www.magicbane.com
|
|
||||||
|
|
||||||
|
|
||||||
package engine.devcmd.cmds;
|
|
||||||
|
|
||||||
import engine.InterestManagement.HeightMap;
|
|
||||||
import engine.devcmd.AbstractDevCmd;
|
|
||||||
import engine.gameManager.ZoneManager;
|
|
||||||
import engine.math.Vector2f;
|
|
||||||
import engine.math.Vector3fImmutable;
|
|
||||||
import engine.objects.AbstractGameObject;
|
|
||||||
import engine.objects.PlayerCharacter;
|
|
||||||
import engine.objects.Zone;
|
|
||||||
|
|
||||||
public class AuditHeightMapCmd extends AbstractDevCmd {
|
|
||||||
|
|
||||||
public AuditHeightMapCmd() {
|
|
||||||
super("auditheightmap");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void _doCmd(PlayerCharacter pcSender, String[] words,
|
|
||||||
AbstractGameObject target) {
|
|
||||||
|
|
||||||
int count = Integer.parseInt(words[0]);
|
|
||||||
long start = System.currentTimeMillis();
|
|
||||||
for (int i = 0; i < count; i++) {
|
|
||||||
|
|
||||||
|
|
||||||
Zone currentZone = ZoneManager.findSmallestZone(pcSender.getLoc());
|
|
||||||
|
|
||||||
|
|
||||||
Vector3fImmutable currentLoc = Vector3fImmutable.getRandomPointInCircle(currentZone.getLoc(), currentZone.getBounds().getHalfExtents().x < currentZone.getBounds().getHalfExtents().y ? currentZone.getBounds().getHalfExtents().x : currentZone.getBounds().getHalfExtents().y);
|
|
||||||
|
|
||||||
Vector2f zoneLoc = ZoneManager.worldToZoneSpace(currentLoc, currentZone);
|
|
||||||
|
|
||||||
if (currentZone != null && currentZone.getHeightMap() != null) {
|
|
||||||
float altitude = currentZone.getHeightMap().getInterpolatedTerrainHeight(zoneLoc);
|
|
||||||
float outsetAltitude = HeightMap.getOutsetHeight(altitude, currentZone, pcSender.getLoc());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
long end = System.currentTimeMillis();
|
|
||||||
|
|
||||||
long delta = end - start;
|
|
||||||
|
|
||||||
this.throwbackInfo(pcSender, "Audit Heightmap took " + delta + " ms to run " + count + " times!");
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String _getUsageString() {
|
|
||||||
return "' /auditmobs [zone.UUID]'";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String _getHelpString() {
|
|
||||||
return "Audits all the mobs in a zone.";
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,105 +0,0 @@
|
|||||||
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
|
||||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
|
||||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
|
||||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
|
||||||
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
|
||||||
// Magicbane Emulator Project © 2013 - 2022
|
|
||||||
// www.magicbane.com
|
|
||||||
|
|
||||||
|
|
||||||
package engine.devcmd.cmds;
|
|
||||||
|
|
||||||
import engine.devcmd.AbstractDevCmd;
|
|
||||||
import engine.gameManager.ZoneManager;
|
|
||||||
import engine.objects.AbstractGameObject;
|
|
||||||
import engine.objects.PlayerCharacter;
|
|
||||||
import engine.objects.Zone;
|
|
||||||
|
|
||||||
public class AuditMobsCmd extends AbstractDevCmd {
|
|
||||||
|
|
||||||
public AuditMobsCmd() {
|
|
||||||
super("auditmobs");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void _doCmd(PlayerCharacter pcSender, String[] words,
|
|
||||||
AbstractGameObject target) {
|
|
||||||
if (pcSender == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
//get Zone to check mobs against
|
|
||||||
|
|
||||||
Zone zone;
|
|
||||||
|
|
||||||
if (words.length == 2) {
|
|
||||||
if (words[0].equals("all")) {
|
|
||||||
int plusplus = 0;
|
|
||||||
int count = Integer.parseInt(words[1]);
|
|
||||||
for (Zone zoneMicro : ZoneManager.getAllZones()) {
|
|
||||||
int size = zoneMicro.zoneMobSet.size();
|
|
||||||
|
|
||||||
if (size >= count) {
|
|
||||||
plusplus++;
|
|
||||||
throwbackInfo(pcSender, zoneMicro.getName() + " at location " + zoneMicro.getLoc().toString() + " has " + size + " mobs. ");
|
|
||||||
System.out.println(zoneMicro.getName() + " at location " + zoneMicro.getLoc().toString() + " has " + size + " mobs. ");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
throwbackInfo(pcSender, " there are " + plusplus + " zones with at least " + count + " mobs in each.");
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (words.length > 1) {
|
|
||||||
this.sendUsage(pcSender);
|
|
||||||
return;
|
|
||||||
} else if (words.length == 1) {
|
|
||||||
int uuid;
|
|
||||||
try {
|
|
||||||
uuid = Integer.parseInt(words[0]);
|
|
||||||
zone = ZoneManager.getZoneByUUID(uuid);
|
|
||||||
} catch (NumberFormatException e) {
|
|
||||||
zone = ZoneManager.findSmallestZone(pcSender.getLoc());
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
zone = ZoneManager.findSmallestZone(pcSender.getLoc());
|
|
||||||
|
|
||||||
if (zone == null) {
|
|
||||||
throwbackError(pcSender, "Unable to find the zone");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//get list of mobs for zone
|
|
||||||
|
|
||||||
if (zone.zoneMobSet.isEmpty()) {
|
|
||||||
throwbackError(pcSender, "No mobs found for this zone.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// ConcurrentHashMap<Integer, Mob> spawnMap = Mob.getSpawnMap();
|
|
||||||
//ConcurrentHashMap<Mob, Long> respawnMap = Mob.getRespawnMap();
|
|
||||||
// ConcurrentHashMap<Mob, Long> despawnMap = Mob.getDespawnMap();
|
|
||||||
|
|
||||||
throwbackInfo(pcSender, zone.getName() + ", numMobs: " + zone.zoneMobSet.size());
|
|
||||||
throwbackInfo(pcSender, "UUID, dbID, inRespawnMap, isAlive, activeAI, Loc");
|
|
||||||
|
|
||||||
|
|
||||||
//mob not found in spawn map, check respawn
|
|
||||||
boolean inRespawn = false;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String _getUsageString() {
|
|
||||||
return "' /auditmobs [zone.UUID]'";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String _getHelpString() {
|
|
||||||
return "Audits all the mobs in a zone.";
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -9,8 +9,8 @@
|
|||||||
|
|
||||||
package engine.devcmd.cmds;
|
package engine.devcmd.cmds;
|
||||||
|
|
||||||
import engine.Enum.GameObjectType;
|
|
||||||
import engine.devcmd.AbstractDevCmd;
|
import engine.devcmd.AbstractDevCmd;
|
||||||
|
import engine.mbEnums.GameObjectType;
|
||||||
import engine.objects.AbstractGameObject;
|
import engine.objects.AbstractGameObject;
|
||||||
import engine.objects.Building;
|
import engine.objects.Building;
|
||||||
import engine.objects.PlayerCharacter;
|
import engine.objects.PlayerCharacter;
|
||||||
|
|||||||
@@ -1,114 +0,0 @@
|
|||||||
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
|
||||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
|
||||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
|
||||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
|
||||||
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
|
||||||
// Magicbane Emulator Project © 2013 - 2022
|
|
||||||
// www.magicbane.com
|
|
||||||
|
|
||||||
|
|
||||||
package engine.devcmd.cmds;
|
|
||||||
|
|
||||||
import engine.devcmd.AbstractDevCmd;
|
|
||||||
import engine.gameManager.DbManager;
|
|
||||||
import engine.gameManager.SessionManager;
|
|
||||||
import engine.math.Vector3fImmutable;
|
|
||||||
import engine.objects.AbstractGameObject;
|
|
||||||
import engine.objects.PlayerCharacter;
|
|
||||||
import engine.util.MiscUtils;
|
|
||||||
|
|
||||||
public class ChangeNameCmd extends AbstractDevCmd {
|
|
||||||
|
|
||||||
public ChangeNameCmd() {
|
|
||||||
super("changename");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void _doCmd(PlayerCharacter pc, String[] words,
|
|
||||||
AbstractGameObject target) {
|
|
||||||
Vector3fImmutable loc = null;
|
|
||||||
|
|
||||||
// Arg Count Check
|
|
||||||
if (words.length < 2) {
|
|
||||||
this.sendUsage(pc);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
String oldFirst = words[0];
|
|
||||||
String newFirst = words[1];
|
|
||||||
String newLast = "";
|
|
||||||
if (words.length > 2) {
|
|
||||||
newLast = words[2];
|
|
||||||
for (int i = 3; i < words.length; i++)
|
|
||||||
newLast += ' ' + words[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
//verify new name length
|
|
||||||
if (newFirst.length() < 3) {
|
|
||||||
this.throwbackError(pc, "Error: First name is incorrect length. Must be between 3 and 15 characters");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//verify old name length
|
|
||||||
if (newLast.length() > 50) {
|
|
||||||
this.throwbackError(pc, "Error: Last name is incorrect length. Must be no more than 50 characters");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if firstname is valid
|
|
||||||
if (MiscUtils.checkIfFirstNameInvalid(newFirst)) {
|
|
||||||
this.throwbackError(pc, "Error: First name is not allowed");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//get the world ID we're modifying for
|
|
||||||
|
|
||||||
//test if first name is unique, unless new and old first name are equal.
|
|
||||||
if (!(oldFirst.equals(newFirst))) {
|
|
||||||
if (!DbManager.PlayerCharacterQueries.IS_CHARACTER_NAME_UNIQUE(newFirst)) {
|
|
||||||
this.throwbackError(pc, "Error: First name is not unique.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//tests passed, update name in database
|
|
||||||
if (!DbManager.PlayerCharacterQueries.UPDATE_NAME(oldFirst, newFirst, newLast)) {
|
|
||||||
this.throwbackError(pc, "Error: Database failed to update the name.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Finally update player ingame
|
|
||||||
PlayerCharacter pcTar = null;
|
|
||||||
try {
|
|
||||||
pcTar = SessionManager
|
|
||||||
.getPlayerCharacterByLowerCaseName(words[0]);
|
|
||||||
pcTar.setFirstName(newFirst);
|
|
||||||
pcTar.setLastName(newLast);
|
|
||||||
this.setTarget(pcTar); //for logging
|
|
||||||
|
|
||||||
//specify if last name is ascii characters only
|
|
||||||
String lastAscii = newLast.replaceAll("[^\\p{ASCII}]", "");
|
|
||||||
pcTar.setAsciiLastName(lastAscii.equals(newLast));
|
|
||||||
} catch (Exception e) {
|
|
||||||
this.throwbackError(pc, "Database was updated but ingame character failed to update.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
String out = oldFirst + " was changed to " + newFirst + (newLast.isEmpty() ? "." : (' ' + newLast + '.'));
|
|
||||||
this.throwbackInfo(pc, out);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String _getHelpString() {
|
|
||||||
return "Changes the name of a player";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String _getUsageString() {
|
|
||||||
return "'./changename oldFirstName newFirstName newLastName'";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
|
||||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
|
||||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
|
||||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
|
||||||
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
|
||||||
// Magicbane Emulator Project © 2013 - 2022
|
|
||||||
// www.magicbane.com
|
|
||||||
|
|
||||||
|
|
||||||
package engine.devcmd.cmds;
|
|
||||||
|
|
||||||
import engine.devcmd.AbstractDevCmd;
|
|
||||||
import engine.net.client.msg.TargetedActionMsg;
|
|
||||||
import engine.objects.AbstractGameObject;
|
|
||||||
import engine.objects.PlayerCharacter;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Eighty
|
|
||||||
*/
|
|
||||||
public class CombatMessageCmd extends AbstractDevCmd {
|
|
||||||
|
|
||||||
public CombatMessageCmd() {
|
|
||||||
super("cm");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void _doCmd(PlayerCharacter pcSender, String[] args,
|
|
||||||
AbstractGameObject target) {
|
|
||||||
if (pcSender == null)
|
|
||||||
return;
|
|
||||||
if (args.length != 1) {
|
|
||||||
this.sendUsage(pcSender);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
int num = 0;
|
|
||||||
try {
|
|
||||||
num = Integer.parseInt(args[0]);
|
|
||||||
} catch (NumberFormatException e) {
|
|
||||||
throwbackError(pcSender, "Supplied message number " + args[0] + " failed to parse to an Integer");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
TargetedActionMsg.un2cnt = num;
|
|
||||||
throwbackInfo(pcSender, "CombatMessage set to " + num);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String _getUsageString() {
|
|
||||||
return "' /cm [cmNumber]'";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String _getHelpString() {
|
|
||||||
return "Sets the combat message to the supplied integer value";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -11,7 +11,6 @@ package engine.devcmd.cmds;
|
|||||||
|
|
||||||
import engine.devcmd.AbstractDevCmd;
|
import engine.devcmd.AbstractDevCmd;
|
||||||
import engine.objects.AbstractGameObject;
|
import engine.objects.AbstractGameObject;
|
||||||
import engine.objects.ItemBase;
|
|
||||||
import engine.objects.ItemFactory;
|
import engine.objects.ItemFactory;
|
||||||
import engine.objects.PlayerCharacter;
|
import engine.objects.PlayerCharacter;
|
||||||
|
|
||||||
@@ -27,28 +26,20 @@ public class CreateItemCmd extends AbstractDevCmd {
|
|||||||
@Override
|
@Override
|
||||||
protected void _doCmd(PlayerCharacter pc, String[] words,
|
protected void _doCmd(PlayerCharacter pc, String[] words,
|
||||||
AbstractGameObject target) {
|
AbstractGameObject target) {
|
||||||
|
|
||||||
if (words.length < 2) {
|
if (words.length < 2) {
|
||||||
this.sendUsage(pc);
|
this.sendUsage(pc);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int id;
|
|
||||||
id = ItemBase.getIDByName(words[0]);
|
|
||||||
|
|
||||||
if (id == 0)
|
int templateID = Integer.parseInt(words[0]);
|
||||||
id = Integer.parseInt(words[0]);
|
|
||||||
if (id == 7) {
|
|
||||||
this.throwbackInfo(pc, "use /addgold to add gold.....");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
int size = 1;
|
int size = 1;
|
||||||
|
|
||||||
if (words.length < 3) {
|
if (words.length == 2)
|
||||||
size = Integer.parseInt(words[1]);
|
size = Integer.parseInt(words[1]);
|
||||||
}
|
|
||||||
|
|
||||||
ItemFactory.fillInventory(pc, id, size);
|
|
||||||
|
|
||||||
|
ItemFactory.fillInventory(pc, templateID, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -58,7 +49,7 @@ public class CreateItemCmd extends AbstractDevCmd {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String _getUsageString() {
|
protected String _getUsageString() {
|
||||||
return "' /createitem <ItembaseID> <quantity>'";
|
return "' /createitem <templateID> <quantity>'";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,122 +0,0 @@
|
|||||||
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
|
||||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
|
||||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
|
||||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
|
||||||
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
|
||||||
// Magicbane Emulator Project © 2013 - 2022
|
|
||||||
// www.magicbane.com
|
|
||||||
|
|
||||||
|
|
||||||
package engine.devcmd.cmds;
|
|
||||||
|
|
||||||
import engine.devcmd.AbstractDevCmd;
|
|
||||||
import engine.jobs.DebugTimerJob;
|
|
||||||
import engine.objects.AbstractGameObject;
|
|
||||||
import engine.objects.PlayerCharacter;
|
|
||||||
|
|
||||||
public class DebugCmd extends AbstractDevCmd {
|
|
||||||
|
|
||||||
|
|
||||||
public DebugCmd() {
|
|
||||||
super("debug");
|
|
||||||
// super("debug", MBServerStatics.ACCESS_GROUP_ALL_TEAM, 0, false, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void toggleDebugTimer(PlayerCharacter pc, String name, int num, int duration, boolean toggle) {
|
|
||||||
if (toggle) {
|
|
||||||
DebugTimerJob dtj = new DebugTimerJob(pc, name, num, duration);
|
|
||||||
pc.renewTimer(name, dtj, duration);
|
|
||||||
} else
|
|
||||||
pc.cancelTimer(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void _doCmd(PlayerCharacter pc, String[] words,
|
|
||||||
AbstractGameObject target) {
|
|
||||||
if (words.length < 2) {
|
|
||||||
this.sendUsage(pc);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pc == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
//pc.setDebug must use bit sizes: 1, 2, 4, 8, 16, 32
|
|
||||||
|
|
||||||
String command = words[0].toLowerCase();
|
|
||||||
boolean toggle = (words[1].toLowerCase().equals("on")) ? true : false;
|
|
||||||
|
|
||||||
switch (command) {
|
|
||||||
case "magictrek":
|
|
||||||
pc.RUN_MAGICTREK = toggle;
|
|
||||||
|
|
||||||
break;
|
|
||||||
case "combat":
|
|
||||||
pc.setDebug(64, toggle);
|
|
||||||
|
|
||||||
break;
|
|
||||||
case "health":
|
|
||||||
toggleDebugTimer(pc, "Debug_Health", 1, 1000, toggle);
|
|
||||||
|
|
||||||
break;
|
|
||||||
case "mana":
|
|
||||||
toggleDebugTimer(pc, "Debug_Mana", 2, 1000, toggle);
|
|
||||||
|
|
||||||
break;
|
|
||||||
case "stamina":
|
|
||||||
toggleDebugTimer(pc, "Debug_Stamina", 3, 500, toggle);
|
|
||||||
|
|
||||||
break;
|
|
||||||
case "spells":
|
|
||||||
pc.setDebug(16, toggle);
|
|
||||||
|
|
||||||
break;
|
|
||||||
case "damageabsorber":
|
|
||||||
pc.setDebug(2, toggle);
|
|
||||||
|
|
||||||
break;
|
|
||||||
case "recast":
|
|
||||||
case "recycle":
|
|
||||||
pc.setDebug(4, toggle);
|
|
||||||
|
|
||||||
break;
|
|
||||||
case "seeinvis":
|
|
||||||
pc.setDebug(8, toggle);
|
|
||||||
|
|
||||||
break;
|
|
||||||
case "movement":
|
|
||||||
pc.setDebug(1, toggle);
|
|
||||||
|
|
||||||
break;
|
|
||||||
case "noaggro":
|
|
||||||
pc.setDebug(32, toggle);
|
|
||||||
|
|
||||||
break;
|
|
||||||
// case "loot":
|
|
||||||
// MBServerStatics.debugLoot = toggle;
|
|
||||||
// break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
String output = "Debug for " + command + " not found.";
|
|
||||||
throwbackError(pc, output);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
setTarget(pc); //for logging
|
|
||||||
|
|
||||||
String output = "Debug for " + command + " turned " + ((toggle) ? "on." : "off.");
|
|
||||||
throwbackInfo(pc, output);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String _getHelpString() {
|
|
||||||
return "Runs debug commands";
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String _getUsageString() {
|
|
||||||
return "'./Debug command on/off'";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,66 +0,0 @@
|
|||||||
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
|
||||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
|
||||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
|
||||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
|
||||||
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
|
||||||
// Magicbane Emulator Project © 2013 - 2022
|
|
||||||
// www.magicbane.com
|
|
||||||
|
|
||||||
|
|
||||||
package engine.devcmd.cmds;
|
|
||||||
|
|
||||||
import engine.Enum.GameObjectType;
|
|
||||||
import engine.devcmd.AbstractDevCmd;
|
|
||||||
import engine.objects.AbstractGameObject;
|
|
||||||
import engine.objects.Mob;
|
|
||||||
import engine.objects.PlayerCharacter;
|
|
||||||
|
|
||||||
public class DespawnCmd extends AbstractDevCmd {
|
|
||||||
|
|
||||||
public DespawnCmd() {
|
|
||||||
super("debugmob");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void _doCmd(PlayerCharacter pc, String[] words,
|
|
||||||
AbstractGameObject target) {
|
|
||||||
|
|
||||||
|
|
||||||
if (pc == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Mob mob = null;
|
|
||||||
|
|
||||||
if (target != null && target.getObjectType().equals(GameObjectType.Mob))
|
|
||||||
mob = (Mob) target;
|
|
||||||
|
|
||||||
if (mob == null)
|
|
||||||
mob = Mob.getFromCache(Integer.parseInt(words[1]));
|
|
||||||
|
|
||||||
if (mob == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (words[0].equalsIgnoreCase("respawn")) {
|
|
||||||
mob.respawn();
|
|
||||||
this.throwbackInfo(pc, "Mob with ID " + mob.getObjectUUID() + " Respawned");
|
|
||||||
} else if (words[0].equalsIgnoreCase("despawn")) {
|
|
||||||
mob.despawn();
|
|
||||||
this.throwbackInfo(pc, "Mob with ID " + mob.getObjectUUID() + " Despawned");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String _getHelpString() {
|
|
||||||
return "Gets distance from a target.";
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String _getUsageString() {
|
|
||||||
return "' /distance'";
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,65 +0,0 @@
|
|||||||
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
|
||||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
|
||||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
|
||||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
|
||||||
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
|
||||||
// Magicbane Emulator Project © 2013 - 2022
|
|
||||||
// www.magicbane.com
|
|
||||||
|
|
||||||
|
|
||||||
package engine.devcmd.cmds;
|
|
||||||
|
|
||||||
import engine.devcmd.AbstractDevCmd;
|
|
||||||
import engine.math.Vector3fImmutable;
|
|
||||||
import engine.objects.AbstractGameObject;
|
|
||||||
import engine.objects.AbstractWorldObject;
|
|
||||||
import engine.objects.PlayerCharacter;
|
|
||||||
|
|
||||||
public class DistanceCmd extends AbstractDevCmd {
|
|
||||||
|
|
||||||
public DistanceCmd() {
|
|
||||||
super("distance");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void _doCmd(PlayerCharacter pc, String[] words,
|
|
||||||
AbstractGameObject target) {
|
|
||||||
|
|
||||||
|
|
||||||
// Arg Count Check
|
|
||||||
if (words.length != 1) {
|
|
||||||
this.sendUsage(pc);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (pc == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (target == null || !(target instanceof AbstractWorldObject)) {
|
|
||||||
throwbackError(pc, "No target found.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
AbstractWorldObject awoTarget = (AbstractWorldObject) target;
|
|
||||||
|
|
||||||
Vector3fImmutable pcLoc = pc.getLoc();
|
|
||||||
Vector3fImmutable tarLoc = awoTarget.getLoc();
|
|
||||||
String out = "Distance: " + pcLoc.distance(tarLoc) +
|
|
||||||
"\r\nYour Loc: " + pcLoc.x + 'x' + pcLoc.y + 'x' + pcLoc.z +
|
|
||||||
"\r\nTarget Loc: " + tarLoc.x + 'x' + tarLoc.y + 'x' + tarLoc.z;
|
|
||||||
throwbackInfo(pc, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String _getHelpString() {
|
|
||||||
return "Gets distance from a target.";
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String _getUsageString() {
|
|
||||||
return "' /distance'";
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
|
||||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
|
||||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
|
||||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
|
||||||
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
|
||||||
// Magicbane Emulator Project © 2013 - 2022
|
|
||||||
// www.magicbane.com
|
|
||||||
|
|
||||||
|
|
||||||
package engine.devcmd.cmds;
|
|
||||||
|
|
||||||
import engine.devcmd.AbstractDevCmd;
|
|
||||||
import engine.gameManager.ChatManager;
|
|
||||||
import engine.gameManager.PowersManager;
|
|
||||||
import engine.objects.AbstractGameObject;
|
|
||||||
import engine.objects.PlayerCharacter;
|
|
||||||
import engine.powers.EffectsBase;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Eighty
|
|
||||||
*/
|
|
||||||
public class EffectCmd extends AbstractDevCmd {
|
|
||||||
|
|
||||||
public EffectCmd() {
|
|
||||||
super("effect");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void _doCmd(PlayerCharacter pcSender, String[] args,
|
|
||||||
AbstractGameObject target) {
|
|
||||||
int ID = 0;
|
|
||||||
int token = 0;
|
|
||||||
|
|
||||||
if (args.length != 2) {
|
|
||||||
this.sendUsage(pcSender);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
ID = Integer.parseInt(args[0]);
|
|
||||||
token = Integer.parseInt(args[1]);
|
|
||||||
|
|
||||||
EffectsBase eb = PowersManager.setEffectToken(ID, token);
|
|
||||||
if (eb == null) {
|
|
||||||
throwbackError(pcSender, "Unable to find EffectsBase " + ID
|
|
||||||
+ " to modify.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
ChatManager.chatSayInfo(pcSender,
|
|
||||||
"EffectsBase with ID " + ID + " changed token to " + token);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String _getUsageString() {
|
|
||||||
return "' /effect EffectsBaseID Token'";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String _getHelpString() {
|
|
||||||
return "Temporarily places the effect token with the corresponding EffectsBase on the server";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,87 +0,0 @@
|
|||||||
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
|
||||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
|
||||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
|
||||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
|
||||||
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
|
||||||
// Magicbane Emulator Project © 2013 - 2022
|
|
||||||
// www.magicbane.com
|
|
||||||
|
|
||||||
|
|
||||||
package engine.devcmd.cmds;
|
|
||||||
|
|
||||||
import engine.devcmd.AbstractDevCmd;
|
|
||||||
import engine.objects.*;
|
|
||||||
|
|
||||||
public class EnchantCmd extends AbstractDevCmd {
|
|
||||||
|
|
||||||
public EnchantCmd() {
|
|
||||||
super("enchant");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void _doCmd(PlayerCharacter pc, String[] words,
|
|
||||||
AbstractGameObject target) {
|
|
||||||
int rank = 0;
|
|
||||||
if (words.length < 1) {
|
|
||||||
this.sendUsage(pc);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
try {
|
|
||||||
rank = Integer.parseInt(words[0]);
|
|
||||||
} catch (Exception e) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Item item;
|
|
||||||
if (target == null || target instanceof Item)
|
|
||||||
item = (Item) target;
|
|
||||||
else {
|
|
||||||
throwbackError(pc, "Must have an item targeted");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
CharacterItemManager cim = pc.getCharItemManager();
|
|
||||||
if (cim == null) {
|
|
||||||
throwbackError(pc, "Unable to find the character item manager for player " + pc.getFirstName() + '.');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (words[0].equals("clear")) {
|
|
||||||
item.clearEnchantments();
|
|
||||||
cim.updateInventory();
|
|
||||||
this.setResult(String.valueOf(item.getObjectUUID()));
|
|
||||||
} else {
|
|
||||||
int cnt = words.length;
|
|
||||||
for (int i = 1; i < cnt; i++) {
|
|
||||||
String enchant = words[i];
|
|
||||||
boolean valid = true;
|
|
||||||
for (Effect eff : item.getEffects().values()) {
|
|
||||||
if (eff.getEffectsBase().getIDString().equals(enchant)) {
|
|
||||||
throwbackError(pc, "This item already has that enchantment");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (valid) {
|
|
||||||
item.addPermanentEnchantmentForDev(enchant, rank);
|
|
||||||
this.setResult(String.valueOf(item.getObjectUUID()));
|
|
||||||
} else
|
|
||||||
throwbackError(pc, "Invalid Enchantment. Enchantment must consist of SUF-001 to SUF-328 or PRE-001 to PRE-334. Sent " + enchant + '.');
|
|
||||||
}
|
|
||||||
cim.updateInventory();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String _getHelpString() {
|
|
||||||
return "Enchants an item with a prefix and suffix";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String _getUsageString() {
|
|
||||||
return "' /enchant clear/Enchant1 Enchant2 Enchant3 ...'";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,84 +0,0 @@
|
|||||||
package engine.devcmd.cmds;
|
|
||||||
|
|
||||||
import engine.Enum.BuildingGroup;
|
|
||||||
import engine.Enum.GameObjectType;
|
|
||||||
import engine.devcmd.AbstractDevCmd;
|
|
||||||
import engine.math.Vector3fImmutable;
|
|
||||||
import engine.objects.*;
|
|
||||||
|
|
||||||
public class GateInfoCmd extends AbstractDevCmd {
|
|
||||||
|
|
||||||
public GateInfoCmd() {
|
|
||||||
super("gateinfo");
|
|
||||||
}
|
|
||||||
|
|
||||||
// AbstractDevCmd Overridden methods
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void _doCmd(PlayerCharacter player, String[] args,
|
|
||||||
AbstractGameObject target) {
|
|
||||||
|
|
||||||
Building targetBuilding;
|
|
||||||
String outString;
|
|
||||||
Runegate runeGate;
|
|
||||||
Blueprint blueprint;
|
|
||||||
String newline = "\r\n ";
|
|
||||||
targetBuilding = (Building) target;
|
|
||||||
|
|
||||||
if (targetBuilding.getObjectType() != GameObjectType.Building) {
|
|
||||||
throwbackInfo(player, "GateInfo: target must be a Building");
|
|
||||||
throwbackInfo(player, "Found" + targetBuilding.getObjectType().toString());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
blueprint = Blueprint._meshLookup.get(targetBuilding.getMeshUUID());
|
|
||||||
|
|
||||||
if (blueprint == null ||
|
|
||||||
(blueprint.getBuildingGroup() != BuildingGroup.RUNEGATE)) {
|
|
||||||
throwbackInfo(player, "showgate: target must be a Runegate");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
runeGate = Runegate._runegates.get(targetBuilding.getObjectUUID());
|
|
||||||
|
|
||||||
outString = "RungateType: " + runeGate.gateBuilding.getName();
|
|
||||||
outString += newline;
|
|
||||||
|
|
||||||
outString += "Portal State:";
|
|
||||||
outString += newline;
|
|
||||||
|
|
||||||
for (Portal portal : runeGate.getPortals()) {
|
|
||||||
|
|
||||||
outString += "Portal: " + portal.portalType.name();
|
|
||||||
outString += " Active: " + portal.isActive();
|
|
||||||
outString += " Dest: " + portal.targetGate.getName();
|
|
||||||
outString += newline;
|
|
||||||
outString += " Origin: " + portal.getPortalLocation().x + 'x';
|
|
||||||
outString += " " + portal.getPortalLocation().y + 'y';
|
|
||||||
outString += newline;
|
|
||||||
|
|
||||||
Vector3fImmutable offset = portal.getPortalLocation().subtract(targetBuilding.getLoc());
|
|
||||||
outString += " Offset: " + offset.x + "x " + offset.z + 'y';
|
|
||||||
outString += newline;
|
|
||||||
outString += newline;
|
|
||||||
|
|
||||||
}
|
|
||||||
outString += newline;
|
|
||||||
throwbackInfo(player, outString);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String _getHelpString() {
|
|
||||||
return "Displays a runegate's gate status";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String _getUsageString() {
|
|
||||||
|
|
||||||
|
|
||||||
return "/gateinfo <target runegate> \n";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
|
||||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
|
||||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
|
||||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
|
||||||
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
|
||||||
// Magicbane Emulator Project © 2013 - 2022
|
|
||||||
// www.magicbane.com
|
|
||||||
|
|
||||||
|
|
||||||
package engine.devcmd.cmds;
|
|
||||||
|
|
||||||
import engine.devcmd.AbstractDevCmd;
|
|
||||||
import engine.gameManager.SessionManager;
|
|
||||||
import engine.net.client.ClientConnection;
|
|
||||||
import engine.net.client.msg.VendorDialogMsg;
|
|
||||||
import engine.objects.AbstractGameObject;
|
|
||||||
import engine.objects.PlayerCharacter;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Eighty
|
|
||||||
*/
|
|
||||||
public class GetBankCmd extends AbstractDevCmd {
|
|
||||||
|
|
||||||
public GetBankCmd() {
|
|
||||||
super("getbank");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void _doCmd(PlayerCharacter pcSender, String[] args,
|
|
||||||
AbstractGameObject target) {
|
|
||||||
if (pcSender == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
ClientConnection cc = SessionManager.getClientConnection(pcSender);
|
|
||||||
if (cc == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
VendorDialogMsg.getBank(pcSender, null, cc);
|
|
||||||
this.setTarget(pcSender); //for logging
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String _getUsageString() {
|
|
||||||
return "' /getbank'";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String _getHelpString() {
|
|
||||||
return "Opens bank window";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -9,11 +9,10 @@
|
|||||||
|
|
||||||
package engine.devcmd.cmds;
|
package engine.devcmd.cmds;
|
||||||
|
|
||||||
import engine.InterestManagement.HeightMap;
|
import engine.InterestManagement.Terrain;
|
||||||
import engine.devcmd.AbstractDevCmd;
|
import engine.devcmd.AbstractDevCmd;
|
||||||
import engine.gameManager.ZoneManager;
|
import engine.gameManager.ZoneManager;
|
||||||
import engine.math.Vector2f;
|
import engine.math.Vector2f;
|
||||||
import engine.math.Vector3fImmutable;
|
|
||||||
import engine.objects.AbstractGameObject;
|
import engine.objects.AbstractGameObject;
|
||||||
import engine.objects.PlayerCharacter;
|
import engine.objects.PlayerCharacter;
|
||||||
import engine.objects.Zone;
|
import engine.objects.Zone;
|
||||||
@@ -22,205 +21,79 @@ public class GetHeightCmd extends AbstractDevCmd {
|
|||||||
|
|
||||||
public GetHeightCmd() {
|
public GetHeightCmd() {
|
||||||
super("getHeight");
|
super("getHeight");
|
||||||
this.addCmdString("height");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void _doCmd(PlayerCharacter pc, String[] words,
|
protected void _doCmd(PlayerCharacter playerCharacter, String[] words,
|
||||||
AbstractGameObject target) {
|
AbstractGameObject target) {
|
||||||
|
|
||||||
boolean end = true;
|
Zone currentZone;
|
||||||
|
Zone parentZone;
|
||||||
|
Zone heightmapZone;
|
||||||
|
|
||||||
float height = HeightMap.getWorldHeight(pc);
|
currentZone = ZoneManager.findSmallestZone(playerCharacter.getLoc());
|
||||||
|
heightmapZone = Terrain.getNextZoneWithTerrain(currentZone);
|
||||||
|
parentZone = Terrain.getNextZoneWithTerrain(currentZone.parent);
|
||||||
|
|
||||||
this.throwbackInfo(pc, "Altitude : " + height);
|
Vector2f childZoneLoc = ZoneManager.worldToTerrainSpace(playerCharacter.getLoc(), heightmapZone);
|
||||||
|
Vector2f childZoneOffset = ZoneManager.worldToZoneOffset(playerCharacter.getLoc(), heightmapZone);
|
||||||
|
Vector2f normalizedOffset = new Vector2f(Math.abs(childZoneOffset.x) / heightmapZone.template.major_radius,
|
||||||
|
Math.abs(childZoneOffset.y) / heightmapZone.template.minor_radius);
|
||||||
|
Vector2f parentZoneLoc = ZoneManager.worldToTerrainSpace(playerCharacter.getLoc(), parentZone);
|
||||||
|
|
||||||
this.throwbackInfo(pc, "Character Height: " + pc.getCharacterHeight());
|
float childHeight = heightmapZone.terrain.getInterpolatedTerrainHeight(childZoneLoc);
|
||||||
this.throwbackInfo(pc, "Character Height to start swimming: " + pc.centerHeight);
|
childHeight = childHeight + heightmapZone.global_height;
|
||||||
|
|
||||||
Zone zone = ZoneManager.findSmallestZone(pc.getLoc());
|
float parentHeight = parentZone.terrain.getInterpolatedTerrainHeight(parentZoneLoc);
|
||||||
this.throwbackInfo(pc, "Water Level : " + zone.getSeaLevel());
|
parentHeight += parentZone.global_height;
|
||||||
this.throwbackInfo(pc, "Character Water Level Above : " + (pc.getCharacterHeight() + height - zone.getSeaLevel()));
|
|
||||||
|
|
||||||
if (end)
|
float blendedHeight = Terrain.getWorldHeight(currentZone, playerCharacter.getLoc());
|
||||||
return;
|
|
||||||
|
|
||||||
Vector2f gridSquare;
|
Vector2f terrainCell = heightmapZone.terrain.getTerrainCell(childZoneLoc);
|
||||||
Vector2f gridOffset;
|
Vector2f cell_offset = new Vector2f(terrainCell.x % 1, terrainCell.y % 1);
|
||||||
Vector2f parentGrid;
|
|
||||||
Vector2f parentLoc = new Vector2f(-1, -1);
|
|
||||||
|
|
||||||
Zone currentZone = ZoneManager.findSmallestZone(pc.getLoc());
|
terrainCell.x = (float) Math.floor(terrainCell.x);
|
||||||
|
terrainCell.y = (float) Math.floor(terrainCell.y);
|
||||||
if (currentZone == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
Zone parentZone = currentZone.getParent();
|
|
||||||
|
|
||||||
HeightMap heightMap = currentZone.getHeightMap();
|
|
||||||
|
|
||||||
|
|
||||||
//find the next parents heightmap if the currentzone heightmap is null.
|
short top_left_pixel = heightmapZone.terrain.terrain_pixel_data[(int) terrainCell.x][(int) terrainCell.y];
|
||||||
while (heightMap == null) {
|
short top_right_pixel = heightmapZone.terrain.terrain_pixel_data[(int) terrainCell.x + 1][(int) terrainCell.y];
|
||||||
|
short bottom_left_pixel = heightmapZone.terrain.terrain_pixel_data[(int) terrainCell.x][(int) terrainCell.y + 1];
|
||||||
|
short bottom_right_pixel = heightmapZone.terrain.terrain_pixel_data[(int) terrainCell.x + 1][(int) terrainCell.y + 1];
|
||||||
|
|
||||||
if (currentZone == ZoneManager.getSeaFloor()) {
|
this.throwbackInfo(playerCharacter, "Current Zone : " + currentZone.zoneName);
|
||||||
this.throwbackInfo(pc, "Could not find a heightmap to get height.");
|
this.throwbackInfo(playerCharacter, "Heightmap Zone : " + heightmapZone.zoneName);
|
||||||
break;
|
this.throwbackInfo(playerCharacter, "Parent Zone: " + parentZone.zoneName);
|
||||||
}
|
|
||||||
|
|
||||||
this.throwbackError(pc, "Heightmap does not exist for " + currentZone.getName());
|
this.throwbackInfo(playerCharacter, "Player loc: " + "[" + playerCharacter.loc.x + "]" + "[" + playerCharacter.loc.y + "]" + "[" + playerCharacter.loc.z + "]");
|
||||||
this.throwbackInfo(pc, "Using parent zone instead: ");
|
|
||||||
currentZone = currentZone.getParent();
|
|
||||||
heightMap = currentZone.getHeightMap();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
this.throwbackInfo(playerCharacter, "Terrain Cell : " + "[" + terrainCell.x + "]" + "[" + terrainCell.y + "]");
|
||||||
|
this.throwbackInfo(playerCharacter, "Cell Offset : " + "[" + cell_offset.x + "]" + "[" + cell_offset.y + "]");
|
||||||
|
this.throwbackInfo(playerCharacter, "Pixels : " + "[" + top_left_pixel + "]" + "[" + top_right_pixel + "]");
|
||||||
|
this.throwbackInfo(playerCharacter, "Pixels : " + "[" + bottom_left_pixel + "]" + "[" + bottom_right_pixel + "]");
|
||||||
|
|
||||||
if ((heightMap == null) || (currentZone == ZoneManager.getSeaFloor())) {
|
this.throwbackInfo(playerCharacter, "Child Zone Offset: " + "[" + childZoneOffset.x + "]" + "[" + childZoneOffset.y + "]");
|
||||||
this.throwbackInfo(pc, currentZone.getName() + " has no heightmap ");
|
this.throwbackInfo(playerCharacter, "Normalized offset: " + "[" + normalizedOffset.x + "]" + "[" + normalizedOffset.y + "]");
|
||||||
this.throwbackInfo(pc, "Current altitude: " + currentZone.absY);
|
this.throwbackInfo(playerCharacter, "template blend Values: (max/min): " + heightmapZone.template.max_blend + " /" + heightmapZone.template.min_blend);
|
||||||
return;
|
this.throwbackInfo(playerCharacter, "terrain values (max/min): " + heightmapZone.terrain.blend_values.x + " /" + heightmapZone.terrain.blend_values.y);
|
||||||
}
|
this.throwbackInfo(playerCharacter, "Blend coefficient: " + heightmapZone.terrain.getTerrainBlendCoefficient(childZoneOffset));
|
||||||
|
|
||||||
Vector2f zoneLoc = ZoneManager.worldToZoneSpace(pc.getLoc(), currentZone);
|
this.throwbackInfo(playerCharacter, "------------");
|
||||||
|
|
||||||
Vector3fImmutable seaFloorLocalLoc = ZoneManager.worldToLocal(pc.getLoc(), ZoneManager.getSeaFloor());
|
|
||||||
this.throwbackInfo(pc, "SeaFloor Local : " + seaFloorLocalLoc.x + " , " + seaFloorLocalLoc.y);
|
|
||||||
|
|
||||||
|
|
||||||
this.throwbackInfo(pc, "Local Zone Location : " + zoneLoc.x + " , " + zoneLoc.y);
|
|
||||||
Vector3fImmutable localLocFromCenter = ZoneManager.worldToLocal(pc.getLoc(), currentZone);
|
|
||||||
Vector3fImmutable parentLocFromCenter = ZoneManager.worldToLocal(pc.getLoc(), currentZone.getParent());
|
|
||||||
this.throwbackInfo(pc, "Local Zone Location from center : " + localLocFromCenter);
|
|
||||||
this.throwbackInfo(pc, "parent Zone Location from center : " + parentLocFromCenter);
|
|
||||||
|
|
||||||
Vector2f parentZoneLoc = ZoneManager.worldToZoneSpace(pc.getLoc(), currentZone.getParent());
|
|
||||||
this.throwbackInfo(pc, "Parent Zone Location from Bottom Left : " + parentZoneLoc);
|
|
||||||
|
|
||||||
if ((parentZone != null) && (parentZone.getHeightMap() != null)) {
|
|
||||||
parentLoc = ZoneManager.worldToZoneSpace(pc.getLoc(), parentZone);
|
|
||||||
parentGrid = parentZone.getHeightMap().getGridSquare(parentLoc);
|
|
||||||
} else
|
|
||||||
parentGrid = new Vector2f(-1, -1);
|
|
||||||
|
|
||||||
gridSquare = heightMap.getGridSquare(zoneLoc);
|
|
||||||
gridOffset = HeightMap.getGridOffset(gridSquare);
|
|
||||||
|
|
||||||
float interaltitude = currentZone.getHeightMap().getInterpolatedTerrainHeight(zoneLoc);
|
|
||||||
|
|
||||||
this.throwbackInfo(pc, currentZone.getName());
|
|
||||||
this.throwbackInfo(pc, "Current Grid Square: " + gridSquare.x + " , " + gridSquare.y);
|
|
||||||
this.throwbackInfo(pc, "Grid Offset: " + gridOffset.x + " , " + gridOffset.y);
|
|
||||||
this.throwbackInfo(pc, "Parent Grid: " + parentGrid.x + " , " + parentGrid.y);
|
|
||||||
|
|
||||||
if (parentGrid.x != -1) {
|
|
||||||
float parentAltitude = parentZone.getHeightMap().getInterpolatedTerrainHeight(parentLoc);
|
|
||||||
this.throwbackInfo(pc, "Parent ALTITUDE: " + (parentAltitude));
|
|
||||||
this.throwbackInfo(pc, "Parent Interpolation: " + (parentAltitude + parentZone.getWorldAltitude()));
|
|
||||||
}
|
|
||||||
this.throwbackInfo(pc, "interpolated height: " + interaltitude);
|
|
||||||
|
|
||||||
this.throwbackInfo(pc, "interpolated height with World: " + (interaltitude + currentZone.getWorldAltitude()));
|
|
||||||
|
|
||||||
float realWorldAltitude = interaltitude + currentZone.getWorldAltitude();
|
|
||||||
|
|
||||||
//OUTSET
|
|
||||||
if (parentZone != null) {
|
|
||||||
float parentXRadius = currentZone.getBounds().getHalfExtents().x;
|
|
||||||
float parentZRadius = currentZone.getBounds().getHalfExtents().y;
|
|
||||||
|
|
||||||
float offsetX = Math.abs((localLocFromCenter.x / parentXRadius));
|
|
||||||
float offsetZ = Math.abs((localLocFromCenter.z / parentZRadius));
|
|
||||||
|
|
||||||
float bucketScaleX = 100 / parentXRadius;
|
|
||||||
float bucketScaleZ = 200 / parentZRadius;
|
|
||||||
|
|
||||||
float outsideGridSizeX = 1 - bucketScaleX; //32/256
|
|
||||||
float outsideGridSizeZ = 1 - bucketScaleZ;
|
|
||||||
float weight;
|
|
||||||
|
|
||||||
double scale;
|
|
||||||
|
|
||||||
|
|
||||||
if (offsetX > outsideGridSizeX && offsetX > offsetZ) {
|
|
||||||
weight = (offsetX - outsideGridSizeX) / bucketScaleX;
|
|
||||||
scale = Math.atan2((.5 - weight) * 3.1415927, 1);
|
|
||||||
|
|
||||||
float scaleChild = (float) ((scale + 1) * .5);
|
|
||||||
float scaleParent = 1 - scaleChild;
|
|
||||||
|
|
||||||
|
|
||||||
float parentAltitude = parentZone.getHeightMap().getInterpolatedTerrainHeight(parentLoc);
|
|
||||||
float parentCenterAltitude = parentZone.getHeightMap().getInterpolatedTerrainHeight(ZoneManager.worldToZoneSpace(currentZone.getLoc(), parentZone));
|
|
||||||
|
|
||||||
parentCenterAltitude += currentZone.getYCoord();
|
|
||||||
parentCenterAltitude += interaltitude;
|
|
||||||
|
|
||||||
float firstScale = parentAltitude * scaleParent;
|
|
||||||
float secondScale = parentCenterAltitude * scaleChild;
|
|
||||||
float outsetALt = firstScale + secondScale;
|
|
||||||
|
|
||||||
outsetALt += currentZone.getParent().getAbsY();
|
|
||||||
realWorldAltitude = outsetALt;
|
|
||||||
|
|
||||||
} else if (offsetZ > outsideGridSizeZ) {
|
|
||||||
|
|
||||||
weight = (offsetZ - outsideGridSizeZ) / bucketScaleZ;
|
|
||||||
scale = Math.atan2((.5 - weight) * 3.1415927, 1);
|
|
||||||
|
|
||||||
float scaleChild = (float) ((scale + 1) * .5);
|
|
||||||
float scaleParent = 1 - scaleChild;
|
|
||||||
float parentAltitude = parentZone.getHeightMap().getInterpolatedTerrainHeight(parentLoc);
|
|
||||||
float parentCenterAltitude = parentZone.getHeightMap().getInterpolatedTerrainHeight(ZoneManager.worldToZoneSpace(currentZone.getLoc(), parentZone));
|
|
||||||
|
|
||||||
parentCenterAltitude += currentZone.getYCoord();
|
|
||||||
parentCenterAltitude += interaltitude;
|
|
||||||
float firstScale = parentAltitude * scaleParent;
|
|
||||||
float secondScale = parentCenterAltitude * scaleChild;
|
|
||||||
float outsetALt = firstScale + secondScale;
|
|
||||||
|
|
||||||
outsetALt += currentZone.getParent().getAbsY();
|
|
||||||
realWorldAltitude = outsetALt;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
float strMod = pc.statStrBase - 40;
|
|
||||||
|
|
||||||
strMod *= .00999999998f;
|
|
||||||
|
|
||||||
strMod += 1f;
|
|
||||||
|
|
||||||
float radius = 0;
|
|
||||||
switch (pc.getRaceID()) {
|
|
||||||
case 2017:
|
|
||||||
radius = 3.1415927f;
|
|
||||||
case 2000:
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
strMod *= 1.5707964f;
|
|
||||||
|
|
||||||
strMod += 3.1415927f;
|
|
||||||
|
|
||||||
strMod -= .5f;
|
|
||||||
|
|
||||||
|
|
||||||
realWorldAltitude += strMod;
|
|
||||||
|
|
||||||
this.throwbackInfo(pc, "interpolated height with World: " + realWorldAltitude);
|
|
||||||
|
|
||||||
|
this.throwbackInfo(playerCharacter, "Child Height at loc: " + Math.ceil(childHeight));
|
||||||
|
this.throwbackInfo(playerCharacter, "Parent Height at loc: " + Math.ceil(parentHeight));
|
||||||
|
this.throwbackInfo(playerCharacter, "Blended Height (Ceil): " + blendedHeight + " (" + Math.ceil(blendedHeight) + ")");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String _getHelpString() {
|
protected String _getHelpString() {
|
||||||
return "Temporarily Changes SubRace";
|
return "Queries heightmap engine";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String _getUsageString() {
|
protected String _getUsageString() {
|
||||||
return "' /subrace mobBaseID";
|
return "' /getheight";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,58 +0,0 @@
|
|||||||
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
|
||||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
|
||||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
|
||||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
|
||||||
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
|
||||||
// Magicbane Emulator Project © 2013 - 2022
|
|
||||||
// www.magicbane.com
|
|
||||||
|
|
||||||
|
|
||||||
package engine.devcmd.cmds;
|
|
||||||
|
|
||||||
import engine.devcmd.AbstractDevCmd;
|
|
||||||
import engine.objects.AbstractGameObject;
|
|
||||||
import engine.objects.PlayerCharacter;
|
|
||||||
|
|
||||||
public class GetMemoryCmd extends AbstractDevCmd {
|
|
||||||
|
|
||||||
public GetMemoryCmd() {
|
|
||||||
super("getmemory");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getMemoryOutput(long memory) {
|
|
||||||
String out = "";
|
|
||||||
if (memory > 1073741824)
|
|
||||||
return (memory / 1073741824) + "GB";
|
|
||||||
else if (memory > 1048576)
|
|
||||||
return (memory / 1048576) + "MB";
|
|
||||||
else if (memory > 1024)
|
|
||||||
return (memory / 1048576) + "KB";
|
|
||||||
else
|
|
||||||
return memory + "B";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void _doCmd(PlayerCharacter pcSender, String[] words,
|
|
||||||
AbstractGameObject target) {
|
|
||||||
if (pcSender == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
String hSize = getMemoryOutput(Runtime.getRuntime().totalMemory());
|
|
||||||
String mhSize = getMemoryOutput(Runtime.getRuntime().maxMemory());
|
|
||||||
String fhSize = getMemoryOutput(Runtime.getRuntime().freeMemory());
|
|
||||||
|
|
||||||
String out = "Heap Size: " + hSize + ", Max Heap Size: " + mhSize + ", Free Heap Size: " + fhSize;
|
|
||||||
throwbackInfo(pcSender, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String _getUsageString() {
|
|
||||||
return "' /getmemory'";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String _getHelpString() {
|
|
||||||
return "lists memory usage";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -48,7 +48,7 @@ public class GetOffsetCmd extends AbstractDevCmd {
|
|||||||
float difY = pcSender.getLoc().y - zone.absY;
|
float difY = pcSender.getLoc().y - zone.absY;
|
||||||
float difZ = pcSender.getLoc().z - zone.absZ;
|
float difZ = pcSender.getLoc().z - zone.absZ;
|
||||||
|
|
||||||
throwbackInfo(pcSender, zone.getName() + ": (x: " + difX + ", y: " + difY + ", z: " + difZ + ')');
|
throwbackInfo(pcSender, zone.zoneName + ": (x: " + difX + ", y: " + difY + ", z: " + difZ + ')');
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ package engine.devcmd.cmds;
|
|||||||
import engine.devcmd.AbstractDevCmd;
|
import engine.devcmd.AbstractDevCmd;
|
||||||
import engine.gameManager.SessionManager;
|
import engine.gameManager.SessionManager;
|
||||||
import engine.net.client.ClientConnection;
|
import engine.net.client.ClientConnection;
|
||||||
import engine.net.client.msg.VendorDialogMsg;
|
import engine.net.client.handlers.VendorDialogMsgHandler;
|
||||||
import engine.objects.AbstractGameObject;
|
import engine.objects.AbstractGameObject;
|
||||||
import engine.objects.PlayerCharacter;
|
import engine.objects.PlayerCharacter;
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@ public class GetVaultCmd extends AbstractDevCmd {
|
|||||||
if (cc == null)
|
if (cc == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
VendorDialogMsg.getVault(pcSender, null, cc);
|
VendorDialogMsgHandler.getVault(pcSender, null, cc);
|
||||||
this.setTarget(pcSender); //for logging
|
this.setTarget(pcSender); //for logging
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,67 +0,0 @@
|
|||||||
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
|
||||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
|
||||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
|
||||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
|
||||||
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
|
||||||
// Magicbane Emulator Project © 2013 - 2022
|
|
||||||
// www.magicbane.com
|
|
||||||
|
|
||||||
|
|
||||||
package engine.devcmd.cmds;
|
|
||||||
|
|
||||||
import engine.devcmd.AbstractDevCmd;
|
|
||||||
import engine.gameManager.ZoneManager;
|
|
||||||
import engine.objects.AbstractGameObject;
|
|
||||||
import engine.objects.PlayerCharacter;
|
|
||||||
import engine.objects.Zone;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
|
|
||||||
public class GetZoneCmd extends AbstractDevCmd {
|
|
||||||
|
|
||||||
public GetZoneCmd() {
|
|
||||||
super("getzone");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void _doCmd(PlayerCharacter pcSender, String[] words,
|
|
||||||
AbstractGameObject target) {
|
|
||||||
if (pcSender == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (words.length != 1) {
|
|
||||||
this.sendUsage(pcSender);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ArrayList<Zone> allIn = new ArrayList<>();
|
|
||||||
switch (words[0].toLowerCase()) {
|
|
||||||
case "all":
|
|
||||||
throwbackInfo(pcSender, "All zones currently in");
|
|
||||||
allIn = ZoneManager.getAllZonesIn(pcSender.getLoc());
|
|
||||||
break;
|
|
||||||
case "smallest":
|
|
||||||
throwbackInfo(pcSender, "Smallest zone currently in");
|
|
||||||
Zone zone = ZoneManager.findSmallestZone(pcSender.getLoc());
|
|
||||||
allIn.add(zone);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
this.sendUsage(pcSender);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (Zone zone : allIn)
|
|
||||||
throwbackInfo(pcSender, zone.getName() + "; UUID: " + zone.getObjectUUID() + ", loadNum: " + zone.getLoadNum());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String _getUsageString() {
|
|
||||||
return "' /getzone smallest/all'";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String _getHelpString() {
|
|
||||||
return "lists what zones a player is in";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,107 +0,0 @@
|
|||||||
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
|
||||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
|
||||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
|
||||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
|
||||||
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
|
||||||
// Magicbane Emulator Project © 2013 - 2022
|
|
||||||
// www.magicbane.com
|
|
||||||
|
|
||||||
|
|
||||||
package engine.devcmd.cmds;
|
|
||||||
|
|
||||||
import engine.Enum.GameObjectType;
|
|
||||||
import engine.devcmd.AbstractDevCmd;
|
|
||||||
import engine.math.Vector3fImmutable;
|
|
||||||
import engine.objects.AbstractGameObject;
|
|
||||||
import engine.objects.Building;
|
|
||||||
import engine.objects.PlayerCharacter;
|
|
||||||
|
|
||||||
public class GotoBoundsCmd extends AbstractDevCmd {
|
|
||||||
|
|
||||||
public GotoBoundsCmd() {
|
|
||||||
super("gotobounds");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void _doCmd(PlayerCharacter player, String[] words,
|
|
||||||
AbstractGameObject target) {
|
|
||||||
|
|
||||||
String corner = words[0];
|
|
||||||
Vector3fImmutable targetLoc = Vector3fImmutable.ZERO;
|
|
||||||
|
|
||||||
if (target == null || !target.getObjectType().equals(GameObjectType.Building)) {
|
|
||||||
this.throwbackError(player, "No Building Selected");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Building building = (Building) target;
|
|
||||||
|
|
||||||
if (building.getBounds() == null) {
|
|
||||||
this.throwbackInfo(player, "No valid Bounds for building UUID " + building.getObjectUUID());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
float x = building.getBounds().getHalfExtents().x;
|
|
||||||
float z = building.getBounds().getHalfExtents().y;
|
|
||||||
|
|
||||||
if (building.getBlueprint() != null) {
|
|
||||||
x = building.getBlueprint().getExtents().x;
|
|
||||||
z = building.getBlueprint().getExtents().y;
|
|
||||||
}
|
|
||||||
|
|
||||||
float topLeftX = building.getLoc().x - x;
|
|
||||||
float topLeftY = building.getLoc().z - z;
|
|
||||||
|
|
||||||
float topRightX = building.getLoc().x + x;
|
|
||||||
float topRightY = building.getLoc().z - z;
|
|
||||||
|
|
||||||
float bottomLeftX = building.getLoc().x - x;
|
|
||||||
float bottomLeftY = building.getLoc().z + z;
|
|
||||||
|
|
||||||
float bottomRightX = building.getLoc().x + x;
|
|
||||||
float bottomRightY = building.getLoc().z + z;
|
|
||||||
|
|
||||||
|
|
||||||
switch (corner) {
|
|
||||||
case "topleft":
|
|
||||||
targetLoc = new Vector3fImmutable(topLeftX, 0, topLeftY);
|
|
||||||
break;
|
|
||||||
case "topright":
|
|
||||||
targetLoc = new Vector3fImmutable(topRightX, 0, topRightY);
|
|
||||||
break;
|
|
||||||
case "bottomleft":
|
|
||||||
targetLoc = new Vector3fImmutable(bottomLeftX, 0, bottomLeftY);
|
|
||||||
break;
|
|
||||||
case "bottomright":
|
|
||||||
targetLoc = new Vector3fImmutable(bottomRightX, 0, bottomRightY);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
this.throwbackInfo(player, "wrong corner name. use topleft , topright , bottomleft , bottomright");
|
|
||||||
return;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
targetLoc = Vector3fImmutable.transform(building.getLoc(), targetLoc, building.getBounds().getRotationDegrees());
|
|
||||||
|
|
||||||
// Teleport player
|
|
||||||
|
|
||||||
if (targetLoc == Vector3fImmutable.ZERO) {
|
|
||||||
this.throwbackError(player, "Failed to locate UUID");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
player.teleport(targetLoc);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String _getHelpString() {
|
|
||||||
return "Teleports player to a UUID";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String _getUsageString() {
|
|
||||||
return "' /gotoobj <UID>'";
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
package engine.devcmd.cmds;
|
package engine.devcmd.cmds;
|
||||||
|
|
||||||
import engine.Enum.GameObjectType;
|
import engine.mbEnums.GameObjectType;
|
||||||
import engine.devcmd.AbstractDevCmd;
|
import engine.devcmd.AbstractDevCmd;
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
import engine.gameManager.SessionManager;
|
import engine.gameManager.SessionManager;
|
||||||
@@ -81,7 +81,7 @@ public class GotoCmd extends AbstractDevCmd {
|
|||||||
continue;
|
continue;
|
||||||
Zone zone = city.getParent();
|
Zone zone = city.getParent();
|
||||||
if (zone != null) {
|
if (zone != null) {
|
||||||
if (zone.isNPCCity() || zone.isPlayerCity())
|
if (zone.isNPCCity || zone.guild_zone)
|
||||||
loc = Vector3fImmutable.getRandomPointOnCircle(zone.getLoc(), MBServerStatics.TREE_TELEPORT_RADIUS);
|
loc = Vector3fImmutable.getRandomPointOnCircle(zone.getLoc(), MBServerStatics.TREE_TELEPORT_RADIUS);
|
||||||
else
|
else
|
||||||
loc = zone.getLoc();
|
loc = zone.getLoc();
|
||||||
@@ -97,10 +97,10 @@ public class GotoCmd extends AbstractDevCmd {
|
|||||||
Zone zone = (Zone) zoneAgo;
|
Zone zone = (Zone) zoneAgo;
|
||||||
if (zone == null)
|
if (zone == null)
|
||||||
continue;
|
continue;
|
||||||
if (!zone.getName().equalsIgnoreCase(cityName))
|
if (!zone.zoneName.equalsIgnoreCase(cityName))
|
||||||
continue;
|
continue;
|
||||||
if (zone != null) {
|
if (zone != null) {
|
||||||
if (zone.isNPCCity() || zone.isPlayerCity())
|
if (zone.isNPCCity || zone.guild_zone)
|
||||||
loc = Vector3fImmutable.getRandomPointOnCircle(zone.getLoc(), MBServerStatics.TREE_TELEPORT_RADIUS);
|
loc = Vector3fImmutable.getRandomPointOnCircle(zone.getLoc(), MBServerStatics.TREE_TELEPORT_RADIUS);
|
||||||
else
|
else
|
||||||
loc = zone.getLoc();
|
loc = zone.getLoc();
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
package engine.devcmd.cmds;
|
package engine.devcmd.cmds;
|
||||||
|
|
||||||
import engine.Enum;
|
import engine.mbEnums;
|
||||||
import engine.devcmd.AbstractDevCmd;
|
import engine.devcmd.AbstractDevCmd;
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
import engine.math.Vector3fImmutable;
|
import engine.math.Vector3fImmutable;
|
||||||
@@ -27,7 +27,7 @@ public class GotoObj extends AbstractDevCmd {
|
|||||||
|
|
||||||
int uuid;
|
int uuid;
|
||||||
Vector3fImmutable targetLoc = Vector3fImmutable.ZERO;
|
Vector3fImmutable targetLoc = Vector3fImmutable.ZERO;
|
||||||
Enum.DbObjectType objectType;
|
mbEnums.DbObjectType objectType;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
uuid = Integer.parseInt(words[0]);
|
uuid = Integer.parseInt(words[0]);
|
||||||
@@ -41,37 +41,37 @@ public class GotoObj extends AbstractDevCmd {
|
|||||||
switch (objectType) {
|
switch (objectType) {
|
||||||
|
|
||||||
case NPC:
|
case NPC:
|
||||||
NPC npc = (NPC) DbManager.getFromCache(Enum.GameObjectType.NPC, uuid);
|
NPC npc = (NPC) DbManager.getFromCache(mbEnums.GameObjectType.NPC, uuid);
|
||||||
|
|
||||||
if (npc != null)
|
if (npc != null)
|
||||||
targetLoc = npc.getLoc();
|
targetLoc = npc.getLoc();
|
||||||
break;
|
break;
|
||||||
case MOB:
|
case MOB:
|
||||||
Mob mob = (Mob) DbManager.getFromCache(Enum.GameObjectType.Mob, uuid);
|
Mob mob = (Mob) DbManager.getFromCache(mbEnums.GameObjectType.Mob, uuid);
|
||||||
|
|
||||||
if (mob != null)
|
if (mob != null)
|
||||||
targetLoc = mob.getLoc();
|
targetLoc = mob.getLoc();
|
||||||
break;
|
break;
|
||||||
case CHARACTER:
|
case CHARACTER:
|
||||||
PlayerCharacter playerCharacter = (PlayerCharacter) DbManager.getFromCache(Enum.GameObjectType.PlayerCharacter, uuid);
|
PlayerCharacter playerCharacter = (PlayerCharacter) DbManager.getFromCache(mbEnums.GameObjectType.PlayerCharacter, uuid);
|
||||||
|
|
||||||
if (playerCharacter != null)
|
if (playerCharacter != null)
|
||||||
targetLoc = playerCharacter.getLoc();
|
targetLoc = playerCharacter.getLoc();
|
||||||
break;
|
break;
|
||||||
case BUILDING:
|
case BUILDING:
|
||||||
Building building = (Building) DbManager.getFromCache(Enum.GameObjectType.Building, uuid);
|
Building building = (Building) DbManager.getFromCache(mbEnums.GameObjectType.Building, uuid);
|
||||||
|
|
||||||
if (building != null)
|
if (building != null)
|
||||||
targetLoc = building.getLoc();
|
targetLoc = building.getLoc();
|
||||||
break;
|
break;
|
||||||
case ZONE:
|
case ZONE:
|
||||||
Zone zone = (Zone) DbManager.getFromCache(Enum.GameObjectType.Zone, uuid);
|
Zone zone = (Zone) DbManager.getFromCache(mbEnums.GameObjectType.Zone, uuid);
|
||||||
|
|
||||||
if (zone != null)
|
if (zone != null)
|
||||||
targetLoc = zone.getLoc();
|
targetLoc = zone.getLoc();
|
||||||
break;
|
break;
|
||||||
case CITY:
|
case CITY:
|
||||||
City city = (City) DbManager.getFromCache(Enum.GameObjectType.City, uuid);
|
City city = (City) DbManager.getFromCache(mbEnums.GameObjectType.City, uuid);
|
||||||
|
|
||||||
if (city != null)
|
if (city != null)
|
||||||
targetLoc = city.getLoc();
|
targetLoc = city.getLoc();
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ public class HotzoneCmd extends AbstractDevCmd {
|
|||||||
String input = data.toString().trim();
|
String input = data.toString().trim();
|
||||||
|
|
||||||
if (input.length() == 0) {
|
if (input.length() == 0) {
|
||||||
outString = "Current hotZone: " + ZoneManager.hotZone.getName() + "\r\n";
|
outString = "Current hotZone: " + ZoneManager.hotZone.zoneName + "\r\n";
|
||||||
outString += "Available hotZones: " + ZoneManager.availableHotZones();
|
outString += "Available hotZones: " + ZoneManager.availableHotZones();
|
||||||
throwbackInfo(playerCharacter, outString);
|
throwbackInfo(playerCharacter, outString);
|
||||||
return;
|
return;
|
||||||
@@ -48,7 +48,7 @@ public class HotzoneCmd extends AbstractDevCmd {
|
|||||||
|
|
||||||
if (input.equalsIgnoreCase("random")) {
|
if (input.equalsIgnoreCase("random")) {
|
||||||
ZoneManager.generateAndSetRandomHotzone();
|
ZoneManager.generateAndSetRandomHotzone();
|
||||||
outString = "New hotZone: " + ZoneManager.hotZone.getName() + "\r\n";
|
outString = "New hotZone: " + ZoneManager.hotZone.zoneName + "\r\n";
|
||||||
outString += "Available hotZones: " + ZoneManager.availableHotZones();
|
outString += "Available hotZones: " + ZoneManager.availableHotZones();
|
||||||
throwbackInfo(playerCharacter, outString);
|
throwbackInfo(playerCharacter, outString);
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -9,14 +9,14 @@
|
|||||||
|
|
||||||
package engine.devcmd.cmds;
|
package engine.devcmd.cmds;
|
||||||
|
|
||||||
import engine.Enum;
|
|
||||||
import engine.Enum.BuildingGroup;
|
|
||||||
import engine.Enum.GameObjectType;
|
|
||||||
import engine.Enum.TargetColor;
|
|
||||||
import engine.devcmd.AbstractDevCmd;
|
import engine.devcmd.AbstractDevCmd;
|
||||||
import engine.gameManager.BuildingManager;
|
import engine.gameManager.BuildingManager;
|
||||||
import engine.gameManager.SessionManager;
|
import engine.gameManager.SessionManager;
|
||||||
import engine.math.Vector3fImmutable;
|
import engine.math.Vector3fImmutable;
|
||||||
|
import engine.mbEnums;
|
||||||
|
import engine.mbEnums.BuildingGroup;
|
||||||
|
import engine.mbEnums.GameObjectType;
|
||||||
|
import engine.mbEnums.TargetColor;
|
||||||
import engine.objects.*;
|
import engine.objects.*;
|
||||||
import engine.util.StringUtils;
|
import engine.util.StringUtils;
|
||||||
|
|
||||||
@@ -253,9 +253,9 @@ public class InfoCmd extends AbstractDevCmd {
|
|||||||
output += newline;
|
output += newline;
|
||||||
output += "InSession : " + SessionManager.getPlayerCharacterByID(target.getObjectUUID()) != null ? " true " : " false";
|
output += "InSession : " + SessionManager.getPlayerCharacterByID(target.getObjectUUID()) != null ? " true " : " false";
|
||||||
output += newline;
|
output += newline;
|
||||||
output += "RaceType: " + targetPC.getRace().getRaceType().name();
|
output += "RaceType: " + targetPC.race.getRaceType().name();
|
||||||
output += newline;
|
output += newline;
|
||||||
output += "Race: " + targetPC.getRace().getName();
|
output += "Race: " + targetPC.race.getName();
|
||||||
output += newline;
|
output += newline;
|
||||||
output += "Safe:" + targetPC.inSafeZone();
|
output += "Safe:" + targetPC.inSafeZone();
|
||||||
output += newline;
|
output += newline;
|
||||||
@@ -278,7 +278,7 @@ public class InfoCmd extends AbstractDevCmd {
|
|||||||
output += "Account ID: UNKNOWN";
|
output += "Account ID: UNKNOWN";
|
||||||
|
|
||||||
output += newline;
|
output += newline;
|
||||||
output += "Inventory Weight:" + (targetPC.getCharItemManager().getInventoryWeight() + targetPC.getCharItemManager().getEquipWeight());
|
output += "Inventory Weight:" + (targetPC.charItemManager.getInventoryWeight() + targetPC.charItemManager.getEquipWeight());
|
||||||
output += newline;
|
output += newline;
|
||||||
output += "Max Inventory Weight:" + ((int) targetPC.statStrBase * 3);
|
output += "Max Inventory Weight:" + ((int) targetPC.statStrBase * 3);
|
||||||
output += newline;
|
output += newline;
|
||||||
@@ -291,7 +291,7 @@ public class InfoCmd extends AbstractDevCmd {
|
|||||||
output += "inFloor :" + targetPC.getInFloorID();
|
output += "inFloor :" + targetPC.getInFloorID();
|
||||||
output += newline;
|
output += newline;
|
||||||
|
|
||||||
BaseClass baseClass = targetPC.getBaseClass();
|
BaseClass baseClass = targetPC.baseClass;
|
||||||
|
|
||||||
if (baseClass != null)
|
if (baseClass != null)
|
||||||
output += StringUtils.addWS("Class: " + baseClass.getName(), 20);
|
output += StringUtils.addWS("Class: " + baseClass.getName(), 20);
|
||||||
@@ -369,7 +369,8 @@ public class InfoCmd extends AbstractDevCmd {
|
|||||||
output += newline;
|
output += newline;
|
||||||
output += "InventorySet: " + targetNPC.getContract().inventorySet;
|
output += "InventorySet: " + targetNPC.getContract().inventorySet;
|
||||||
output += newline;
|
output += newline;
|
||||||
output += targetNPC.getContract().getAllowedBuildings().toString();
|
Contract contract1 = targetNPC.getContract();
|
||||||
|
output += contract1.allowedBuildings.toString();
|
||||||
output += newline;
|
output += newline;
|
||||||
output += "Extra Rune: " + targetNPC.getContract().getExtraRune();
|
output += "Extra Rune: " + targetNPC.getContract().getExtraRune();
|
||||||
|
|
||||||
@@ -383,11 +384,12 @@ public class InfoCmd extends AbstractDevCmd {
|
|||||||
output += newline;
|
output += newline;
|
||||||
if (mobBase != null) {
|
if (mobBase != null) {
|
||||||
output += newline;
|
output += newline;
|
||||||
output += "Slottable: " + targetNPC.getContract().getAllowedBuildings().toString();
|
Contract contract = targetNPC.getContract();
|
||||||
|
output += "Slottable: " + contract.allowedBuildings.toString();
|
||||||
output += newline;
|
output += newline;
|
||||||
output += "EquipSet: " + targetNPC.getEquipmentSetID();
|
output += "EquipSet: " + targetNPC.getEquipmentSetID();
|
||||||
output += newline;
|
output += newline;
|
||||||
output += "Parent Zone LoadNum : " + targetNPC.getParentZone().getLoadNum();
|
output += "Parent Zone LoadNum : " + targetNPC.getParentZone().templateID;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -436,11 +438,13 @@ public class InfoCmd extends AbstractDevCmd {
|
|||||||
if (targetMob.isPet()) {
|
if (targetMob.isPet()) {
|
||||||
output += "isPet: true";
|
output += "isPet: true";
|
||||||
output += newline;
|
output += newline;
|
||||||
if ((targetMob.agentType.equals(Enum.AIAgentType.PET)))
|
if ((targetMob.agentType.equals(mbEnums.AIAgentType.PET)))
|
||||||
output += "isSummonedPet: true";
|
output += "isSummonedPet: true";
|
||||||
else
|
else
|
||||||
output += "isSummonedPet: false";
|
output += "isSummonedPet: false";
|
||||||
PlayerCharacter owner = targetMob.getOwner();
|
|
||||||
|
|
||||||
|
PlayerCharacter owner = (PlayerCharacter) targetMob.guardCaptain;
|
||||||
if (owner != null)
|
if (owner != null)
|
||||||
output += " owner: " + owner.getObjectUUID();
|
output += " owner: " + owner.getObjectUUID();
|
||||||
output += newline;
|
output += newline;
|
||||||
@@ -454,7 +458,7 @@ public class InfoCmd extends AbstractDevCmd {
|
|||||||
output += newline;
|
output += newline;
|
||||||
|
|
||||||
}
|
}
|
||||||
if ((targetMob.agentType.equals(Enum.AIAgentType.MOBILE))) {
|
if ((targetMob.agentType.equals(mbEnums.AIAgentType.MOBILE))) {
|
||||||
output += "SpawnRadius: " + targetMob.getSpawnRadius();
|
output += "SpawnRadius: " + targetMob.getSpawnRadius();
|
||||||
output += newline;
|
output += newline;
|
||||||
output += "Spawn Timer: " + targetMob.getSpawnTimeAsString();
|
output += "Spawn Timer: " + targetMob.getSpawnTimeAsString();
|
||||||
@@ -471,7 +475,7 @@ public class InfoCmd extends AbstractDevCmd {
|
|||||||
output += "EquipSet: " + targetMob.equipmentSetID;
|
output += "EquipSet: " + targetMob.equipmentSetID;
|
||||||
output += newline;
|
output += newline;
|
||||||
try {
|
try {
|
||||||
output += "Parent Zone LoadNum : " + targetMob.getParentZone().getLoadNum();
|
output += "Parent Zone LoadNum : " + targetMob.getParentZone().templateID;
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
//who cares
|
//who cares
|
||||||
}
|
}
|
||||||
@@ -503,17 +507,17 @@ public class InfoCmd extends AbstractDevCmd {
|
|||||||
case Item: //intentional passthrough
|
case Item: //intentional passthrough
|
||||||
case MobLoot:
|
case MobLoot:
|
||||||
Item item = (Item) target;
|
Item item = (Item) target;
|
||||||
ItemBase itemBase = item.getItemBase();
|
ItemTemplate template = ItemTemplate.templates.get(item.templateID);
|
||||||
output += StringUtils.addWS("ItemBase: " + itemBase.getUUID(), 20);
|
output += StringUtils.addWS("Template: " + template.template_id, 20);
|
||||||
output += "Weight: " + itemBase.getWeight();
|
output += "Weight: " + template.item_wt;
|
||||||
output += newline;
|
output += newline;
|
||||||
DecimalFormat df = new DecimalFormat("###,###,###,###,##0");
|
DecimalFormat df = new DecimalFormat("###,###,###,###,##0");
|
||||||
output += StringUtils.addWS("Qty: "
|
output += StringUtils.addWS("Qty: "
|
||||||
+ df.format(item.getNumOfItems()), 20);
|
+ df.format(item.getNumOfItems()), 20);
|
||||||
output += "Charges: " + item.getChargesRemaining()
|
output += "Charges: " + (byte) item.chargesRemaining
|
||||||
+ '/' + item.getChargesMax();
|
+ '/' + item.template.item_initial_charges;
|
||||||
output += newline;
|
output += newline;
|
||||||
output += "Name: " + itemBase.getName();
|
output += "Name: " + template.item_base_name;
|
||||||
output += newline;
|
output += newline;
|
||||||
output += item.getContainerInfo();
|
output += item.getContainerInfo();
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,6 @@
|
|||||||
|
|
||||||
package engine.devcmd.cmds;
|
package engine.devcmd.cmds;
|
||||||
|
|
||||||
import engine.Enum.ProtectionState;
|
|
||||||
import engine.InterestManagement.WorldGrid;
|
import engine.InterestManagement.WorldGrid;
|
||||||
import engine.devcmd.AbstractDevCmd;
|
import engine.devcmd.AbstractDevCmd;
|
||||||
import engine.gameManager.BuildingManager;
|
import engine.gameManager.BuildingManager;
|
||||||
@@ -18,6 +17,7 @@ import engine.gameManager.DbManager;
|
|||||||
import engine.gameManager.ZoneManager;
|
import engine.gameManager.ZoneManager;
|
||||||
import engine.math.Vector3f;
|
import engine.math.Vector3f;
|
||||||
import engine.math.Vector3fImmutable;
|
import engine.math.Vector3fImmutable;
|
||||||
|
import engine.mbEnums.ProtectionState;
|
||||||
import engine.objects.*;
|
import engine.objects.*;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
|
|
||||||
@@ -111,12 +111,12 @@ public class MakeBaneCmd extends AbstractDevCmd {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!zone.isPlayerCity()) {
|
if (!zone.guild_zone) {
|
||||||
throwbackError(pc, "This is not a player city.");
|
throwbackError(pc, "This is not a player city.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
City city = City.getCity(zone.getPlayerCityUUID());
|
City city = City.getCity(zone.playerCityUUID);
|
||||||
if (city == null) {
|
if (city == null) {
|
||||||
throwbackError(pc, "Unable to find the city associated with this zone.");
|
throwbackError(pc, "Unable to find the city associated with this zone.");
|
||||||
return;
|
return;
|
||||||
@@ -167,7 +167,7 @@ public class MakeBaneCmd extends AbstractDevCmd {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
stone.addEffectBit((1 << 19));
|
stone.addEffectBit((1 << 19));
|
||||||
stone.setRank((byte) rank);
|
BuildingManager.setRank(stone, (byte) rank);
|
||||||
stone.setMaxHitPoints(blueprint.getMaxHealth(stone.getRank()));
|
stone.setMaxHitPoints(blueprint.getMaxHealth(stone.getRank()));
|
||||||
stone.setCurrentHitPoints(stone.getMaxHitPoints());
|
stone.setCurrentHitPoints(stone.getMaxHitPoints());
|
||||||
BuildingManager.setUpgradeDateTime(stone, null, 0);
|
BuildingManager.setUpgradeDateTime(stone, null, 0);
|
||||||
|
|||||||
@@ -9,16 +9,13 @@
|
|||||||
|
|
||||||
package engine.devcmd.cmds;
|
package engine.devcmd.cmds;
|
||||||
|
|
||||||
import engine.Enum.ItemContainerType;
|
|
||||||
import engine.Enum.ItemType;
|
|
||||||
import engine.Enum.OwnerType;
|
|
||||||
import engine.devcmd.AbstractDevCmd;
|
import engine.devcmd.AbstractDevCmd;
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
|
import engine.mbEnums.ItemType;
|
||||||
|
import engine.mbEnums.OwnerType;
|
||||||
import engine.objects.*;
|
import engine.objects.*;
|
||||||
import engine.powers.EffectsBase;
|
import engine.powers.EffectsBase;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Eighty
|
* @author Eighty
|
||||||
*/
|
*/
|
||||||
@@ -32,48 +29,6 @@ public class MakeItemCmd extends AbstractDevCmd {
|
|||||||
protected void _doCmd(PlayerCharacter pc, String[] words,
|
protected void _doCmd(PlayerCharacter pc, String[] words,
|
||||||
AbstractGameObject target) {
|
AbstractGameObject target) {
|
||||||
|
|
||||||
if (words[0].equals("resources")) {
|
|
||||||
for (int ibID : Warehouse.getMaxResources().keySet()) {
|
|
||||||
if (ibID == 7)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
ItemBase ib = ItemBase.getItemBase(ibID);
|
|
||||||
|
|
||||||
short weight = ib.getWeight();
|
|
||||||
if (!pc.getCharItemManager().hasRoomInventory(weight)) {
|
|
||||||
throwbackError(pc, "Not enough room in inventory for any more of this item");
|
|
||||||
|
|
||||||
pc.getCharItemManager().updateInventory();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
boolean worked = false;
|
|
||||||
Item item = new Item(ib, pc.getObjectUUID(),
|
|
||||||
OwnerType.PlayerCharacter, (byte) 0, (byte) 0, (short) ib.getDurability(), (short) ib.getDurability(),
|
|
||||||
true, false, ItemContainerType.INVENTORY, (byte) 0,
|
|
||||||
new ArrayList<>(), "");
|
|
||||||
|
|
||||||
item.setNumOfItems(Warehouse.getMaxResources().get(ibID));
|
|
||||||
|
|
||||||
try {
|
|
||||||
item = DbManager.ItemQueries.ADD_ITEM(item);
|
|
||||||
worked = true;
|
|
||||||
} catch (Exception e) {
|
|
||||||
throwbackError(pc, "DB error 1: Unable to create item. " + e.getMessage());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (item == null || !worked) {
|
|
||||||
throwbackError(pc, "DB error 2: Unable to create item.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//add item to inventory
|
|
||||||
pc.getCharItemManager().addItemToInventory(item);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (words.length < 3 || words.length > 5) {
|
if (words.length < 3 || words.length > 5) {
|
||||||
this.sendUsage(pc);
|
this.sendUsage(pc);
|
||||||
return;
|
return;
|
||||||
@@ -103,16 +58,23 @@ public class MakeItemCmd extends AbstractDevCmd {
|
|||||||
numItems = (numItems > 5000) ? 5000 : numItems;
|
numItems = (numItems > 5000) ? 5000 : numItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
int itembaseID;
|
int templateID;
|
||||||
|
ItemTemplate template;
|
||||||
try {
|
try {
|
||||||
itembaseID = Integer.parseInt(words[0]);
|
templateID = Integer.parseInt(words[0]);
|
||||||
} catch (NumberFormatException e) {
|
template = ItemTemplate.templates.get(words[0].toLowerCase());
|
||||||
itembaseID = ItemBase.getIDByName(words[0].toLowerCase());
|
|
||||||
if (itembaseID == 0) {
|
if (template == null) {
|
||||||
throwbackError(pc, "Supplied type " + words[0]
|
throwbackError(pc, "Supplied type " + words[0]
|
||||||
+ " failed to parse to an Integer");
|
+ " failed to parse to an Integer");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (template.item_type == ItemType.GOLD) {
|
||||||
|
this.throwbackInfo(pc, "use /addgold to add gold.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throwbackError(pc,
|
throwbackError(pc,
|
||||||
"An unknown exception occurred when trying to use createitem command for type "
|
"An unknown exception occurred when trying to use createitem command for type "
|
||||||
@@ -120,10 +82,6 @@ public class MakeItemCmd extends AbstractDevCmd {
|
|||||||
return; // NaN
|
return; // NaN
|
||||||
}
|
}
|
||||||
|
|
||||||
if (itembaseID == 7) {
|
|
||||||
this.throwbackInfo(pc, "use /addgold to add gold.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
String prefix = "";
|
String prefix = "";
|
||||||
String suffix = "";
|
String suffix = "";
|
||||||
@@ -174,57 +132,54 @@ public class MakeItemCmd extends AbstractDevCmd {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ItemBase ib = ItemBase.getItemBase(itembaseID);
|
template = ItemTemplate.templates.get(templateID);
|
||||||
if (ib == null) {
|
|
||||||
throwbackError(pc, "Unable to find itembase of ID " + itembaseID);
|
if (template == null) {
|
||||||
|
throwbackError(pc, "Unable to find template " + templateID);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((numItems > 1)
|
if ((numItems > 1)
|
||||||
&& (ib.getType().equals(ItemType.RESOURCE) == false)
|
&& (template.item_type.equals(ItemType.RESOURCE) == false)
|
||||||
&& (ib.getType().equals(ItemType.OFFERING)) == false)
|
&& (template.item_type.equals(ItemType.OFFERING)) == false)
|
||||||
numItems = 1;
|
numItems = 1;
|
||||||
|
|
||||||
CharacterItemManager cim = pc.getCharItemManager();
|
CharacterItemManager cim = pc.charItemManager;
|
||||||
|
|
||||||
if (cim == null) {
|
if (cim == null) {
|
||||||
throwbackError(pc, "Unable to find the character item manager for player " + pc.getFirstName() + '.');
|
throwbackError(pc, "Unable to find the character item manager for player " + pc.getFirstName() + '.');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
byte charges = (byte) ib.getNumCharges();
|
|
||||||
short dur = (short) ib.getDurability();
|
|
||||||
|
|
||||||
String result = "";
|
String result = "";
|
||||||
|
|
||||||
for (int i = 0; i < quantity; i++) {
|
for (int i = 0; i < quantity; i++) {
|
||||||
short weight = ib.getWeight();
|
|
||||||
|
int weight = template.item_wt;
|
||||||
|
|
||||||
if (!cim.hasRoomInventory(weight)) {
|
if (!cim.hasRoomInventory(weight)) {
|
||||||
throwbackError(pc, "Not enough room in inventory for any more of this item. " + i + " produced.");
|
throwbackError(pc, "Not enough room in inventory for any more of this item. " + i + " produced.");
|
||||||
|
|
||||||
if (i > 0)
|
if (i > 0)
|
||||||
cim.updateInventory();
|
cim.updateInventory();
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean worked = false;
|
Item item = new Item(templateID);
|
||||||
Item item = new Item(ib, pc.getObjectUUID(),
|
item.ownerID = pc.getObjectUUID();
|
||||||
OwnerType.PlayerCharacter, charges, charges, dur, dur,
|
item.ownerType = OwnerType.PlayerCharacter;
|
||||||
true, false, ItemContainerType.INVENTORY, (byte) 0,
|
|
||||||
new ArrayList<>(), "");
|
|
||||||
if (numItems > 1)
|
if (numItems > 1)
|
||||||
item.setNumOfItems(numItems);
|
item.setNumOfItems(numItems);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
item = DbManager.ItemQueries.ADD_ITEM(item);
|
item = DbManager.ItemQueries.PERSIST(item);
|
||||||
worked = true;
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throwbackError(pc, "DB error 1: Unable to create item. " + e.getMessage());
|
throwbackError(pc, "DB error 1: Unable to create item. " + e.getMessage());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item == null || !worked) {
|
|
||||||
throwbackError(pc, "DB error 2: Unable to create item.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//create prefix
|
//create prefix
|
||||||
if (!prefix.isEmpty())
|
if (!prefix.isEmpty())
|
||||||
item.addPermanentEnchantmentForDev(prefix, 0);
|
item.addPermanentEnchantmentForDev(prefix, 0);
|
||||||
@@ -243,12 +198,12 @@ public class MakeItemCmd extends AbstractDevCmd {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String _getHelpString() {
|
protected String _getHelpString() {
|
||||||
return "Creates an item of type 'itembaseID' with a prefix and suffix";
|
return "Creates an item of type templateID with a prefix and suffix";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String _getUsageString() {
|
protected String _getUsageString() {
|
||||||
return "'./makeitem itembaseID PrefixID SuffixID [quantity] [numResources]'";
|
return "'./makeitem templateID PrefixID SuffixID [quantity] [numResources]'";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,13 +47,17 @@ public class PrintBankCmd extends AbstractDevCmd {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
CharacterItemManager cim = ((AbstractCharacter) tar).getCharItemManager();
|
CharacterItemManager cim = ((AbstractCharacter) tar).charItemManager;
|
||||||
ArrayList<Item> list = cim.getBank();
|
ArrayList<Item> list = cim.getBank();
|
||||||
throwbackInfo(pc, "Bank for " + type + ' ' + name + " (" + tar.getObjectUUID() + ')');
|
throwbackInfo(pc, "Bank for " + type + ' ' + name + " (" + tar.getObjectUUID() + ')');
|
||||||
|
|
||||||
for (Item item : list) {
|
for (Item item : list) {
|
||||||
throwbackInfo(pc, " " + item.getItemBase().getName() + ", count: " + item.getNumOfItems());
|
ItemTemplate template = ItemTemplate.templates.get(item.templateID);
|
||||||
|
throwbackInfo(pc, " " + template.item_base_name + ", count: " + item.getNumOfItems());
|
||||||
}
|
}
|
||||||
|
|
||||||
Item gold = cim.getGoldBank();
|
Item gold = cim.getGoldBank();
|
||||||
|
|
||||||
if (gold != null)
|
if (gold != null)
|
||||||
throwbackInfo(pc, " Gold, count: " + gold.getNumOfItems());
|
throwbackInfo(pc, " Gold, count: " + gold.getNumOfItems());
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -9,9 +9,9 @@
|
|||||||
|
|
||||||
package engine.devcmd.cmds;
|
package engine.devcmd.cmds;
|
||||||
|
|
||||||
import engine.Enum.GameObjectType;
|
|
||||||
import engine.devcmd.AbstractDevCmd;
|
import engine.devcmd.AbstractDevCmd;
|
||||||
import engine.gameManager.ChatManager;
|
import engine.gameManager.ChatManager;
|
||||||
|
import engine.mbEnums.GameObjectType;
|
||||||
import engine.objects.*;
|
import engine.objects.*;
|
||||||
import engine.powers.effectmodifiers.AbstractEffectModifier;
|
import engine.powers.effectmodifiers.AbstractEffectModifier;
|
||||||
|
|
||||||
@@ -33,7 +33,8 @@ public class PrintBonusesCmd extends AbstractDevCmd {
|
|||||||
if (target instanceof Item) {
|
if (target instanceof Item) {
|
||||||
type = "Item";
|
type = "Item";
|
||||||
tar = (Item) target;
|
tar = (Item) target;
|
||||||
name = ((Item) tar).getItemBase().getName();
|
ItemTemplate template = ItemTemplate.templates.get(((Item) tar).templateID);
|
||||||
|
name = template.item_base_name;
|
||||||
} else if (target instanceof AbstractCharacter) {
|
} else if (target instanceof AbstractCharacter) {
|
||||||
tar = (AbstractCharacter) target;
|
tar = (AbstractCharacter) target;
|
||||||
name = ((AbstractCharacter) tar).getFirstName();
|
name = ((AbstractCharacter) tar).getFirstName();
|
||||||
|
|||||||
+20
-17
@@ -9,46 +9,49 @@
|
|||||||
|
|
||||||
package engine.devcmd.cmds;
|
package engine.devcmd.cmds;
|
||||||
|
|
||||||
import engine.Enum;
|
|
||||||
import engine.devcmd.AbstractDevCmd;
|
import engine.devcmd.AbstractDevCmd;
|
||||||
import engine.gameManager.DbManager;
|
import engine.objects.AbstractCharacter;
|
||||||
import engine.objects.AbstractGameObject;
|
import engine.objects.AbstractGameObject;
|
||||||
import engine.objects.PlayerCharacter;
|
import engine.objects.PlayerCharacter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class DecachePlayerCmd extends AbstractDevCmd {
|
|
||||||
|
|
||||||
public DecachePlayerCmd() {
|
public class PrintEffectsCmd extends AbstractDevCmd {
|
||||||
super("decacheplayer");
|
|
||||||
|
public PrintEffectsCmd() {
|
||||||
|
super("printeffects");
|
||||||
|
// super("printstats", MBServerStatics.ACCESS_LEVEL_ADMIN);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void _doCmd(PlayerCharacter pc, String[] words,
|
protected void _doCmd(PlayerCharacter pc, String[] words,
|
||||||
AbstractGameObject target) {
|
AbstractGameObject target) {
|
||||||
if (words.length < 1) {
|
|
||||||
this.sendUsage(pc);
|
AbstractCharacter tar;
|
||||||
|
|
||||||
|
if (target != null && target instanceof AbstractCharacter) {
|
||||||
|
tar = (AbstractCharacter) target;
|
||||||
|
|
||||||
|
String newline = "\r\n ";
|
||||||
|
String output = "Effects For Character: " + tar.getName() + newline;
|
||||||
|
|
||||||
|
for (String effect : tar.effects.keySet()) {
|
||||||
|
output += effect + newline;
|
||||||
}
|
}
|
||||||
|
throwbackInfo(pc, output);
|
||||||
int objectUUID = Integer.parseInt(words[0]);
|
|
||||||
|
|
||||||
if (DbManager.inCache(Enum.GameObjectType.PlayerCharacter, objectUUID)) {
|
|
||||||
this.setTarget(PlayerCharacter.getFromCache(objectUUID)); //for logging
|
|
||||||
PlayerCharacter.getFromCache(objectUUID).removeFromCache();
|
|
||||||
} else {
|
|
||||||
this.sendHelp(pc);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String _getHelpString() {
|
protected String _getHelpString() {
|
||||||
return "No player found. Please make sure the table ID is correct.";
|
return "Returns the player's current stats";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String _getUsageString() {
|
protected String _getUsageString() {
|
||||||
return "' /decacheplayer <UUID>'";
|
return "' /printstats'";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -9,8 +9,9 @@
|
|||||||
|
|
||||||
package engine.devcmd.cmds;
|
package engine.devcmd.cmds;
|
||||||
|
|
||||||
import engine.Enum.GameObjectType;
|
|
||||||
import engine.devcmd.AbstractDevCmd;
|
import engine.devcmd.AbstractDevCmd;
|
||||||
|
import engine.mbEnums;
|
||||||
|
import engine.mbEnums.GameObjectType;
|
||||||
import engine.objects.*;
|
import engine.objects.*;
|
||||||
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
@@ -63,9 +64,9 @@ public class PrintEquipCmd extends AbstractDevCmd {
|
|||||||
if (tar.getObjectType() == GameObjectType.Mob) {
|
if (tar.getObjectType() == GameObjectType.Mob) {
|
||||||
Mob tarMob = (Mob) tar;
|
Mob tarMob = (Mob) tar;
|
||||||
throwbackInfo(pc, "Equip for " + type + ' ' + name + " (" + tar.getObjectUUID() + ')');
|
throwbackInfo(pc, "Equip for " + type + ' ' + name + " (" + tar.getObjectUUID() + ')');
|
||||||
for (int slot : tarMob.getEquip().keySet()) {
|
for (mbEnums.EquipSlotType slot : tarMob.charItemManager.equipped.keySet()) {
|
||||||
MobEquipment equip = tarMob.getEquip().get(slot);
|
Item equip = tarMob.charItemManager.equipped.get(slot);
|
||||||
throwbackInfo(pc, equip.getItemBase().getUUID() + " : " + equip.getItemBase().getName() + ", slot: " + slot);
|
throwbackInfo(pc, equip.templateID + " : " + equip.template.item_base_name + ", slot: " + slot);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -73,19 +74,20 @@ public class PrintEquipCmd extends AbstractDevCmd {
|
|||||||
if (tar.getObjectType() == GameObjectType.NPC) {
|
if (tar.getObjectType() == GameObjectType.NPC) {
|
||||||
NPC tarMob = (NPC) tar;
|
NPC tarMob = (NPC) tar;
|
||||||
throwbackInfo(pc, "Equip for " + type + ' ' + name + " (" + tar.getObjectUUID() + ')');
|
throwbackInfo(pc, "Equip for " + type + ' ' + name + " (" + tar.getObjectUUID() + ')');
|
||||||
for (int slot : tarMob.getEquip().keySet()) {
|
for (mbEnums.EquipSlotType slot : tarMob.charItemManager.equipped.keySet()) {
|
||||||
MobEquipment equip = tarMob.getEquip().get(slot);
|
Item equip = tarMob.charItemManager.equipped.get(slot);
|
||||||
throwbackInfo(pc, equip.getItemBase().getUUID() + " : " + equip.getItemBase().getName() + ", slot: " + slot);
|
throwbackInfo(pc, equip.templateID + " : " + equip.template.item_base_name + ", slot: " + slot);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
CharacterItemManager cim = ((AbstractCharacter) tar).getCharItemManager();
|
CharacterItemManager cim = ((AbstractCharacter) tar).charItemManager;
|
||||||
ConcurrentHashMap<Integer, Item> list = cim.getEquipped();
|
ConcurrentHashMap<mbEnums.EquipSlotType, Item> list = cim.getEquipped();
|
||||||
throwbackInfo(pc, "Equip for " + type + ' ' + name + " (" + tar.getObjectUUID() + ')');
|
throwbackInfo(pc, "Equip for " + type + ' ' + name + " (" + tar.getObjectUUID() + ')');
|
||||||
for (Integer slot : list.keySet()) {
|
|
||||||
|
for (mbEnums.EquipSlotType slot : list.keySet()) {
|
||||||
Item item = list.get(slot);
|
Item item = list.get(slot);
|
||||||
throwbackInfo(pc, " " + item.getItemBase().getName() + ", slot: " + slot);
|
throwbackInfo(pc, " " + item.template.item_base_name + ", slot: " + slot);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,8 +9,8 @@
|
|||||||
|
|
||||||
package engine.devcmd.cmds;
|
package engine.devcmd.cmds;
|
||||||
|
|
||||||
import engine.Enum.ItemType;
|
|
||||||
import engine.devcmd.AbstractDevCmd;
|
import engine.devcmd.AbstractDevCmd;
|
||||||
|
import engine.mbEnums.ItemType;
|
||||||
import engine.objects.*;
|
import engine.objects.*;
|
||||||
|
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
@@ -60,7 +60,7 @@ public class PrintInventoryCmd extends AbstractDevCmd {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CharacterItemManager cim = tar.getCharItemManager();
|
CharacterItemManager cim = tar.charItemManager;
|
||||||
inventory = cim.getInventory(); //this list can contain gold when tar is a PC that is dead
|
inventory = cim.getInventory(); //this list can contain gold when tar is a PC that is dead
|
||||||
gold = cim.getGoldInventory();
|
gold = cim.getGoldInventory();
|
||||||
throwbackInfo(pc, " Weight : " + (cim.getInventoryWeight() + cim.getEquipWeight()));
|
throwbackInfo(pc, " Weight : " + (cim.getInventoryWeight() + cim.getEquipWeight()));
|
||||||
@@ -75,14 +75,18 @@ public class PrintInventoryCmd extends AbstractDevCmd {
|
|||||||
int goldCount = 0;
|
int goldCount = 0;
|
||||||
|
|
||||||
for (Item item : inventory) {
|
for (Item item : inventory) {
|
||||||
if (item.getItemBase().getType().equals(ItemType.GOLD) == false) {
|
ItemTemplate template = ItemTemplate.templates.get(item.templateID);
|
||||||
|
|
||||||
|
if (item.template.item_type.equals(ItemType.GOLD) == false) {
|
||||||
|
|
||||||
String chargeInfo = "";
|
String chargeInfo = "";
|
||||||
byte chargeMax = item.getChargesMax();
|
int chargeMax = template.item_initial_charges;
|
||||||
|
|
||||||
if (chargeMax > 0) {
|
if (chargeMax > 0) {
|
||||||
byte charges = item.getChargesRemaining();
|
int charges = item.chargesRemaining;
|
||||||
chargeInfo = " charges: " + charges + '/' + chargeMax;
|
chargeInfo = " charges: " + charges + '/' + chargeMax;
|
||||||
}
|
}
|
||||||
throwbackInfo(pc, " " + item.getItemBase().getName() + ", count: " + item.getNumOfItems() + chargeInfo);
|
throwbackInfo(pc, " " + template.item_base_name + ", count: " + item.getNumOfItems() + chargeInfo);
|
||||||
} else
|
} else
|
||||||
goldCount += item.getNumOfItems();
|
goldCount += item.getNumOfItems();
|
||||||
}
|
}
|
||||||
|
|||||||
+24
-23
@@ -10,48 +10,49 @@
|
|||||||
package engine.devcmd.cmds;
|
package engine.devcmd.cmds;
|
||||||
|
|
||||||
import engine.devcmd.AbstractDevCmd;
|
import engine.devcmd.AbstractDevCmd;
|
||||||
import engine.gameManager.ChatManager;
|
import engine.objects.AbstractCharacter;
|
||||||
import engine.objects.AbstractGameObject;
|
import engine.objects.AbstractGameObject;
|
||||||
|
import engine.objects.CharacterRune;
|
||||||
import engine.objects.PlayerCharacter;
|
import engine.objects.PlayerCharacter;
|
||||||
|
|
||||||
public class DebugMeleeSyncCmd extends AbstractDevCmd {
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
public DebugMeleeSyncCmd() {
|
public class PrintRunesCmd extends AbstractDevCmd {
|
||||||
super("debugmeleesync");
|
|
||||||
|
public PrintRunesCmd() {
|
||||||
|
super("printrunes");
|
||||||
|
// super("printstats", MBServerStatics.ACCESS_LEVEL_ADMIN);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void _doCmd(PlayerCharacter pc, String[] words,
|
protected void _doCmd(PlayerCharacter pc, String[] words,
|
||||||
AbstractGameObject target) {
|
AbstractGameObject target) {
|
||||||
// Arg Count Check
|
|
||||||
if (words.length != 1) {
|
AbstractCharacter tar;
|
||||||
this.sendUsage(pc);
|
|
||||||
return;
|
if (target != null && target instanceof AbstractCharacter) {
|
||||||
|
tar = (AbstractCharacter) target;
|
||||||
|
|
||||||
|
String newline = "\r\n ";
|
||||||
|
String output = "Applied Runes For Character: " + ((AbstractCharacter) target).getName() + newline;
|
||||||
|
|
||||||
|
for (CharacterRune rune : ((AbstractCharacter) target).runes) {
|
||||||
|
output += rune.getRuneBaseID() + " " + rune.getRuneBase().getName() + newline;
|
||||||
}
|
}
|
||||||
|
throwbackInfo(pc, output);
|
||||||
String s = words[0].toLowerCase();
|
|
||||||
|
|
||||||
if (s.equals("on")) {
|
|
||||||
pc.setDebug(64, true);
|
|
||||||
ChatManager.chatSayInfo(pc, "Melee Sync Debug ON");
|
|
||||||
} else if (s.equals("off")) {
|
|
||||||
pc.setDebug(64, false);
|
|
||||||
ChatManager.chatSayInfo(pc, "Melee Sync Debug OFF");
|
|
||||||
} else {
|
|
||||||
this.sendUsage(pc);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String _getHelpString() {
|
protected String _getHelpString() {
|
||||||
return "Turns on/off melee sync debugging.";
|
return "Returns the player's current stats";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String _getUsageString() {
|
protected String _getUsageString() {
|
||||||
return "'./debugmeleesync on|off'";
|
return "' /printstats'";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -9,8 +9,8 @@
|
|||||||
|
|
||||||
package engine.devcmd.cmds;
|
package engine.devcmd.cmds;
|
||||||
|
|
||||||
import engine.Enum.GameObjectType;
|
|
||||||
import engine.devcmd.AbstractDevCmd;
|
import engine.devcmd.AbstractDevCmd;
|
||||||
|
import engine.mbEnums.GameObjectType;
|
||||||
import engine.objects.*;
|
import engine.objects.*;
|
||||||
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|||||||
@@ -10,10 +10,10 @@
|
|||||||
package engine.devcmd.cmds;
|
package engine.devcmd.cmds;
|
||||||
|
|
||||||
import engine.devcmd.AbstractDevCmd;
|
import engine.devcmd.AbstractDevCmd;
|
||||||
|
import engine.gameManager.ItemManager;
|
||||||
|
import engine.mbEnums;
|
||||||
import engine.objects.*;
|
import engine.objects.*;
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@@ -22,17 +22,6 @@ public class PrintStatsCmd extends AbstractDevCmd {
|
|||||||
|
|
||||||
public PrintStatsCmd() {
|
public PrintStatsCmd() {
|
||||||
super("printstats");
|
super("printstats");
|
||||||
// super("printstats", MBServerStatics.ACCESS_LEVEL_ADMIN);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static ItemBase getWeaponBase(int slot, HashMap<Integer, MobEquipment> equip) {
|
|
||||||
if (equip.containsKey(slot)) {
|
|
||||||
MobEquipment item = equip.get(slot);
|
|
||||||
if (item != null && item.getItemBase() != null) {
|
|
||||||
return item.getItemBase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -76,11 +65,12 @@ public class PrintStatsCmd extends AbstractDevCmd {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void printStatsMob(PlayerCharacter pc, Mob tar) {
|
public void printStatsMob(PlayerCharacter pc, Mob tar) {
|
||||||
|
|
||||||
MobBase mb = tar.getMobBase();
|
MobBase mb = tar.getMobBase();
|
||||||
|
|
||||||
if (mb == null)
|
if (mb == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
||||||
String newline = "\r\n ";
|
String newline = "\r\n ";
|
||||||
String out = "Server stats for Mob " + mb.getFirstName() + newline;
|
String out = "Server stats for Mob " + mb.getFirstName() + newline;
|
||||||
out += "Stats Base (Modified)" + newline;
|
out += "Stats Base (Modified)" + newline;
|
||||||
@@ -96,23 +86,21 @@ public class PrintStatsCmd extends AbstractDevCmd {
|
|||||||
out += "Defense: " + tar.getDefenseRating() + newline;
|
out += "Defense: " + tar.getDefenseRating() + newline;
|
||||||
|
|
||||||
//get weapons
|
//get weapons
|
||||||
HashMap<Integer, MobEquipment> equip = tar.getEquip();
|
|
||||||
ItemBase main = null;
|
|
||||||
|
|
||||||
if (equip != null)
|
if (tar.charItemManager.equipped.isEmpty() == false)
|
||||||
main = getWeaponBase(1, equip);
|
if (tar.charItemManager.equipped.get(mbEnums.EquipSlotType.LHELD) != null && !ItemManager.isShield(tar.charItemManager.equipped.get(mbEnums.EquipSlotType.LHELD))) {
|
||||||
ItemBase off = null;
|
//off hand weapon
|
||||||
|
out += "Attack Rating: " + tar.atrHandTwo + newline;
|
||||||
if (equip != null)
|
out += "Damage: " + tar.minDamageHandTwo + " - " + tar.maxDamageHandTwo + newline;
|
||||||
getWeaponBase(2, equip);
|
out += "Range: " + tar.rangeHandTwo + newline;
|
||||||
if (main == null && off == null) {
|
out += "Attack Speed: " + tar.speedHandTwo + newline;
|
||||||
out += "Main Hand: atr: " + tar.getAtrHandOne() + ", damage: " + tar.getMinDamageHandOne() + " to " + tar.getMaxDamageHandOne() + ", speed: " + tar.getSpeedHandOne() + ", range: 6" + newline;
|
|
||||||
} else {
|
} else {
|
||||||
if (main != null)
|
out += "Attack Rating: " + tar.atrHandOne + newline;
|
||||||
out += "Main Hand: atr: " + tar.getAtrHandOne() + ", damage: " + tar.getMinDamageHandOne() + " to " + tar.getMaxDamageHandOne() + ", speed: " + tar.getSpeedHandOne() + ", range: " + main.getRange() + newline;
|
out += "Damage: " + tar.minDamageHandOne + " - " + tar.maxDamageHandOne + newline;
|
||||||
if (off != null)
|
out += "Range: " + tar.rangeHandOne + newline;
|
||||||
out += "Main Hand: atr: " + tar.getAtrHandTwo() + ", damage: " + tar.getMinDamageHandTwo() + " to " + tar.getMaxDamageHandTwo() + ", speed: " + tar.getSpeedHandTwo() + ", range: " + off.getRange() + newline;
|
out += "Attack Speed: " + tar.speedHandOne + newline;
|
||||||
}
|
}
|
||||||
|
|
||||||
out += "isAlive: " + tar.isAlive() + ", Combat: " + tar.isCombat() + newline;
|
out += "isAlive: " + tar.isAlive() + ", Combat: " + tar.isCombat() + newline;
|
||||||
|
|
||||||
throwbackInfo(pc, out);
|
throwbackInfo(pc, out);
|
||||||
|
|||||||
@@ -46,11 +46,12 @@ public class PrintVaultCmd extends AbstractDevCmd {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
CharacterItemManager cim = ((AbstractCharacter) tar).getCharItemManager();
|
CharacterItemManager cim = ((AbstractCharacter) tar).charItemManager;
|
||||||
ArrayList<Item> list = cim.getVault();
|
ArrayList<Item> list = cim.getVault();
|
||||||
throwbackInfo(pc, "Vault for " + type + ' ' + name + " (" + tar.getObjectUUID() + ')');
|
throwbackInfo(pc, "Vault for " + type + ' ' + name + " (" + tar.getObjectUUID() + ')');
|
||||||
for (Item item : list) {
|
for (Item item : list) {
|
||||||
throwbackInfo(pc, " " + item.getItemBase().getName() + ", count: " + item.getNumOfItems());
|
ItemTemplate template = ItemTemplate.templates.get(item.templateID);
|
||||||
|
throwbackInfo(pc, " " + template.item_base_name + ", count: " + item.getNumOfItems());
|
||||||
}
|
}
|
||||||
Item gold = cim.getGoldVault();
|
Item gold = cim.getGoldVault();
|
||||||
if (gold != null)
|
if (gold != null)
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
package engine.devcmd.cmds;
|
package engine.devcmd.cmds;
|
||||||
|
|
||||||
import engine.Enum;
|
|
||||||
import engine.Enum.BuildingGroup;
|
|
||||||
import engine.Enum.GameObjectType;
|
|
||||||
import engine.InterestManagement.WorldGrid;
|
import engine.InterestManagement.WorldGrid;
|
||||||
import engine.devcmd.AbstractDevCmd;
|
import engine.devcmd.AbstractDevCmd;
|
||||||
import engine.gameManager.BuildingManager;
|
import engine.gameManager.BuildingManager;
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
import engine.gameManager.ZoneManager;
|
import engine.gameManager.ZoneManager;
|
||||||
import engine.math.Vector3fImmutable;
|
import engine.math.Vector3fImmutable;
|
||||||
|
import engine.mbEnums;
|
||||||
|
import engine.mbEnums.BuildingGroup;
|
||||||
|
import engine.mbEnums.GameObjectType;
|
||||||
import engine.objects.*;
|
import engine.objects.*;
|
||||||
import engine.server.MBServerStatics;
|
import engine.server.MBServerStatics;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
@@ -42,7 +42,7 @@ public class PurgeObjectsCmd extends AbstractDevCmd {
|
|||||||
|
|
||||||
private static void PurgeWalls(Zone zone, PlayerCharacter pc) {
|
private static void PurgeWalls(Zone zone, PlayerCharacter pc) {
|
||||||
|
|
||||||
if (!zone.isPlayerCity())
|
if (!zone.guild_zone)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (Building building : zone.zoneBuildingSet) {
|
for (Building building : zone.zoneBuildingSet) {
|
||||||
@@ -59,22 +59,25 @@ public class PurgeObjectsCmd extends AbstractDevCmd {
|
|||||||
|
|
||||||
|
|
||||||
if (npc != null) {
|
if (npc != null) {
|
||||||
for (Mob mob : npc.getSiegeMinionMap().keySet()) {
|
for (Integer minionUUID : npc.minions) {
|
||||||
|
Mob mob = Mob.getMob(minionUUID);
|
||||||
WorldGrid.RemoveWorldObject(mob);
|
WorldGrid.RemoveWorldObject(mob);
|
||||||
WorldGrid.removeObject(mob, pc);
|
WorldGrid.removeObject(mob, pc);
|
||||||
//Mob.getRespawnMap().remove(mob);
|
|
||||||
if (mob.getParentZone() != null)
|
if (mob.getParentZone() != null)
|
||||||
mob.getParentZone().zoneMobSet.remove(mob);
|
mob.getParentZone().zoneMobSet.remove(mob);
|
||||||
}
|
}
|
||||||
|
|
||||||
DbManager.NPCQueries.DELETE_NPC(npc);
|
DbManager.NPCQueries.DELETE_NPC(npc);
|
||||||
DbManager.removeFromCache(GameObjectType.NPC,
|
DbManager.removeFromCache(GameObjectType.NPC,
|
||||||
npc.getObjectUUID());
|
npc.getObjectUUID());
|
||||||
WorldGrid.RemoveWorldObject(npc);
|
WorldGrid.RemoveWorldObject(npc);
|
||||||
} else if (mobA != null) {
|
} else if (mobA != null) {
|
||||||
for (Mob mob : mobA.getSiegeMinionMap().keySet()) {
|
for (Integer minionUUID : mobA.minions) {
|
||||||
|
Mob mob = Mob.getMob(minionUUID);
|
||||||
WorldGrid.RemoveWorldObject(mob);
|
WorldGrid.RemoveWorldObject(mob);
|
||||||
WorldGrid.removeObject(mob, pc);
|
WorldGrid.removeObject(mob, pc);
|
||||||
//Mob.getRespawnMap().remove(mob);
|
|
||||||
if (mob.getParentZone() != null)
|
if (mob.getParentZone() != null)
|
||||||
mob.getParentZone().zoneMobSet.remove(mob);
|
mob.getParentZone().zoneMobSet.remove(mob);
|
||||||
}
|
}
|
||||||
@@ -151,27 +154,29 @@ public class PurgeObjectsCmd extends AbstractDevCmd {
|
|||||||
|
|
||||||
|
|
||||||
if (npc != null) {
|
if (npc != null) {
|
||||||
for (Mob mob : npc.getSiegeMinionMap().keySet()) {
|
for (Integer minionUUID : npc.minions) {
|
||||||
|
Mob mob = Mob.getMob(minionUUID);
|
||||||
WorldGrid.RemoveWorldObject(mob);
|
WorldGrid.RemoveWorldObject(mob);
|
||||||
WorldGrid.removeObject(mob, pc);
|
WorldGrid.removeObject(mob, pc);
|
||||||
//Mob.getRespawnMap().remove(mob);
|
|
||||||
if (mob.getParentZone() != null)
|
if (mob.getParentZone() != null)
|
||||||
mob.getParentZone().zoneMobSet.remove(mob);
|
mob.getParentZone().zoneMobSet.remove(mob);
|
||||||
}
|
}
|
||||||
DbManager.NPCQueries.DELETE_NPC(npc);
|
DbManager.NPCQueries.DELETE_NPC(npc);
|
||||||
DbManager.removeFromCache(Enum.GameObjectType.NPC,
|
DbManager.removeFromCache(mbEnums.GameObjectType.NPC,
|
||||||
npc.getObjectUUID());
|
npc.getObjectUUID());
|
||||||
WorldGrid.RemoveWorldObject(npc);
|
WorldGrid.RemoveWorldObject(npc);
|
||||||
} else if (mobA != null) {
|
} else if (mobA != null) {
|
||||||
for (Mob mob : mobA.getSiegeMinionMap().keySet()) {
|
for (Integer minionUUID : mobA.minions) {
|
||||||
|
Mob mob = Mob.getMob(minionUUID);
|
||||||
WorldGrid.RemoveWorldObject(mob);
|
WorldGrid.RemoveWorldObject(mob);
|
||||||
WorldGrid.removeObject(mob, pc);
|
WorldGrid.removeObject(mob, pc);
|
||||||
//Mob.getRespawnMap().remove(mob);
|
|
||||||
if (mob.getParentZone() != null)
|
if (mob.getParentZone() != null)
|
||||||
mob.getParentZone().zoneMobSet.remove(mob);
|
mob.getParentZone().zoneMobSet.remove(mob);
|
||||||
}
|
}
|
||||||
DbManager.MobQueries.DELETE_MOB(mobA);
|
DbManager.MobQueries.DELETE_MOB(mobA);
|
||||||
DbManager.removeFromCache(Enum.GameObjectType.Mob,
|
DbManager.removeFromCache(mbEnums.GameObjectType.Mob,
|
||||||
mobA.getObjectUUID());
|
mobA.getObjectUUID());
|
||||||
WorldGrid.RemoveWorldObject(mobA);
|
WorldGrid.RemoveWorldObject(mobA);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,12 +60,12 @@ public class RealmInfoCmd extends AbstractDevCmd {
|
|||||||
outString += ")";
|
outString += ")";
|
||||||
outString += newline;
|
outString += newline;
|
||||||
|
|
||||||
outString += " Zone: " + serverZone.getName();
|
outString += " Zone: " + serverZone.zoneName;
|
||||||
|
|
||||||
outString += newline;
|
outString += newline;
|
||||||
|
|
||||||
if (serverZone.getParent() != null)
|
if (serverZone.parent != null)
|
||||||
outString += " Parent: " + serverZone.getParent().getName();
|
outString += " Parent: " + serverZone.parent.zoneName;
|
||||||
else
|
else
|
||||||
outString += "Parent: NONE";
|
outString += "Parent: NONE";
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user