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()))
{