From 162e956a4c1b74b04c0f9b800ca99ff577043e3a Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Mon, 27 Jan 2020 00:34:22 +0000 Subject: [PATCH] Replaced seed CSV data with aCis free version XML data. --- .../dist/game/data/Seeds.xml | 260 +++++++++ .../dist/game/data/csv/seeds.csv | 519 ------------------ .../dist/game/data/xsd/Seeds.xsd | 26 + .../org/l2jmobius/gameserver/GameServer.java | 4 +- .../gameserver/datatables/xml/SeedData.java | 321 +++++++++++ .../gameserver/handler/itemhandlers/Seed.java | 4 +- .../gameserver/handler/skillhandlers/Sow.java | 8 +- .../instancemanager/CastleManorManager.java | 8 +- .../org/l2jmobius/gameserver/model/Manor.java | 464 ---------------- .../gameserver/model/actor/Attackable.java | 6 +- .../gameserver/model/entity/siege/Castle.java | 4 +- .../model/holders/SeedDataHolder.java | 95 ++++ .../clientpackets/RequestBuyProcure.java | 6 +- .../clientpackets/RequestProcureCropList.java | 8 +- .../network/serverpackets/ExShowCropInfo.java | 8 +- .../serverpackets/ExShowCropSetting.java | 16 +- .../serverpackets/ExShowManorDefaultInfo.java | 14 +- .../network/serverpackets/ExShowSeedInfo.java | 8 +- .../serverpackets/ExShowSeedSetting.java | 18 +- .../serverpackets/ExShowSellCropList.java | 10 +- 20 files changed, 763 insertions(+), 1044 deletions(-) create mode 100644 L2J_Mobius_C6_Interlude/dist/game/data/Seeds.xml delete mode 100644 L2J_Mobius_C6_Interlude/dist/game/data/csv/seeds.csv create mode 100644 L2J_Mobius_C6_Interlude/dist/game/data/xsd/Seeds.xsd create mode 100644 L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/xml/SeedData.java delete mode 100644 L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Manor.java create mode 100644 L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/holders/SeedDataHolder.java diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/Seeds.xml b/L2J_Mobius_C6_Interlude/dist/game/data/Seeds.xml new file mode 100644 index 0000000000..e3857868b3 --- /dev/null +++ b/L2J_Mobius_C6_Interlude/dist/game/data/Seeds.xml @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/csv/seeds.csv b/L2J_Mobius_C6_Interlude/dist/game/data/csv/seeds.csv deleted file mode 100644 index 3057734d96..0000000000 --- a/L2J_Mobius_C6_Interlude/dist/game/data/csv/seeds.csv +++ /dev/null @@ -1,519 +0,0 @@ -#This file contains all special info about seeds. - -#Format: -#seed_id;seed_level;crop_id;mature_id; -#reward1_id;reward2_id;manor_id;is_alternative; -#limit_for_seeds;limit_for_crops - -# Seed: Dark Coda -5016;10;5073;5103;1864;1878;1;0;8100;9000 -# Seed: Red Coda -5017;13;5068;5098;1865;1879;1;0;8100;9000 -# Seed: Chilly Coda -5018;16;5065;5095;1866;1874;1;0;8100;9000 -# Seed: Blue Coda -5019;19;5067;5097;1867;1894;1;0;4050;4500 -# Seed: Golden Coda -5020;22;5069;5099;1868;1876;1;0;2025;2250 -# Seed: Lute Coda -5021;25;5071;5101;1869;1895;1;0;1350;1500 -# Seed: Desert Coda -5022;28;5070;5100;1870;1877;1;0;2025;2250 -# Seed: Blue Cobol -5023;37;5077;5107;1873;4044;1;0;810;900 -# Seed: Blue Coda -5024;19;5067;5097;1867;1894;2;0;4194;4660 -# Seed: Golden Coda -5025;22;5069;5099;1868;1876;2;0;2097;2330 -# Seed: Lute Coda -5026;25;5071;5101;1869;1895;2;0;1398;1553 -# Seed: Desert Coda -5027;28;5070;5100;1870;1877;2;0;2097;2330 -# Seed: Red Cobol -5028;31;5078;5108;1871;4042;2;0;2097;2330 -# Seed: Chilly Cobol -5029;34;5075;5105;1872;1880;2;0;1677;1864 -# Seed: Thorn Cobol -5030;40;5082;5112;1864;5549;2;0;838;932 -# Seed: Golden Cobol -5031;43;5079;5109;1865;4039;2;0;838;932 -# Seed: Great Cobol -5032;46;5084;5114;1866;1885;2;0;838;932 -# Seed: Red Cobol -5033;31;5078;5108;1871;4042;3;0;2250;2500 -# Seed: Chilly Cobol -5034;34;5075;5105;1872;1880;3;0;1800;2000 -# Seed: Blue Cobol -5035;37;5077;5107;1873;4044;3;0;900;1000 -# Seed: Thorn Cobol -5036;40;5082;5112;1864;5549;3;0;900;1000 -# Seed: Golden Cobol -5037;43;5079;5109;1865;4039;3;0;900;1000 -# Seed: Great Cobol -5038;46;5084;5114;1866;1885;3;0;900;1000 -# Seed: Red Codran -5039;49;5088;5118;1867;4043;3;0;1125;1250 -# Seed: Twin Codran -5040;58;5092;5122;1871;4040;3;0;900;1000 -# Seed: Desert Codran -5041;64;5090;5120;1873;5550;3;0;450;500 -# Seed: Dark Coda -5042;10;5073;5103;1864;1878;4;0;7200;8000 -# Seed: Red Coda -5043;13;5068;5098;1865;1879;4;0;7200;8000 -# Seed: Blue Coda -5044;19;5067;5097;1867;1894;4;0;3600;4000 -# Seed: Red Cobol -5045;31;5078;5108;1871;4042;4;0;1800;2000 -# Seed: Chilly Cobol -5046;34;5075;5105;1872;1880;4;0;1440;1600 -# Seed: Blue Cobol -5047;37;5077;5107;1873;4044;4;0;720;800 -# Seed: Thorn Cobol -5048;40;5082;5112;1864;5549;4;0;720;800 -# Seed: Sea Codran -5049;50;5091;5121;1868;1884;4;0;720;800 -# Seed: Chilly Codran -5050;52;5085;5115;1869;4041;4;0;900;1000 -# Seed: Blue Codran -5051;55;5087;5117;1870;1882;4;0;720;800 -# Seed: Twin Codran -5052;58;5092;5122;1871;4040;4;0;720;800 -# Seed: Thorn Cobol -5053;40;5082;5112;1864;5549;5;0;1344;1494 -# Seed: Golden Cobol -5054;43;5079;5109;1865;4039;5;0;1344;1494 -# Seed: Great Cobol -5055;46;5084;5114;1866;1885;5;0;1344;1494 -# Seed: Red Codran -5056;49;5088;5118;1867;4043;5;0;1680;1867 -# Seed: Chilly Codran -5057;52;5085;5115;1869;4041;5;0;1680;1867 -# Seed: Blue Codran -5058;55;5087;5117;1870;1882;5;0;1344;1494 -# Seed: Twin Codran -5059;58;5092;5122;1871;4040;5;0;1344;1494 -# Seed: Great Codran -5060;61;5094;5124;1872;1881;5;0;896;996 -# Seed: Desert Codran -5061;64;5090;5120;1873;5550;5;0;672;747 -# Seed: Chilly Cobol -5221;34;5075;5105;1872;1880;6;0;2592;2880 -# Seed: Blue Cobol -5222;37;5077;5107;1873;4044;6;0;1296;1440 -# Seed: Thorn Cobol -5223;40;5082;5112;1864;5549;6;0;1296;1440 -# Seed: Golden Cobol -5224;43;5079;5109;1865;4039;6;0;1296;1440 -# Seed: Great Cobol -5225;46;5084;5114;1866;1885;6;0;1296;1440 -# Seed: Red Codran -5226;49;5088;5118;1867;4043;6;0;1620;1800 -# Seed: Sea Codran -5227;50;5091;5121;1868;1884;6;0;1296;1440 -# Alternative Dark Coda Seed -5650;10;5818;5838;1864;1878;1;1;22500;2250 -# Alternative Red Coda Seed -5651;13;5819;5839;1865;1879;1;1;22500;2250 -# Alternative Chilly Coda Seed -5652;16;5820;5840;1866;1874;1;1;22500;2250 -# Alternative Blue Coda Seed -5653;19;5821;5841;1867;1894;1;1;11250;1125 -# Alternative Golden Coda Seed -5654;22;5822;5842;1868;1876;1;1;5625;562 -# Alternative Lute Coda Seed -5655;25;5823;5843;1869;1895;1;1;3750;375 -# Alternative Desert Coda Seed -5656;28;5824;5844;1870;1877;1;1;5625;562 -# Alternative Blue Cobol Seed -5657;37;5827;5847;1873;4044;1;1;2250;225 -# Alternative Blue Coda Seed -5658;19;5821;5841;1867;1894;2;1;11650;1165 -# Alternative Golden Coda Seed -5659;22;5822;5842;1868;1876;2;1;5825;582 -# Alternative Lute Coda Seed -5660;25;5823;5843;1869;1895;2;1;3883;388 -# Alternative Desert Coda Seed -5661;28;5824;5844;1870;1877;2;1;5825;582 -# Alternative Red Cobol Seed -5662;31;5825;5845;1871;4042;2;1;5825;582 -# Alternative Chilly Cobol Seed -5663;34;5826;5846;1872;1880;2;1;4660;466 -# Alternative Thorn Cobol Seed -5664;40;5828;5848;1864;5549;2;1;2330;233 -# Alternative Golden Cobol Seed -5665;43;5829;5849;1865;4039;2;1;2330;233 -# Alternative Great Cobol Seed -5666;46;5830;5850;1866;1885;2;1;2912;291 -# Alternative Red Cobol Seed -5667;31;5825;5845;1871;4042;3;1;6250;625 -# Alternative Chilly Cobol Seed -5668;34;5826;5846;1872;1880;3;1;5000;500 -# Alternative Blue Cobol Seed -5669;37;5827;5847;1873;4044;3;1;2500;250 -# Alternative Thorn Cobol Seed -5670;40;5828;5848;1864;5549;3;1;2500;250 -# Alternative Golden Cobol Seed -5671;43;5829;5849;1865;4039;3;1;2500;250 -# Alternative Great Cobol Seed -5672;46;5830;5850;1866;1885;3;1;3125;312 -# Alternative Red Codran Seed -5673;49;5831;5851;1867;4043;3;1;3125;312 -# Alternative Twin Codran Seed -5674;58;5835;5855;1871;4040;3;1;2500;250 -# Alternative Desert Codran Seed -5675;64;5837;5857;1873;5550;3;1;1250;125 -# Alternative Dark Coda Seed -5676;10;5818;5838;1864;1878;4;1;20000;2000 -# Alternative Red Coda Seed -5677;13;5819;5839;1865;1879;4;1;20000;2000 -# Alternative Blue Coda Seed -5678;19;5821;5841;1867;1894;4;1;10000;1000 -# Alternative Red Cobol Seed -5679;31;5825;5845;1871;4042;4;1;5000;500 -# Alternative Chilly Cobol Seed -5680;34;5826;5846;1872;1880;4;1;4000;400 -# Alternative Blue Cobol Seed -5681;37;5827;5847;1873;4044;4;1;2000;200 -# Alternative Thorn Cobol Seed -5682;40;5828;5848;1864;5549;4;1;2000;200 -# Alternative Sea Codran Seed -5683;50;5832;5852;1868;1884;4;1;2000;200 -# Alternative Chilly Codran Seed -5684;52;5833;5853;1869;4041;4;1;2500;250 -# Alternative Blue Codran Seed -5685;55;5834;5854;1870;1882;4;1;2000;200 -# Alternative Twin Codran Seed -5686;58;5835;5855;1871;4040;4;1;2000;200 -# Alternative Thorn Cobol Seed -5687;40;5828;5848;1864;5549;5;1;3735;373 -# Alternative Golden Cobol Seed -5688;43;5829;5849;1865;4039;5;1;3735;373 -# Alternative Great Cobol Seed -5689;46;5830;5850;1866;1885;5;1;4668;466 -# Alternative Red Codran Seed -5690;49;5831;5851;1867;4043;5;1;4668;466 -# Alternative Chilly Codran Seed -5691;52;5833;5853;1869;4041;5;1;4668;466 -# Alternative Blue Codran Seed -5692;55;5834;5854;1870;1882;5;1;3735;373 -# Alternative Twin Codran Seed -5693;58;5835;5855;1871;4040;5;1;3735;373 -# Alternative Great Codran Seed -5694;61;5836;5856;1872;1881;5;1;2490;249 -# Alternative Desert Codran Seed -5695;64;5837;5857;1873;5550;5;1;1867;186 -# Alternative Chilly Cobol Seed -5696;34;5826;5846;1872;1880;6;1;7200;720 -# Alternative Blue Cobol Seed -5697;37;5827;5847;1873;4044;6;1;3600;360 -# Alternative Thorn Cobol Seed -5698;40;5828;5848;1864;5549;6;1;3600;360 -# Alternative Golden Cobol Seed -5699;43;5829;5849;1865;4039;6;1;3600;360 -# Alternative Great Cobol Seed -5700;46;5830;5850;1866;1885;6;1;4500;450 -# Alternative Red Codran Seed -5701;49;5831;5851;1867;4043;6;1;4500;450 -# Alternative Sea Codran Seed -5702;50;5832;5852;1868;1884;6;1;3600;360 -# Seed: Alternative Great Coba -6727;85;6554;6568;5549;5550;7;1;208;90 -# Seed: Alternative Sea Coba -6728;79;6552;6566;4044;4042;4;1;111;44 -# Seed: Alternative Sea Coba -6729;79;6552;6566;4044;4042;5;1;207;83 -# Seed: Alternative Sea Coba -6730;79;6552;6566;4044;4042;7;1;277;111 -# Seed: Alternative Red Coba -6731;70;6549;6563;1888;4040;3;1;250;83 -# Seed: Alternative Red Coba -6732;70;6549;6563;1888;4040;5;1;373;124 -# Seed: Alternative Red Coba -6733;70;6549;6563;1888;4040;6;1;360;120 -# Seed: Alternative Red Coba -6734;70;6549;6563;1888;4040;8;1;500;166 -# Seed: Alternative Red Coba -6735;70;6549;6563;1888;4040;8;1;500;166 -# Seed: Alternative Desert Coba -6736;76;6551;6565;4043;1890;4;1;133;50 -# Seed: Alternative Desert Coba -6737;76;6551;6565;4043;1890;5;1;249;93 -# Seed: Alternative Desert Coba -6738;76;6551;6565;4043;1890;6;1;240;90 -# Seed: Alternative Desert Coba -6739;76;6551;6565;4043;1890;7;1;333;125 -# Seed: Alternative Desert Coba -6740;76;6551;6565;4043;1890;8;1;333;125 -# Seed: Alternative Twin Coba -6741;82;6553;6567;1885;1893;7;1;250;100 -# Seed: Alternative Blue Coba -6742;67;6548;6562;1894;4039;1;1;281;90 -# Seed: Alternative Blue Coba -6743;67;6548;6562;1894;4039;3;1;312;100 -# Seed: Alternative Blue Coba -6744;67;6548;6562;1894;4039;5;1;466;149 -# Seed: Alternative Blue Coba -6745;67;6548;6562;1894;4039;7;1;625;200 -# Seed: Alternative Blue Coba -6746;67;6548;6562;1894;4039;8;1;625;200 -# Seed: Alternative Golden Coba -6747;73;6550;6564;1887;4041;3;1;192;71 -# Seed: Alternative Golden Coba -6748;73;6550;6564;1887;4041;4;1;153;57 -# Seed: Alternative Golden Coba -6749;73;6550;6564;1887;4041;5;1;287;106 -# Seed: Alternative Golden Coba -6750;73;6550;6564;1887;4041;7;1;384;142 -# Seed: Alternative Golden Coba -6751;73;6550;6564;1887;4041;7;1;384;142 -# Seed: Alternative Golden Coba -6752;73;6550;6564;1887;4041;8;1;384;142 -# Seed: Great Coba -6753;85;6547;6561;5549;5550;7;0;75;363 -# Seed: Sea Coba -6754;79;6545;6559;4044;4042;4;0;40;177 -# Seed: Sea Coba -6755;79;6545;6559;4044;4042;5;0;74;332 -# Seed: Sea Coba -6756;79;6545;6559;4044;4042;7;0;100;444 -# Seed: Red Coba -6757;70;6542;6556;1888;4040;3;0;90;333 -# Seed: Red Coba -6758;70;6542;6556;1888;4040;5;0;134;498 -# Seed: Red Coba -6759;70;6542;6556;1888;4040;6;0;129;480 -# Seed: Red Coba -6760;70;6542;6556;1888;4040;7;0;180;666 -# Seed: Red Coba -6761;70;6542;6556;1888;4040;8;0;180;666 -# Seed: Desert Coba -6762;76;6544;6558;4043;1890;4;0;48;200 -# Seed: Desert Coba -6763;76;6544;6558;4043;1890;5;0;89;373 -# Seed: Desert Coba -6764;76;6544;6558;4043;1890;6;0;86;360 -# Seed: Desert Coba -6765;76;6544;6558;4043;1890;7;0;120;500 -# Seed: Desert Coba -6766;76;6544;6558;4043;1890;8;0;120;500 -# Seed: Twin Coba -6767;82;6546;6560;1885;1893;7;0;90;400 -# Seed: Blue Coba -6768;67;6541;6555;1894;4039;1;0;101;360 -# Seed: Blue Coba -6769;67;6541;6555;1894;4039;3;0;112;400 -# Seed: Blue Coba -6770;67;6541;6555;1894;4039;5;0;168;597 -# Seed: Blue Coba -6771;67;6541;6555;1894;4039;7;0;225;800 -# Seed: Blue Coba -6772;67;6541;6555;1894;4039;8;0;225;800 -# Seed: Golden Coba -6773;73;6543;6557;1887;4041;3;0;69;285 -# Seed: Golden Coba -6774;73;6543;6557;1887;4041;4;0;55;228 -# Seed: Golden Coba -6775;73;6543;6557;1887;4041;5;0;103;426 -# Seed: Golden Coba -6776;73;6543;6557;1887;4041;6;0;99;411 -# Seed: Golden Coba -6777;73;6543;6557;1887;4041;7;0;138;571 -# Seed: Golden Coba -6778;73;6543;6557;1887;4041;8;0;138;571 -# Seed: Blue Cobol -7016;37;5077;5107;1873;4044;2;0;838;932 -# Seed: Blue Codran -7017;55;5087;5117;1870;1882;1;0;810;900 -# Seed: Blue Codran -7018;55;5087;5117;1870;1882;3;0;900;1000 -# Seed: Chilly Cobol -7019;34;5075;5105;1872;1880;1;0;1620;1800 -# Seed: Chilly Coda -7020;16;5065;5095;1866;1874;4;0;7200;8000 -# Seed: Chilly Codran -7021;52;5085;5115;1869;4041;1;0;1012;1125 -# Seed: Chilly Codran -7022;52;5085;5115;1869;4041;3;0;1125;1250 -# Seed: Desert Codran -7023;64;5090;5120;1873;5550;1;0;405;450 -# Seed: Desert Codran -7024;64;5090;5120;1873;5550;7;0;900;1000 -# Seed: Golden Cobol -7025;43;5079;5109;1865;4039;4;0;720;800 -# Seed: Golden Coda -7026;22;5069;5099;1868;1876;4;0;1800;2000 -# Seed: Great Cobol -7027;46;5084;5114;1866;1885;4;0;720;800 -# Seed: Great Codran -7028;61;5094;5124;1872;1881;1;0;540;600 -# Seed: Great Codran -7029;61;5094;5124;1872;1881;3;0;600;666 -# Seed: Alternative Blue Cobol -7030;37;5827;5847;1873;4044;2;1;2330;233 -# Seed: Alternative Blue Codran -7031;55;5834;5854;1870;1882;1;1;2250;225 -# Seed: Alternative Blue Codran -7032;55;5834;5854;1870;1882;3;1;2500;250 -# Seed: Alternative Chilly Cobol -7033;34;5826;5846;1872;1880;1;1;4500;450 -# Seed: Alternative Chilly Coda -7034;16;5820;5840;1866;1874;4;1;20000;2000 -# Seed: Alternative Chilly Codran -7035;52;5833;5853;1869;4041;1;1;2812;281 -# Seed: Alternative Chilly Codran -7036;52;5833;5853;1869;4041;3;1;3125;312 -# Seed: Alternative Desert Codran -7037;64;5837;5857;1873;5550;1;1;1125;112 -# Seed: Alternative Desert Codran -7038;64;5837;5857;1873;5550;7;1;2500;250 -# Seed: Alternative Golden Cobol -7039;43;5829;5849;1865;4039;4;1;2000;200 -# Seed: Alternative Golden Coda -7040;22;5822;5842;1868;1876;4;1;5000;500 -# Seed: Alternative Great Cobol -7041;46;5830;5850;1866;1885;4;1;2500;250 -# Seed: Alternative Great Codran -7042;61;5836;5856;1872;1881;1;1;1500;150 -# Seed: Alternative Great Codran -7043;61;5836;5856;1872;1881;3;1;1666;166 -# Seed: Alternative Red Cobol -7044;31;5825;5845;1871;4042;1;1;5625;562 -# Seed: Alternative Red Codran -7045;49;5831;5851;1867;4043;2;1;2912;291 -# Seed: Alternative Red Codran -7046;49;5831;5851;1867;4043;4;1;2500;250 -# Seed: Alternative Sea Codran -7047;50;5832;5852;1868;1884;2;1;2330;233 -# Seed: Alternative Sea Codran -7048;50;5832;5852;1868;1884;3;1;2500;250 -# Seed: Alternative Sea Codran -7049;50;5832;5852;1868;1884;5;1;3735;373 -# Seed: Alternative Twin Codran -7050;58;5835;5855;1871;4040;1;1;2250;225 -# Seed: Red Cobol -7051;31;5078;5108;1871;4042;1;0;2025;2250 -# Seed: Red Codran -7052;49;5088;5118;1867;4043;2;0;1048;1165 -# Seed: Red Codran -7053;49;5088;5118;1867;4043;4;0;900;1000 -# Seed: Sea Codran -7054;50;5091;5121;1868;1884;2;0;838;932 -# Seed: Sea Codran -7055;50;5091;5121;1868;1884;3;0;900;1000 -# Seed: Sea Codran -7056;50;5091;5121;1868;1884;5;0;1344;1494 -# Seed: Twin Codran -7057;58;5092;5122;1871;4040;1;0;810;900 -# Seed: Twin Codran -8223;58;5092;5122;1871;4040;8;0;1800;2000 -# Seed: Great Codran -8224;61;5094;5124;1872;1881;8;0;1200;1333 -# Seed: Desert Codran -8225;64;5090;5120;1873;5550;8;0;900;1000 -# Seed: Blue Coba -8226;67;6541;6555;1894;4039;8;0;225;800 -# Seed: Red Coba -8227;70;6542;6556;1888;4040;8;0;180;666 -# Seed: Golden Coba -8228;73;6543;6557;1887;4041;8;0;138;571 -# Seed: Desert Coba -8229;76;6544;6558;4043;1890;8;0;120;500 -# Seed: Alternative Twin Codran -8230;58;5835;5855;1871;4040;8;1;5000;500 -# Seed: Alternative Great Codran -8231;61;5836;5856;1872;1881;8;1;3333;333 -# Seed: Alternative Desert Codran -8232;64;5837;5857;1873;5550;8;1;2500;250 -# Seed: Alternative Blue Coba -8233;67;6548;6562;1894;4039;8;1;625;200 -# Seed: Alternative Red Coba -8234;70;6549;6563;1888;4040;8;1;500;166 -# Seed: Alternative Golden Coba -8235;73;6550;6564;1887;4041;8;1;384;142 -# Seed: Alternative Desert Coba -8236;76;6551;6565;4043;1890;8;1;333;125 -# Seed: Dark Coda -8237;10;5073;5103;1864;1878;9;0;8784;9760 -# Seed: Red Coda -8238;13;5068;5098;1865;1879;9;0;8784;9760 -# Seed: Chilly Coda -8239;16;5065;5095;1866;1874;9;0;8784;9760 -# Seed: Blue Coda -8240;19;5067;5097;1867;1894;9;0;4392;4880 -# Seed: Golden Coda -8241;22;5069;5099;1868;1876;9;0;2196;2440 -# Seed: Lute Coda -8242;25;5071;5101;1869;1895;9;0;1464;1626 -# Seed: Desert Coda -8243;28;5070;5100;1870;1877;9;0;2196;2440 -# Seed: Red Cobol -8244;31;5078;5108;1871;4042;9;0;2196;2440 -# Seed: Chilly Cobol -8245;34;5075;5105;1872;1880;9;0;1756;1952 -# Seed: Blue Cobol -8246;37;5077;5107;1873;4044;9;0;878;976 -# Seed: Thorn Cobol -8247;40;5082;5112;1864;5549;9;0;878;976 -# Seed: Golden Cobol -8248;43;5079;5109;1865;4039;9;0;878;976 -# Seed: Great Cobol -8249;46;5084;5114;1866;1885;9;0;878;976 -# Seed: Red Codran -8250;49;5088;5118;1867;4043;9;0;1098;1220 -# Seed: Sea Codran -8251;50;5091;5121;1868;1884;9;0;878;976 -# Seed: Chilly Codran -8252;52;5085;5115;1869;4041;9;0;1098;1220 -# Seed: Blue Codran -8253;55;5087;5117;1870;1882;9;0;878;976 -# Seed: Twin Codran -8254;58;5092;5122;1871;4040;9;0;878;976 -# Alternative Dark Coda Seed -8255;10;5818;5838;1864;1878;9;1;24400;2440 -# Alternative Red Coda Seed -8256;13;5819;5839;1865;1879;9;1;24400;2440 -# Seed: Alternative Chilly Coda -8257;16;5820;5840;1866;1874;9;1;24400;2440 -# Alternative Blue Coda Seed -8258;19;5821;5841;1867;1894;9;1;12200;1220 -# Seed: Alternative Golden Coda -8259;22;5822;5842;1868;1876;9;1;6100;610 -# Alternative Lute Coda Seed -8260;25;5823;5843;1869;1895;9;1;4066;406 -# Alternative Desert Coda Seed -8261;28;5824;5844;1870;1877;9;1;6100;610 -# Seed: Alternative Red Cobol -8262;31;5825;5845;1871;4042;9;1;6100;610 -# Seed: Alternative Chilly Cobol -8263;34;5826;5846;1872;1880;9;1;4880;488 -# Seed: Alternative Blue Cobol -8264;37;5827;5847;1873;4044;9;1;2440;244 -# Alternative Thorn Cobol Seed -8265;40;5828;5848;1864;5549;9;1;2440;244 -# Seed: Alternative Golden Cobol -8266;43;5829;5849;1865;4039;9;1;2440;244 -# Seed: Alternative Great Cobol -8267;46;5830;5850;1866;1885;9;1;3050;305 -# Seed: Alternative Red Codran -8268;49;5831;5851;1867;4043;9;1;3050;305 -# Seed: Alternative Sea Codran -8269;50;5832;5852;1868;1884;9;1;2440;244 -# Seed: Alternative Chilly Codran -8270;52;5833;5853;1869;4041;9;1;3050;305 -# Seed: Alternative Blue Codran -8271;55;5834;5854;1870;1882;9;1;2440;244 -# Seed: Alternative Twin Codran -8272;58;5835;5855;1871;4040;9;1;2440;244 -# Seed: Sea Coba -8521;79;6545;6559;4044;4042;8;0;100;444 -# Seed: Alternative Sea Coba -8522;79;6552;6566;4044;4042;8;1;277;111 -# Seed: Twin Coba -8523;82;6546;6560;1885;1893;8;0;90;400 -# Seed: Alternative Twin Coba -8524;82;6553;6567;1885;1893;8;1;250;100 -# Seed: Great Coba -8525;85;6547;6561;5549;5550;8;0;75;363 -# Seed: Alternative Great Coba -8526;85;6554;6568;5549;5550;8;1;208;90 diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/xsd/Seeds.xsd b/L2J_Mobius_C6_Interlude/dist/game/data/xsd/Seeds.xsd new file mode 100644 index 0000000000..df4a463b87 --- /dev/null +++ b/L2J_Mobius_C6_Interlude/dist/game/data/xsd/Seeds.xsd @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/GameServer.java index 2aca190942..92a960dc6a 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/GameServer.java @@ -70,6 +70,7 @@ import org.l2jmobius.gameserver.datatables.xml.FenceData; import org.l2jmobius.gameserver.datatables.xml.FishData; import org.l2jmobius.gameserver.datatables.xml.HennaData; import org.l2jmobius.gameserver.datatables.xml.RecipeData; +import org.l2jmobius.gameserver.datatables.xml.SeedData; import org.l2jmobius.gameserver.datatables.xml.StaticObjectData; import org.l2jmobius.gameserver.datatables.xml.SummonItemData; import org.l2jmobius.gameserver.datatables.xml.ZoneData; @@ -109,7 +110,6 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.instancemanager.RaidBossPointsManager; import org.l2jmobius.gameserver.instancemanager.RaidBossSpawnManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; -import org.l2jmobius.gameserver.model.Manor; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.entity.Announcements; import org.l2jmobius.gameserver.model.entity.Hero; @@ -339,7 +339,7 @@ public class GameServer } Util.printSection("Manor"); - Manor.getInstance(); + SeedData.getInstance(); CastleManorManager.getInstance(); Util.printSection("Castles"); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/xml/SeedData.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/xml/SeedData.java new file mode 100644 index 0000000000..b0835b5753 --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/xml/SeedData.java @@ -0,0 +1,321 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.datatables.xml; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.logging.Logger; + +import org.w3c.dom.Document; +import org.w3c.dom.NamedNodeMap; +import org.w3c.dom.Node; + +import org.l2jmobius.commons.util.IXmlReader; +import org.l2jmobius.gameserver.datatables.ItemTable; +import org.l2jmobius.gameserver.model.StatSet; +import org.l2jmobius.gameserver.model.holders.SeedDataHolder; +import org.l2jmobius.gameserver.model.items.Item; + +/** + * This class loads and stores manor seed information. + * @author l3x, Mobius + */ +public class SeedData implements IXmlReader +{ + private static final Logger LOGGER = Logger.getLogger(SeedData.class.getName()); + + private static Map _seeds = new ConcurrentHashMap<>(); + + protected SeedData() + { + load(); + } + + @Override + public void load() + { + _seeds.clear(); + parseDatapackFile("data/Seeds.xml"); + LOGGER.info(getClass().getSimpleName() + ": Loaded " + _seeds.size() + " seeds."); + } + + @Override + public void parseDocument(Document doc, File f) + { + // StatSet used to feed informations. Cleaned on every entry. + final StatSet set = new StatSet(); + + // First element is never read. + final Node n = doc.getFirstChild(); + + for (Node node = n.getFirstChild(); node != null; node = node.getNextSibling()) + { + if ("seed".equalsIgnoreCase(node.getNodeName())) + { + final NamedNodeMap attrs = node.getAttributes(); + for (int i = 0; i < attrs.getLength(); i++) + { + final Node att = attrs.item(i); + set.set(att.getNodeName(), att.getNodeValue()); + } + + final int id = set.getInt("id"); + _seeds.put(id, new SeedDataHolder(id, set.getInt("level"), set.getInt("cropId"), set.getInt("matureId"), set.getInt("reward1"), set.getInt("reward2"), set.getInt("castleId"), set.getBoolean("isAlternative"), set.getInt("seedsLimit"), set.getInt("cropsLimit"))); + } + } + } + + public List getAllCrops() + { + final List crops = new ArrayList<>(); + for (SeedDataHolder seed : _seeds.values()) + { + if (!crops.contains(seed.getCrop()) && (seed.getCrop() != 0)) + { + crops.add(seed.getCrop()); + } + } + return crops; + } + + public int getSeedBasicPrice(int seedId) + { + final Item seedItem = ItemTable.getInstance().getTemplate(seedId); + if (seedItem != null) + { + return seedItem.getReferencePrice(); + } + return 0; + } + + public int getSeedBasicPriceByCrop(int cropId) + { + for (SeedDataHolder seed : _seeds.values()) + { + if (seed.getCrop() == cropId) + { + return getSeedBasicPrice(seed.getId()); + } + } + return 0; + } + + public int getCropBasicPrice(int cropId) + { + final Item cropItem = ItemTable.getInstance().getTemplate(cropId); + if (cropItem != null) + { + return cropItem.getReferencePrice(); + } + return 0; + } + + public int getMatureCrop(int cropId) + { + for (SeedDataHolder seed : _seeds.values()) + { + if (seed.getCrop() == cropId) + { + return seed.getMature(); + } + } + return 0; + } + + /** + * Returns price which lord pays to buy one seed + * @param seedId + * @return seed price + */ + public int getSeedBuyPrice(int seedId) + { + final int buyPrice = getSeedBasicPrice(seedId) / 10; + return buyPrice > 0 ? buyPrice : 1; + } + + public int getSeedMinLevel(int seedId) + { + final SeedDataHolder seed = _seeds.get(seedId); + if (seed != null) + { + return seed.getLevel() - 5; + } + return -1; + } + + public int getSeedMaxLevel(int seedId) + { + final SeedDataHolder seed = _seeds.get(seedId); + if (seed != null) + { + return seed.getLevel() + 5; + } + return -1; + } + + public int getSeedLevelByCrop(int cropId) + { + for (SeedDataHolder seed : _seeds.values()) + { + if (seed.getCrop() == cropId) + { + return seed.getLevel(); + } + } + return 0; + } + + public int getSeedLevel(int seedId) + { + final SeedDataHolder seed = _seeds.get(seedId); + if (seed != null) + { + return seed.getLevel(); + } + return -1; + } + + public boolean isAlternative(int seedId) + { + for (SeedDataHolder seed : _seeds.values()) + { + if (seed.getId() == seedId) + { + return seed.isAlternative(); + } + } + return false; + } + + public int getCropType(int seedId) + { + final SeedDataHolder seed = _seeds.get(seedId); + if (seed != null) + { + return seed.getCrop(); + } + return -1; + } + + public synchronized int getRewardItem(int cropId, int type) + { + for (SeedDataHolder seed : _seeds.values()) + { + if (seed.getCrop() == cropId) + { + return seed.getReward(type); // there can be several seeds with same crop, but reward should be the same for all + } + } + return -1; + } + + public synchronized int getRewardItemBySeed(int seedId, int type) + { + final SeedDataHolder seed = _seeds.get(seedId); + if (seed != null) + { + return seed.getReward(type); + } + return 0; + } + + /** + * Return all crops which can be purchased by given castle + * @param castleId + * @return + */ + public List getCropsForCastle(int castleId) + { + final List crops = new ArrayList<>(); + for (SeedDataHolder seed : _seeds.values()) + { + if ((seed.getManorId() == castleId) && !crops.contains(seed.getCrop())) + { + crops.add(seed.getCrop()); + } + } + return crops; + } + + /** + * Return list of seed ids, which belongs to castle with given id + * @param castleId - id of the castle + * @return seedIds - list of seed ids + */ + public List getSeedsForCastle(int castleId) + { + final List seedsID = new ArrayList<>(); + for (SeedDataHolder seed : _seeds.values()) + { + if ((seed.getManorId() == castleId) && !seedsID.contains(seed.getId())) + { + seedsID.add(seed.getId()); + } + } + return seedsID; + } + + /** + * Returns castle id where seed can be showed
+ * @param seedId + * @return castleId + */ + public int getCastleIdForSeed(int seedId) + { + final SeedDataHolder seed = _seeds.get(seedId); + if (seed != null) + { + return seed.getManorId(); + } + return 0; + } + + public int getSeedSaleLimit(int seedId) + { + final SeedDataHolder seed = _seeds.get(seedId); + if (seed != null) + { + return seed.getSeedLimit(); + } + return 0; + } + + public int getCropPuchaseLimit(int cropId) + { + for (SeedDataHolder seed : _seeds.values()) + { + if (seed.getCrop() == cropId) + { + return seed.getCropLimit(); + } + } + return 0; + } + + public static SeedData getInstance() + { + return SingletonHolder.INSTANCE; + } + + private static class SingletonHolder + { + protected static final SeedData INSTANCE = new SeedData(); + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/itemhandlers/Seed.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/itemhandlers/Seed.java index 6c2aae93ff..9b8e712a52 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/itemhandlers/Seed.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/itemhandlers/Seed.java @@ -18,9 +18,9 @@ package org.l2jmobius.gameserver.handler.itemhandlers; import org.l2jmobius.gameserver.datatables.SkillTable; import org.l2jmobius.gameserver.datatables.csv.MapRegionTable; +import org.l2jmobius.gameserver.datatables.xml.SeedData; import org.l2jmobius.gameserver.handler.IItemHandler; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; -import org.l2jmobius.gameserver.model.Manor; import org.l2jmobius.gameserver.model.Skill; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Playable; @@ -363,7 +363,7 @@ public class Seed implements IItemHandler private boolean areaValid(int castleId) { - return Manor.getInstance().getCastleIdForSeed(_seedId) == castleId; + return SeedData.getInstance().getCastleIdForSeed(_seedId) == castleId; } @Override diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/Sow.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/Sow.java index 27f543a350..700c2c1788 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/Sow.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/Sow.java @@ -20,8 +20,8 @@ import java.util.logging.Logger; import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.ai.CtrlIntention; +import org.l2jmobius.gameserver.datatables.xml.SeedData; import org.l2jmobius.gameserver.handler.ISkillHandler; -import org.l2jmobius.gameserver.model.Manor; import org.l2jmobius.gameserver.model.Skill; import org.l2jmobius.gameserver.model.Skill.SkillType; import org.l2jmobius.gameserver.model.WorldObject; @@ -140,11 +140,11 @@ public class Sow implements ISkillHandler } // TODO: check all the chances - int basicSuccess = (Manor.getInstance().isAlternative(_seedId) ? 20 : 90); + int basicSuccess = (SeedData.getInstance().isAlternative(_seedId) ? 20 : 90); int minlevelSeed = 0; int maxlevelSeed = 0; - minlevelSeed = Manor.getInstance().getSeedMinLevel(_seedId); - maxlevelSeed = Manor.getInstance().getSeedMaxLevel(_seedId); + minlevelSeed = SeedData.getInstance().getSeedMinLevel(_seedId); + maxlevelSeed = SeedData.getInstance().getSeedMaxLevel(_seedId); final int levelPlayer = _player.getLevel(); // Attacker Level final int levelTarget = _target.getLevel(); // taret Level diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/CastleManorManager.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/CastleManorManager.java index 6c023e9d91..2432753c56 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/CastleManorManager.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/CastleManorManager.java @@ -29,9 +29,9 @@ import org.l2jmobius.commons.concurrent.ThreadPool; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.datatables.sql.ClanTable; +import org.l2jmobius.gameserver.datatables.xml.SeedData; import org.l2jmobius.gameserver.model.ClanWarehouse; import org.l2jmobius.gameserver.model.ItemContainer; -import org.l2jmobius.gameserver.model.Manor; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; @@ -328,7 +328,7 @@ public class CastleManorManager if (count >= 1) { - cwh.addItem("Manor", Manor.getInstance().getMatureCrop(crop.getId()), count, null, null); + cwh.addItem("Manor", SeedData.getInstance().getMatureCrop(crop.getId()), count, null, null); } } @@ -435,7 +435,7 @@ public class CastleManorManager private List getNewSeedsList(int castleId) { final List seeds = new ArrayList<>(); - final List seedsIds = Manor.getInstance().getSeedsForCastle(castleId); + final List seedsIds = SeedData.getInstance().getSeedsForCastle(castleId); for (int sd : seedsIds) { seeds.add(new SeedProduction(sd)); @@ -446,7 +446,7 @@ public class CastleManorManager private List getNewCropsList(int castleId) { final List crops = new ArrayList<>(); - final List cropsIds = Manor.getInstance().getCropsForCastle(castleId); + final List cropsIds = SeedData.getInstance().getCropsForCastle(castleId); for (int cr : cropsIds) { crops.add(new CropProcure(cr)); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Manor.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Manor.java deleted file mode 100644 index a91dff0c95..0000000000 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Manor.java +++ /dev/null @@ -1,464 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.LineNumberReader; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.StringTokenizer; -import java.util.concurrent.ConcurrentHashMap; -import java.util.logging.Logger; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.datatables.ItemTable; -import org.l2jmobius.gameserver.model.items.Item; - -/** - * Service class for manor - * @author l3x - */ -public class Manor -{ - private static final Logger LOGGER = Logger.getLogger(Manor.class.getName()); - - private static Map _seeds = new ConcurrentHashMap<>(); - - public Manor() - { - _seeds.clear(); - parseData(); - } - - public List getAllCrops() - { - final List crops = new ArrayList<>(); - for (SeedData seed : _seeds.values()) - { - if (!crops.contains(seed.getCrop()) && (seed.getCrop() != 0)) - { - crops.add(seed.getCrop()); - } - } - return crops; - } - - public int getSeedBasicPrice(int seedId) - { - final Item seedItem = ItemTable.getInstance().getTemplate(seedId); - - if (seedItem != null) - { - return seedItem.getReferencePrice(); - } - return 0; - } - - public int getSeedBasicPriceByCrop(int cropId) - { - for (SeedData seed : _seeds.values()) - { - if (seed.getCrop() == cropId) - { - return getSeedBasicPrice(seed.getId()); - } - } - return 0; - } - - public int getCropBasicPrice(int cropId) - { - final Item cropItem = ItemTable.getInstance().getTemplate(cropId); - if (cropItem != null) - { - return cropItem.getReferencePrice(); - } - return 0; - } - - public int getMatureCrop(int cropId) - { - for (SeedData seed : _seeds.values()) - { - if (seed.getCrop() == cropId) - { - return seed.getMature(); - } - } - return 0; - } - - /** - * Returns price which lord pays to buy one seed - * @param seedId - * @return seed price - */ - public int getSeedBuyPrice(int seedId) - { - final int buyPrice = getSeedBasicPrice(seedId) / 10; - return buyPrice > 0 ? buyPrice : 1; - } - - public int getSeedMinLevel(int seedId) - { - final SeedData seed = _seeds.get(seedId); - if (seed != null) - { - return seed.getLevel() - 5; - } - return -1; - } - - public int getSeedMaxLevel(int seedId) - { - final SeedData seed = _seeds.get(seedId); - if (seed != null) - { - return seed.getLevel() + 5; - } - return -1; - } - - public int getSeedLevelByCrop(int cropId) - { - for (SeedData seed : _seeds.values()) - { - if (seed.getCrop() == cropId) - { - return seed.getLevel(); - } - } - return 0; - } - - public int getSeedLevel(int seedId) - { - final SeedData seed = _seeds.get(seedId); - if (seed != null) - { - return seed.getLevel(); - } - return -1; - } - - public boolean isAlternative(int seedId) - { - for (SeedData seed : _seeds.values()) - { - if (seed.getId() == seedId) - { - return seed.isAlternative(); - } - } - return false; - } - - public int getCropType(int seedId) - { - final SeedData seed = _seeds.get(seedId); - if (seed != null) - { - return seed.getCrop(); - } - return -1; - } - - public synchronized int getRewardItem(int cropId, int type) - { - for (SeedData seed : _seeds.values()) - { - if (seed.getCrop() == cropId) - { - return seed.getReward(type); // there can be several seeds with same crop, but reward should be the same for all - } - } - return -1; - } - - public synchronized int getRewardItemBySeed(int seedId, int type) - { - final SeedData seed = _seeds.get(seedId); - if (seed != null) - { - return seed.getReward(type); - } - return 0; - } - - /** - * Return all crops which can be purchased by given castle - * @param castleId - * @return - */ - public List getCropsForCastle(int castleId) - { - final List crops = new ArrayList<>(); - for (SeedData seed : _seeds.values()) - { - if ((seed.getManorId() == castleId) && !crops.contains(seed.getCrop())) - { - crops.add(seed.getCrop()); - } - } - return crops; - } - - /** - * Return list of seed ids, which belongs to castle with given id - * @param castleId - id of the castle - * @return seedIds - list of seed ids - */ - public List getSeedsForCastle(int castleId) - { - final List seedsID = new ArrayList<>(); - for (SeedData seed : _seeds.values()) - { - if ((seed.getManorId() == castleId) && !seedsID.contains(seed.getId())) - { - seedsID.add(seed.getId()); - } - } - return seedsID; - } - - /** - * Returns castle id where seed can be sowned
- * @param seedId - * @return castleId - */ - public int getCastleIdForSeed(int seedId) - { - final SeedData seed = _seeds.get(seedId); - if (seed != null) - { - return seed.getManorId(); - } - return 0; - } - - public int getSeedSaleLimit(int seedId) - { - final SeedData seed = _seeds.get(seedId); - if (seed != null) - { - return seed.getSeedLimit(); - } - return 0; - } - - public int getCropPuchaseLimit(int cropId) - { - for (SeedData seed : _seeds.values()) - { - if (seed.getCrop() == cropId) - { - return seed.getCropLimit(); - } - } - return 0; - } - - private class SeedData - { - private int _id; - private final int _level; // seed level - private final int _crop; // crop type - private final int _mature; // mature crop type - private int _type1; - private int _type2; - private int _manorId; // id of manor (castle id) where seed can be farmed - private int _isAlternative; - private int _limitSeeds; - private int _limitCrops; - - public SeedData(int level, int crop, int mature) - { - _level = level; - _crop = crop; - _mature = mature; - } - - public void setData(int id, int t1, int t2, int manorId, int isAlt, int lim1, int lim2) - { - _id = id; - _type1 = t1; - _type2 = t2; - _manorId = manorId; - _isAlternative = isAlt; - _limitSeeds = lim1; - _limitCrops = lim2; - } - - public int getManorId() - { - return _manorId; - } - - public int getId() - { - return _id; - } - - public int getCrop() - { - return _crop; - } - - public int getMature() - { - return _mature; - } - - public int getReward(int type) - { - return type == 1 ? _type1 : _type2; - } - - public int getLevel() - { - return _level; - } - - public boolean isAlternative() - { - return _isAlternative == 1; - } - - public int getSeedLimit() - { - return _limitSeeds * Config.RATE_DROP_MANOR; - } - - public int getCropLimit() - { - return _limitCrops * Config.RATE_DROP_MANOR; - } - } - - private void parseData() - { - FileReader reader = null; - BufferedReader buff = null; - LineNumberReader lnr = null; - - try - { - final File seedData = new File(Config.DATAPACK_ROOT, "data/csv/seeds.csv"); - - reader = new FileReader(seedData); - buff = new BufferedReader(reader); - lnr = new LineNumberReader(buff); - - String line = null; - - while ((line = lnr.readLine()) != null) - { - if ((line.trim().length() == 0) || line.startsWith("#")) - { - continue; - } - - final SeedData seed = parseList(line); - _seeds.put(seed.getId(), seed); - } - - LOGGER.info("ManorManager: Loaded " + _seeds.size() + " seeds"); - } - catch (FileNotFoundException e) - { - LOGGER.info("seeds.csv is missing in data csv folder"); - } - catch (Exception e) - { - LOGGER.info("error while loading seeds: " + e.getMessage()); - } - finally - { - if (lnr != null) - { - try - { - lnr.close(); - } - catch (Exception e1) - { - LOGGER.warning("Problem with Manor: " + e1); - } - } - - if (buff != null) - { - try - { - buff.close(); - } - catch (Exception e1) - { - LOGGER.warning("Problem with Manor: " + e1); - } - } - - if (reader != null) - { - try - { - reader.close(); - } - catch (Exception e1) - { - LOGGER.warning("Problem with Manor: " + e1); - } - } - - } - } - - private SeedData parseList(String line) - { - final StringTokenizer st = new StringTokenizer(line, ";"); - - final int seedId = Integer.parseInt(st.nextToken()); // seed id - final int level = Integer.parseInt(st.nextToken()); // seed level - final int cropId = Integer.parseInt(st.nextToken()); // crop id - final int matureId = Integer.parseInt(st.nextToken()); // mature crop id - final int type1R = Integer.parseInt(st.nextToken()); // type I reward - final int type2R = Integer.parseInt(st.nextToken()); // type II reward - final int manorId = Integer.parseInt(st.nextToken()); // id of manor, where seed can be farmed - final int isAlt = Integer.parseInt(st.nextToken()); // alternative seed - final int limitSeeds = Integer.parseInt(st.nextToken()); // limit for seeds - final int limitCrops = Integer.parseInt(st.nextToken()); // limit for crops - - final SeedData seed = new SeedData(level, cropId, matureId); - seed.setData(seedId, type1R, type2R, manorId, isAlt, limitSeeds, limitCrops); - - return seed; - } - - public static Manor getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final Manor INSTANCE = new Manor(); - } -} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Attackable.java index 8156d93c07..7c11e26472 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -32,11 +32,11 @@ import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.FortSiegeGuardAI; import org.l2jmobius.gameserver.ai.SiegeGuardAI; import org.l2jmobius.gameserver.datatables.ItemTable; +import org.l2jmobius.gameserver.datatables.xml.SeedData; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.model.CommandChannel; import org.l2jmobius.gameserver.model.DropCategory; import org.l2jmobius.gameserver.model.DropData; -import org.l2jmobius.gameserver.model.Manor; import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.actor.instance.DoorInstance; import org.l2jmobius.gameserver.model.actor.instance.FolkInstance; @@ -3157,7 +3157,7 @@ public class Attackable extends NpcInstance } - final int diff = getLevel() - (Manor.getInstance().getSeedLevel(_seedType) - 5); + final int diff = getLevel() - (SeedData.getInstance().getSeedLevel(_seedType) - 5); // hi-lvl mobs bonus if (diff > 0) @@ -3167,7 +3167,7 @@ public class Attackable extends NpcInstance final List harvested = new ArrayList<>(); - harvested.add(new RewardItem(Manor.getInstance().getCropType(_seedType), count * Config.RATE_DROP_MANOR)); + harvested.add(new RewardItem(SeedData.getInstance().getCropType(_seedType), count * Config.RATE_DROP_MANOR)); _harvestItems = harvested.toArray(new RewardItem[harvested.size()]); } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/entity/siege/Castle.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/entity/siege/Castle.java index 4efa999867..12e416f04f 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/entity/siege/Castle.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/entity/siege/Castle.java @@ -31,12 +31,12 @@ import org.l2jmobius.commons.concurrent.ThreadPool; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.gameserver.datatables.sql.ClanTable; import org.l2jmobius.gameserver.datatables.xml.DoorData; +import org.l2jmobius.gameserver.datatables.xml.SeedData; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager.CropProcure; import org.l2jmobius.gameserver.instancemanager.CastleManorManager.SeedProduction; import org.l2jmobius.gameserver.instancemanager.CrownManager; -import org.l2jmobius.gameserver.model.Manor; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.DoorInstance; @@ -870,7 +870,7 @@ public class Castle { for (SeedProduction seed : production) { - total += Manor.getInstance().getSeedBuyPrice(seed.getId()) * seed.getStartProduce(); + total += SeedData.getInstance().getSeedBuyPrice(seed.getId()) * seed.getStartProduce(); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/holders/SeedDataHolder.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/holders/SeedDataHolder.java new file mode 100644 index 0000000000..e831b008fc --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/holders/SeedDataHolder.java @@ -0,0 +1,95 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.model.holders; + +import org.l2jmobius.Config; + +/** + * @author Mobius + */ +public class SeedDataHolder +{ + private final int _id; + private final int _level; // seed level + private final int _crop; // crop type + private final int _mature; // mature crop type + private final int _type1; + private final int _type2; + private final int _manorId; // id of manor (castle id) where seed can be farmed + private final boolean _isAlternative; + private final int _limitSeeds; + private final int _limitCrops; + + public SeedDataHolder(int id, int level, int crop, int mature, int type1, int type2, int manorId, boolean isAlternative, int limitSeeds, int limitCrops) + { + _id = id; + _level = level; + _crop = crop; + _mature = mature; + _type1 = type1; + _type2 = type2; + _manorId = manorId; + _isAlternative = isAlternative; + _limitSeeds = limitSeeds; + _limitCrops = limitCrops; + } + + public int getManorId() + { + return _manorId; + } + + public int getId() + { + return _id; + } + + public int getCrop() + { + return _crop; + } + + public int getMature() + { + return _mature; + } + + public int getReward(int type) + { + return type == 1 ? _type1 : _type2; + } + + public int getLevel() + { + return _level; + } + + public boolean isAlternative() + { + return _isAlternative; + } + + public int getSeedLimit() + { + return _limitSeeds * Config.RATE_DROP_MANOR; + } + + public int getCropLimit() + { + return _limitCrops * Config.RATE_DROP_MANOR; + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBuyProcure.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBuyProcure.java index 05264ed575..f9829b5b54 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBuyProcure.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBuyProcure.java @@ -21,9 +21,9 @@ import java.util.List; import org.l2jmobius.Config; import org.l2jmobius.gameserver.datatables.ItemTable; +import org.l2jmobius.gameserver.datatables.xml.SeedData; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager.CropProcure; -import org.l2jmobius.gameserver.model.Manor; import org.l2jmobius.gameserver.model.actor.instance.ManorManagerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Item; @@ -132,7 +132,7 @@ public class RequestBuyProcure extends GameClientPacket return; } - final Item template = ItemTable.getInstance().getTemplate(Manor.getInstance().getRewardItem(itemId, manor.getCastle().getCrop(itemId, CastleManorManager.PERIOD_CURRENT).getReward())); + final Item template = ItemTable.getInstance().getTemplate(SeedData.getInstance().getRewardItem(itemId, manor.getCastle().getCrop(itemId, CastleManorManager.PERIOD_CURRENT).getReward())); weight += count * template.getWeight(); if (!template.isStackable()) @@ -171,7 +171,7 @@ public class RequestBuyProcure extends GameClientPacket count = 0; } - final int rewradItemId = Manor.getInstance().getRewardItem(itemId, manor.getCastle().getCrop(itemId, CastleManorManager.PERIOD_CURRENT).getReward()); + final int rewradItemId = SeedData.getInstance().getRewardItem(itemId, manor.getCastle().getCrop(itemId, CastleManorManager.PERIOD_CURRENT).getReward()); int rewradItemCount = 1; // Manor.getInstance().getRewardAmount(itemId, manor.getCastle().getCropReward(itemId)); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestProcureCropList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestProcureCropList.java index f1338e7a21..ad4ac6ac2f 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestProcureCropList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestProcureCropList.java @@ -18,10 +18,10 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; import org.l2jmobius.gameserver.datatables.ItemTable; +import org.l2jmobius.gameserver.datatables.xml.SeedData; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager.CropProcure; -import org.l2jmobius.gameserver.model.Manor; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.ManorManagerInstance; import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; @@ -136,7 +136,7 @@ public class RequestProcureCropList extends GameClientPacket try { final CropProcure crop = CastleManager.getInstance().getCastleById(manorId).getCrop(itemId, CastleManorManager.PERIOD_CURRENT); - final int rewardItemId = Manor.getInstance().getRewardItem(itemId, crop.getReward()); + final int rewardItemId = SeedData.getInstance().getRewardItem(itemId, crop.getReward()); final Item template = ItemTable.getInstance().getTemplate(rewardItemId); weight += count * template.getWeight(); @@ -203,14 +203,14 @@ public class RequestProcureCropList extends GameClientPacket int fee = 0; // fee for selling to other manors - final int rewardItem = Manor.getInstance().getRewardItem(cropId, crop.getReward()); + final int rewardItem = SeedData.getInstance().getRewardItem(cropId, crop.getReward()); if (count > crop.getAmount()) { continue; } - final int sellPrice = count * Manor.getInstance().getCropBasicPrice(cropId); + final int sellPrice = count * SeedData.getInstance().getCropBasicPrice(cropId); final int rewardPrice = ItemTable.getInstance().getTemplate(rewardItem).getReferencePrice(); if (rewardPrice == 0) diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowCropInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowCropInfo.java index ac3f108ff9..a600677638 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowCropInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowCropInfo.java @@ -19,8 +19,8 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.gameserver.datatables.xml.SeedData; import org.l2jmobius.gameserver.instancemanager.CastleManorManager.CropProcure; -import org.l2jmobius.gameserver.model.Manor; /** * Format: ch cddd[ddddcdcdcd] c - id (0xFE) h - sub id (0x1D) c d - manor id d d - size [ d - crop id d - residual buy d - start buy d - buy price c - reward type d - seed level c - reward 1 items d - reward 1 item id c - reward 2 items d - reward 2 item id ] @@ -58,11 +58,11 @@ public class ExShowCropInfo extends GameServerPacket writeD(crop.getStartAmount()); // Buy writeD(crop.getPrice()); // Buy price writeC(crop.getReward()); // Reward - writeD(Manor.getInstance().getSeedLevelByCrop(crop.getId())); // Seed Level + writeD(SeedData.getInstance().getSeedLevelByCrop(crop.getId())); // Seed Level writeC(1); // rewrad 1 Type - writeD(Manor.getInstance().getRewardItem(crop.getId(), 1)); // Rewrad 1 Type Item Id + writeD(SeedData.getInstance().getRewardItem(crop.getId(), 1)); // Rewrad 1 Type Item Id writeC(1); // rewrad 2 Type - writeD(Manor.getInstance().getRewardItem(crop.getId(), 2)); // Rewrad 2 Type Item Id + writeD(SeedData.getInstance().getRewardItem(crop.getId(), 2)); // Rewrad 2 Type Item Id } } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowCropSetting.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowCropSetting.java index c02814d773..ddcd6de9fe 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowCropSetting.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowCropSetting.java @@ -18,10 +18,10 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.List; +import org.l2jmobius.gameserver.datatables.xml.SeedData; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager.CropProcure; -import org.l2jmobius.gameserver.model.Manor; import org.l2jmobius.gameserver.model.entity.siege.Castle; /** @@ -44,20 +44,20 @@ public class ExShowCropSetting extends GameServerPacket { _manorId = manorId; final Castle c = CastleManager.getInstance().getCastleById(_manorId); - final List crops = Manor.getInstance().getCropsForCastle(_manorId); + final List crops = SeedData.getInstance().getCropsForCastle(_manorId); _count = crops.size(); _cropData = new int[_count * 14]; int i = 0; for (int cr : crops) { _cropData[(i * 14) + 0] = cr; - _cropData[(i * 14) + 1] = Manor.getInstance().getSeedLevelByCrop(cr); - _cropData[(i * 14) + 2] = Manor.getInstance().getRewardItem(cr, 1); - _cropData[(i * 14) + 3] = Manor.getInstance().getRewardItem(cr, 2); - _cropData[(i * 14) + 4] = Manor.getInstance().getCropPuchaseLimit(cr); + _cropData[(i * 14) + 1] = SeedData.getInstance().getSeedLevelByCrop(cr); + _cropData[(i * 14) + 2] = SeedData.getInstance().getRewardItem(cr, 1); + _cropData[(i * 14) + 3] = SeedData.getInstance().getRewardItem(cr, 2); + _cropData[(i * 14) + 4] = SeedData.getInstance().getCropPuchaseLimit(cr); _cropData[(i * 14) + 5] = 0; // Looks like not used - _cropData[(i * 14) + 6] = (Manor.getInstance().getCropBasicPrice(cr) * 60) / 100; - _cropData[(i * 14) + 7] = Manor.getInstance().getCropBasicPrice(cr) * 10; + _cropData[(i * 14) + 6] = (SeedData.getInstance().getCropBasicPrice(cr) * 60) / 100; + _cropData[(i * 14) + 7] = SeedData.getInstance().getCropBasicPrice(cr) * 10; CropProcure cropPr = c.getCrop(cr, CastleManorManager.PERIOD_CURRENT); if (cropPr != null) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowManorDefaultInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowManorDefaultInfo.java index acdda663db..d5d6e9d35f 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowManorDefaultInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowManorDefaultInfo.java @@ -18,7 +18,7 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.List; -import org.l2jmobius.gameserver.model.Manor; +import org.l2jmobius.gameserver.datatables.xml.SeedData; /** * format(packet 0xFE) ch cd [ddddcdcd] c - id h - sub id c d - size [ d - level d - seed price d - seed level d - crop price c d - reward 1 id c d - reward 2 id ] @@ -30,7 +30,7 @@ public class ExShowManorDefaultInfo extends GameServerPacket public ExShowManorDefaultInfo() { - _crops = Manor.getInstance().getAllCrops(); + _crops = SeedData.getInstance().getAllCrops(); } @Override @@ -43,13 +43,13 @@ public class ExShowManorDefaultInfo extends GameServerPacket for (int cropId : _crops) { writeD(cropId); // crop Id - writeD(Manor.getInstance().getSeedLevelByCrop(cropId)); // level - writeD(Manor.getInstance().getSeedBasicPriceByCrop(cropId)); // seed price - writeD(Manor.getInstance().getCropBasicPrice(cropId)); // crop price + writeD(SeedData.getInstance().getSeedLevelByCrop(cropId)); // level + writeD(SeedData.getInstance().getSeedBasicPriceByCrop(cropId)); // seed price + writeD(SeedData.getInstance().getCropBasicPrice(cropId)); // crop price writeC(1); // rewrad 1 Type - writeD(Manor.getInstance().getRewardItem(cropId, 1)); // Rewrad 1 Type Item Id + writeD(SeedData.getInstance().getRewardItem(cropId, 1)); // Rewrad 1 Type Item Id writeC(1); // rewrad 2 Type - writeD(Manor.getInstance().getRewardItem(cropId, 2)); // Rewrad 2 Type Item Id + writeD(SeedData.getInstance().getRewardItem(cropId, 2)); // Rewrad 2 Type Item Id } } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSeedInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSeedInfo.java index b013c1a149..7a15cf9dc4 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSeedInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSeedInfo.java @@ -19,8 +19,8 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.gameserver.datatables.xml.SeedData; import org.l2jmobius.gameserver.instancemanager.CastleManorManager.SeedProduction; -import org.l2jmobius.gameserver.model.Manor; /** * format(packet 0xFE) ch ddd [dddddcdcd] c - id h - sub id d - manor id d d - size [ d - seed id d - left to buy d - started amount d - sell price d - seed level c d - reward 1 id c d - reward 2 id ] @@ -56,11 +56,11 @@ public class ExShowSeedInfo extends GameServerPacket writeD(seed.getCanProduce()); // Left to buy writeD(seed.getStartProduce()); // Started amount writeD(seed.getPrice()); // Sell Price - writeD(Manor.getInstance().getSeedLevel(seed.getId())); // Seed Level + writeD(SeedData.getInstance().getSeedLevel(seed.getId())); // Seed Level writeC(1); // reward 1 Type - writeD(Manor.getInstance().getRewardItemBySeed(seed.getId(), 1)); // Reward 1 Type Item Id + writeD(SeedData.getInstance().getRewardItemBySeed(seed.getId(), 1)); // Reward 1 Type Item Id writeC(1); // reward 2 Type - writeD(Manor.getInstance().getRewardItemBySeed(seed.getId(), 2)); // Reward 2 Type Item Id + writeD(SeedData.getInstance().getRewardItemBySeed(seed.getId(), 2)); // Reward 2 Type Item Id } } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSeedSetting.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSeedSetting.java index d46e534249..f4ef39802f 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSeedSetting.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSeedSetting.java @@ -18,10 +18,10 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.List; +import org.l2jmobius.gameserver.datatables.xml.SeedData; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager.SeedProduction; -import org.l2jmobius.gameserver.model.Manor; import org.l2jmobius.gameserver.model.entity.siege.Castle; /** @@ -43,20 +43,20 @@ public class ExShowSeedSetting extends GameServerPacket { _manorId = manorId; final Castle c = CastleManager.getInstance().getCastleById(_manorId); - final List seeds = Manor.getInstance().getSeedsForCastle(_manorId); + final List seeds = SeedData.getInstance().getSeedsForCastle(_manorId); _count = seeds.size(); _seedData = new int[_count * 12]; int i = 0; for (int s : seeds) { _seedData[(i * 12) + 0] = s; - _seedData[(i * 12) + 1] = Manor.getInstance().getSeedLevel(s); - _seedData[(i * 12) + 2] = Manor.getInstance().getRewardItemBySeed(s, 1); - _seedData[(i * 12) + 3] = Manor.getInstance().getRewardItemBySeed(s, 2); - _seedData[(i * 12) + 4] = Manor.getInstance().getSeedSaleLimit(s); - _seedData[(i * 12) + 5] = Manor.getInstance().getSeedBuyPrice(s); - _seedData[(i * 12) + 6] = (Manor.getInstance().getSeedBasicPrice(s) * 60) / 100; - _seedData[(i * 12) + 7] = Manor.getInstance().getSeedBasicPrice(s) * 10; + _seedData[(i * 12) + 1] = SeedData.getInstance().getSeedLevel(s); + _seedData[(i * 12) + 2] = SeedData.getInstance().getRewardItemBySeed(s, 1); + _seedData[(i * 12) + 3] = SeedData.getInstance().getRewardItemBySeed(s, 2); + _seedData[(i * 12) + 4] = SeedData.getInstance().getSeedSaleLimit(s); + _seedData[(i * 12) + 5] = SeedData.getInstance().getSeedBuyPrice(s); + _seedData[(i * 12) + 6] = (SeedData.getInstance().getSeedBasicPrice(s) * 60) / 100; + _seedData[(i * 12) + 7] = SeedData.getInstance().getSeedBasicPrice(s) * 10; SeedProduction seedPr = c.getSeed(s, CastleManorManager.PERIOD_CURRENT); if (seedPr != null) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSellCropList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSellCropList.java index ffd17a660f..2b693d1dcb 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSellCropList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSellCropList.java @@ -20,8 +20,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.l2jmobius.gameserver.datatables.xml.SeedData; import org.l2jmobius.gameserver.instancemanager.CastleManorManager.CropProcure; -import org.l2jmobius.gameserver.model.Manor; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; @@ -42,7 +42,7 @@ public class ExShowSellCropList extends GameServerPacket _castleCrops = new HashMap<>(); _cropsItems = new HashMap<>(); - final List allCrops = Manor.getInstance().getAllCrops(); + final List allCrops = SeedData.getInstance().getAllCrops(); for (int cropId : allCrops) { final ItemInstance item = player.getInventory().getItemByItemId(cropId); @@ -80,11 +80,11 @@ public class ExShowSellCropList extends GameServerPacket { writeD(item.getObjectId()); // Object id writeD(item.getItemId()); // crop id - writeD(Manor.getInstance().getSeedLevelByCrop(item.getItemId())); // seed level + writeD(SeedData.getInstance().getSeedLevelByCrop(item.getItemId())); // seed level writeC(1); - writeD(Manor.getInstance().getRewardItem(item.getItemId(), 1)); // reward 1 id + writeD(SeedData.getInstance().getRewardItem(item.getItemId(), 1)); // reward 1 id writeC(1); - writeD(Manor.getInstance().getRewardItem(item.getItemId(), 2)); // reward 2 id + writeD(SeedData.getInstance().getRewardItem(item.getItemId(), 2)); // reward 2 id if (_castleCrops.containsKey(item.getItemId())) {