diff --git a/Config/LaborConfigCategory.bytes b/Config/LaborConfigCategory.bytes
new file mode 100644
index 0000000..1b61458
--- /dev/null
+++ b/Config/LaborConfigCategory.bytes
@@ -0,0 +1,110 @@
+
+P 
+	– 
+	Ò 
+	˜ 
+	Ô 
+	� 
+	Â 	
+	ô 
+
+			° 
+	
+
+Ø 
+	Š 
+	¼ 
+	

ä 
+	Œ 
+	´ 
+	Ü 
+	„ 
+	¬ 
+	Ê 
+	è 
+	� 
+	® 
+	Ì 
+	ê 
+	ˆ	 
+	¦	 
+	º	 
+	Ø	 
+	ö	 
+	Š
+  
+	ž
+ !
+	  ¼
+ "
+	!!Ð
+ #
+	""ä
+ $
+	##ø
+ %
+	$$– &
+	%%ª '
+	&&¾ (
+	''Ò )
+	((Ü *
+	))ð +
+	**„ ,
+	++˜ -
+	,,¬ .
+	--¶ /
+	..Ê 0
+	//Þ 1
+	00è 2
+	11ü 3
+	22†
 4
+	33š
 5
+	44¤
 6
+	55®
 7
+	66Â
 8
+	77Ì
 9
+	88Ö
 :
+	99ê
 ;
+	::ô
 <
+	;;þ
 =
+	<<ˆ >
+	==œ ?
+	>>¦ @
+	??° A
+	@@º B
+	AAÄ C
+	BBÎ D
+	CCØ E
+	DDâ F
+	EEì G
+	FFö H
+	GG€ I
+	HHŠ J
+	II” K
+	JJž L
+	KK¨ M
+	LL² N
+	MM¼ O
+	NNÆ P
+	OOÐ Q
+	PPÐ R
+	QQÚ S
+	RRä T
+	SSî U
+	TTø V
+	UUø W
+	VV‚ X
+	WWŒ Y
+	XX– Z
+	YY– [
+	ZZ  \
+	[[ª ]
+	\\´ ^
+	]]´ _
+	^^¾ `
+	__È a
+	``È b
+	aaÒ c
+	bbÜ d
+	ccÜ e
+	ddæ f
\ No newline at end of file
diff --git a/Config/LifeExpConfigCategory.bytes b/Config/LifeExpConfigCategory.bytes
new file mode 100644
index 0000000..420cf81
--- /dev/null
+++ b/Config/LifeExpConfigCategory.bytes
@@ -0,0 +1,125 @@
+
+d
+È
+¬
+�
+ô
+Ø
+¼
+ 
+		„
+
+
+è
+Ì
+°	
+

”
+
+ø
+
+Ü
+À
+¤
+ˆ
+ì
+Ð
+´
+˜
+ü
+à
+Ä
+¨
+Œ
+ð
+Ô
+¸
+œ
+  €
+!!ä
+""È
+##¬
+$$�
+%%ô
+&&Ø
+''¼
+(( 
+))„ 
+**è 
+++Ì!
+,,°"
+--”#
+..ø#
+//Ü$
+00À%
+11¤&
+22ˆ'
+33ì'
+44Ð(
+55´)
+66˜*
+77ü*
+88à+
+99Ä,
+::¨-
+;;Œ.
+<<ð.
+==Ô/
+>>¸0
+??œ1
+@@€2
+AAä2
+BBÈ3
+CC¬4
+DD�5
+EEô5
+FFØ6
+GG¼7
+HH 8
+II„9
+JJè9
+KKÌ:
+LL°;
+MM”<
+NNø<
+OOÜ=
+PPÀ>
+QQ¤?
+RRˆ@
+SSì@
+TTÐA
+UU´B
+VV˜C
+WWüC
+XXàD
+YYÄE
+ZZ¨F
+[[ŒG
+\\ðG
+]]ÔH
+^^¸I
+__œJ
+``€K
+aaäK
+bbÈL
+cc¬M
+dd�N
+eeôN
+ffØO
+gg¼P
+hh Q
+ii„R
+jjèR
+kkÌS
+ll°T
+mm”U
+nnøU
+ooÜV
+ppÀW
+qq¤X
+rrˆY
+ssìY
+ttÐZ
+uu´[
+vv˜\
+wwü\
+xxà]
\ No newline at end of file
diff --git a/Config/PhysiqueConfigCategory.bytes b/Config/PhysiqueConfigCategory.bytes
new file mode 100644
index 0000000..d0a24b6
--- /dev/null
+++ b/Config/PhysiqueConfigCategory.bytes
@@ -0,0 +1,19 @@
+
+< (028@.H0P
+à (028@4H.P	
+Ô (028
@:H,P
+€ (30<8@@H*P
+Ì: (30<8@FH(P
+ e (30<8@LH&P
+ä  (=0K8@RH$P
+€ð (=0K8@XH"P
+		ÜÕ (=0K8@^H P
+
+
+àÔ (L0Y8@dHP
+ôï (L0Y8@jHP
+€ª (L0Y8@pHP
+

ì… (Z0x8@vHP
+ †
+ (Z0x8@|HP!
+„® (Z0x8@‚HP#
\ No newline at end of file
diff --git a/Config/SeasonConfigCategory.bytes b/Config/SeasonConfigCategory.bytes
index cf65c18..5c1f100 100644
Binary files a/Config/SeasonConfigCategory.bytes and b/Config/SeasonConfigCategory.bytes differ
diff --git a/Config/StartSceneConfigCategory.bytes b/Config/StartSceneConfigCategory.bytes
index 039b5e4..ab81ae0 100644
--- a/Config/StartSceneConfigCategory.bytes
+++ b/Config/StartSceneConfigCategory.bytes
@@ -3,8 +3,8 @@
 "Gate*Gate10“N
 "Gate*Gate20”N
 "Location*Location
-"Map*Game_1
-"Map*Game_2
+"Map*Game_1
+"Map*Game_2
 "Account*Account0•N
  "LoginCenter*LoginCenter
 	"	UnitCache*	UnitCache
diff --git a/Config/WeatherConfigCategory.bytes b/Config/WeatherConfigCategory.bytes
new file mode 100644
index 0000000..a925540
Binary files /dev/null and b/Config/WeatherConfigCategory.bytes differ
diff --git a/Excel/Json/c/AaPhysiqueConfig.txt b/Excel/Json/c/AaPhysiqueConfig.txt
new file mode 100644
index 0000000..c4f2a85
--- /dev/null
+++ b/Excel/Json/c/AaPhysiqueConfig.txt
@@ -0,0 +1,17 @@
+{"list":[
+{"_t":"AaPhysiqueConfig","_id":1,"Lv":1,"Exp":60,"Section":1,"LifeMin":30,"LifeMax":50,"LaborExpCoefficient":11,"DiseaseRecovery":46,"DiseaseWorsen":48,"DiseaseRelief":7,"LaborExpCoefficient":1.1,"DiseaseWorsen":4.8},
+{"_t":"AaPhysiqueConfig","_id":2,"Lv":2,"Exp":480,"Section":1,"LifeMin":30,"LifeMax":50,"LaborExpCoefficient":12,"DiseaseRecovery":52,"DiseaseWorsen":46,"DiseaseRelief":9,"LaborExpCoefficient":1.2,"DiseaseWorsen":4.6},
+{"_t":"AaPhysiqueConfig","_id":3,"Lv":3,"Exp":1620,"Section":1,"LifeMin":30,"LifeMax":50,"LaborExpCoefficient":13,"DiseaseRecovery":58,"DiseaseWorsen":44,"DiseaseRelief":11,"LaborExpCoefficient":1.3,"DiseaseWorsen":4.4},
+{"_t":"AaPhysiqueConfig","_id":4,"Lv":4,"Exp":3840,"Section":2,"LifeMin":51,"LifeMax":60,"LaborExpCoefficient":14,"DiseaseRecovery":64,"DiseaseWorsen":42,"DiseaseRelief":13,"LaborExpCoefficient":1.4,"DiseaseWorsen":4.2},
+{"_t":"AaPhysiqueConfig","_id":5,"Lv":5,"Exp":7500,"Section":2,"LifeMin":51,"LifeMax":60,"LaborExpCoefficient":15,"DiseaseRecovery":70,"DiseaseWorsen":40,"DiseaseRelief":15,"LaborExpCoefficient":1.5,"DiseaseWorsen":4},
+{"_t":"AaPhysiqueConfig","_id":6,"Lv":6,"Exp":12960,"Section":2,"LifeMin":51,"LifeMax":60,"LaborExpCoefficient":16,"DiseaseRecovery":76,"DiseaseWorsen":38,"DiseaseRelief":17,"LaborExpCoefficient":1.6,"DiseaseWorsen":3.8},
+{"_t":"AaPhysiqueConfig","_id":7,"Lv":7,"Exp":20580,"Section":3,"LifeMin":61,"LifeMax":75,"LaborExpCoefficient":17,"DiseaseRecovery":82,"DiseaseWorsen":36,"DiseaseRelief":19,"LaborExpCoefficient":1.7,"DiseaseWorsen":3.6},
+{"_t":"AaPhysiqueConfig","_id":8,"Lv":8,"Exp":30720,"Section":3,"LifeMin":61,"LifeMax":75,"LaborExpCoefficient":18,"DiseaseRecovery":88,"DiseaseWorsen":34,"DiseaseRelief":21,"LaborExpCoefficient":1.8,"DiseaseWorsen":3.4},
+{"_t":"AaPhysiqueConfig","_id":9,"Lv":9,"Exp":43740,"Section":3,"LifeMin":61,"LifeMax":75,"LaborExpCoefficient":19,"DiseaseRecovery":94,"DiseaseWorsen":32,"DiseaseRelief":23,"LaborExpCoefficient":1.9,"DiseaseWorsen":3.2},
+{"_t":"AaPhysiqueConfig","_id":10,"Lv":10,"Exp":60000,"Section":4,"LifeMin":76,"LifeMax":89,"LaborExpCoefficient":20,"DiseaseRecovery":100,"DiseaseWorsen":30,"DiseaseRelief":25,"LaborExpCoefficient":2,"DiseaseWorsen":3},
+{"_t":"AaPhysiqueConfig","_id":11,"Lv":11,"Exp":79860,"Section":4,"LifeMin":76,"LifeMax":89,"LaborExpCoefficient":21,"DiseaseRecovery":106,"DiseaseWorsen":28,"DiseaseRelief":27,"LaborExpCoefficient":2.1,"DiseaseWorsen":2.8},
+{"_t":"AaPhysiqueConfig","_id":12,"Lv":12,"Exp":103680,"Section":4,"LifeMin":76,"LifeMax":89,"LaborExpCoefficient":22,"DiseaseRecovery":112,"DiseaseWorsen":26,"DiseaseRelief":29,"LaborExpCoefficient":2.2,"DiseaseWorsen":2.6},
+{"_t":"AaPhysiqueConfig","_id":13,"Lv":13,"Exp":131820,"Section":5,"LifeMin":90,"LifeMax":120,"LaborExpCoefficient":23,"DiseaseRecovery":118,"DiseaseWorsen":24,"DiseaseRelief":31,"LaborExpCoefficient":2.3,"DiseaseWorsen":2.4},
+{"_t":"AaPhysiqueConfig","_id":14,"Lv":14,"Exp":164640,"Section":5,"LifeMin":90,"LifeMax":120,"LaborExpCoefficient":24,"DiseaseRecovery":124,"DiseaseWorsen":22,"DiseaseRelief":33,"LaborExpCoefficient":2.4,"DiseaseWorsen":2.2},
+{"_t":"AaPhysiqueConfig","_id":15,"Lv":15,"Exp":202500,"Section":5,"LifeMin":90,"LifeMax":120,"LaborExpCoefficient":25,"DiseaseRecovery":130,"DiseaseWorsen":20,"DiseaseRelief":35,"LaborExpCoefficient":2.5,"DiseaseWorsen":2},
+]}
diff --git a/Excel/Json/c/LaborConfig.txt b/Excel/Json/c/LaborConfig.txt
index 6e03585..18ec350 100644
--- a/Excel/Json/c/LaborConfig.txt
+++ b/Excel/Json/c/LaborConfig.txt
@@ -1,112 +1,102 @@
 {"list":[
-{"_t":"LaborConfig","_id":1,"Labor":1,"LaborExp":50,"Income":0,"CarryAmount":1},
-{"_t":"LaborConfig","_id":2,"Labor":2,"LaborExp":100,"Income":0,"CarryAmount":2},
-{"_t":"LaborConfig","_id":3,"Labor":3,"LaborExp":140,"Income":0,"CarryAmount":3},
-{"_t":"LaborConfig","_id":4,"Labor":4,"LaborExp":190,"Income":0,"CarryAmount":4},
-{"_t":"LaborConfig","_id":5,"Labor":5,"LaborExp":230,"Income":0,"CarryAmount":5},
-{"_t":"LaborConfig","_id":6,"Labor":6,"LaborExp":270,"Income":0,"CarryAmount":6},
-{"_t":"LaborConfig","_id":7,"Labor":7,"LaborExp":300,"Income":0,"CarryAmount":6},
-{"_t":"LaborConfig","_id":8,"Labor":8,"LaborExp":340,"Income":1.1,"CarryAmount":7},
-{"_t":"LaborConfig","_id":9,"Labor":9,"LaborExp":370,"Income":1.2,"CarryAmount":7},
-{"_t":"LaborConfig","_id":10,"Labor":10,"LaborExp":400,"Income":1.3,"CarryAmount":7},
-{"_t":"LaborConfig","_id":11,"Labor":11,"LaborExp":440,"Income":1.4,"CarryAmount":8},
-{"_t":"LaborConfig","_id":12,"Labor":12,"LaborExp":470,"Income":1.5,"CarryAmount":8},
-{"_t":"LaborConfig","_id":13,"Labor":13,"LaborExp":500,"Income":1.6,"CarryAmount":9},
-{"_t":"LaborConfig","_id":14,"Labor":14,"LaborExp":520,"Income":1.7,"CarryAmount":9},
-{"_t":"LaborConfig","_id":15,"Labor":15,"LaborExp":550,"Income":1.8,"CarryAmount":9},
-{"_t":"LaborConfig","_id":16,"Labor":16,"LaborExp":580,"Income":1.9,"CarryAmount":10},
-{"_t":"LaborConfig","_id":17,"Labor":17,"LaborExp":600,"Income":2,"CarryAmount":10},
-{"_t":"LaborConfig","_id":18,"Labor":18,"LaborExp":630,"Income":2.1,"CarryAmount":11},
-{"_t":"LaborConfig","_id":19,"Labor":19,"LaborExp":650,"Income":2.2,"CarryAmount":11},
-{"_t":"LaborConfig","_id":20,"Labor":20,"LaborExp":670,"Income":2.3,"CarryAmount":11},
-{"_t":"LaborConfig","_id":21,"Labor":21,"LaborExp":690,"Income":2.4,"CarryAmount":12},
-{"_t":"LaborConfig","_id":22,"Labor":22,"LaborExp":710,"Income":2.5,"CarryAmount":12},
-{"_t":"LaborConfig","_id":23,"Labor":23,"LaborExp":740,"Income":2.6,"CarryAmount":13},
-{"_t":"LaborConfig","_id":24,"Labor":24,"LaborExp":750,"Income":2.7,"CarryAmount":13},
-{"_t":"LaborConfig","_id":25,"Labor":25,"LaborExp":770,"Income":2.8,"CarryAmount":13},
-{"_t":"LaborConfig","_id":26,"Labor":26,"LaborExp":790,"Income":2.9,"CarryAmount":14},
-{"_t":"LaborConfig","_id":27,"Labor":27,"LaborExp":810,"Income":3,"CarryAmount":14},
-{"_t":"LaborConfig","_id":28,"Labor":28,"LaborExp":830,"Income":3.1,"CarryAmount":15},
-{"_t":"LaborConfig","_id":29,"Labor":29,"LaborExp":850,"Income":3.2,"CarryAmount":15},
-{"_t":"LaborConfig","_id":30,"Labor":30,"LaborExp":860,"Income":3.3,"CarryAmount":15},
-{"_t":"LaborConfig","_id":31,"Labor":31,"LaborExp":880,"Income":3.4,"CarryAmount":16},
-{"_t":"LaborConfig","_id":32,"Labor":32,"LaborExp":890,"Income":3.5,"CarryAmount":16},
-{"_t":"LaborConfig","_id":33,"Labor":33,"LaborExp":910,"Income":3.6,"CarryAmount":17},
-{"_t":"LaborConfig","_id":34,"Labor":34,"LaborExp":920,"Income":3.7,"CarryAmount":17},
-{"_t":"LaborConfig","_id":35,"Labor":35,"LaborExp":940,"Income":3.8,"CarryAmount":17},
-{"_t":"LaborConfig","_id":36,"Labor":36,"LaborExp":950,"Income":3.9,"CarryAmount":18},
-{"_t":"LaborConfig","_id":37,"Labor":37,"LaborExp":970,"Income":4,"CarryAmount":18},
-{"_t":"LaborConfig","_id":38,"Labor":38,"LaborExp":980,"Income":4.1,"CarryAmount":19},
-{"_t":"LaborConfig","_id":39,"Labor":39,"LaborExp":990,"Income":4.2,"CarryAmount":19},
-{"_t":"LaborConfig","_id":40,"Labor":40,"LaborExp":1000,"Income":4.3,"CarryAmount":19},
-{"_t":"LaborConfig","_id":41,"Labor":41,"LaborExp":1020,"Income":4.4,"CarryAmount":20},
-{"_t":"LaborConfig","_id":42,"Labor":42,"LaborExp":1030,"Income":4.5,"CarryAmount":20},
-{"_t":"LaborConfig","_id":43,"Labor":43,"LaborExp":1040,"Income":4.6,"CarryAmount":21},
-{"_t":"LaborConfig","_id":44,"Labor":44,"LaborExp":1050,"Income":4.7,"CarryAmount":21},
-{"_t":"LaborConfig","_id":45,"Labor":45,"LaborExp":1060,"Income":4.8,"CarryAmount":21},
-{"_t":"LaborConfig","_id":46,"Labor":46,"LaborExp":1070,"Income":4.9,"CarryAmount":22},
-{"_t":"LaborConfig","_id":47,"Labor":47,"LaborExp":1090,"Income":5,"CarryAmount":22},
-{"_t":"LaborConfig","_id":48,"Labor":48,"LaborExp":1100,"Income":5.1,"CarryAmount":23},
-{"_t":"LaborConfig","_id":49,"Labor":49,"LaborExp":1110,"Income":5.2,"CarryAmount":23},
-{"_t":"LaborConfig","_id":50,"Labor":50,"LaborExp":1120,"Income":5.3,"CarryAmount":23},
-{"_t":"LaborConfig","_id":51,"Labor":51,"LaborExp":1130,"Income":5.4,"CarryAmount":24},
-{"_t":"LaborConfig","_id":52,"Labor":52,"LaborExp":1140,"Income":5.5,"CarryAmount":24},
-{"_t":"LaborConfig","_id":53,"Labor":53,"LaborExp":1140,"Income":5.6,"CarryAmount":25},
-{"_t":"LaborConfig","_id":54,"Labor":54,"LaborExp":1150,"Income":5.7,"CarryAmount":25},
-{"_t":"LaborConfig","_id":55,"Labor":55,"LaborExp":1160,"Income":5.8,"CarryAmount":25},
-{"_t":"LaborConfig","_id":56,"Labor":56,"LaborExp":1170,"Income":5.9,"CarryAmount":26},
-{"_t":"LaborConfig","_id":57,"Labor":57,"LaborExp":1180,"Income":6,"CarryAmount":26},
-{"_t":"LaborConfig","_id":58,"Labor":58,"LaborExp":1190,"Income":6.1,"CarryAmount":27},
-{"_t":"LaborConfig","_id":59,"Labor":59,"LaborExp":1200,"Income":6.2,"CarryAmount":27},
-{"_t":"LaborConfig","_id":60,"Labor":60,"LaborExp":1200,"Income":6.3,"CarryAmount":27},
-{"_t":"LaborConfig","_id":61,"Labor":61,"LaborExp":1210,"Income":6.4,"CarryAmount":28},
-{"_t":"LaborConfig","_id":62,"Labor":62,"LaborExp":1220,"Income":6.5,"CarryAmount":28},
-{"_t":"LaborConfig","_id":63,"Labor":63,"LaborExp":1230,"Income":6.6,"CarryAmount":29},
-{"_t":"LaborConfig","_id":64,"Labor":64,"LaborExp":1240,"Income":6.7,"CarryAmount":29},
-{"_t":"LaborConfig","_id":65,"Labor":65,"LaborExp":1240,"Income":6.8,"CarryAmount":29},
-{"_t":"LaborConfig","_id":66,"Labor":66,"LaborExp":1250,"Income":6.9,"CarryAmount":30},
-{"_t":"LaborConfig","_id":67,"Labor":67,"LaborExp":1260,"Income":7,"CarryAmount":30},
-{"_t":"LaborConfig","_id":68,"Labor":68,"LaborExp":1260,"Income":7.1,"CarryAmount":31},
-{"_t":"LaborConfig","_id":69,"Labor":69,"LaborExp":1270,"Income":7.2,"CarryAmount":31},
-{"_t":"LaborConfig","_id":70,"Labor":70,"LaborExp":1280,"Income":7.3,"CarryAmount":31},
-{"_t":"LaborConfig","_id":71,"Labor":71,"LaborExp":1280,"Income":7.4,"CarryAmount":32},
-{"_t":"LaborConfig","_id":72,"Labor":72,"LaborExp":1290,"Income":7.5,"CarryAmount":32},
-{"_t":"LaborConfig","_id":73,"Labor":73,"LaborExp":1300,"Income":7.6,"CarryAmount":33},
-{"_t":"LaborConfig","_id":74,"Labor":74,"LaborExp":1300,"Income":7.7,"CarryAmount":33},
-{"_t":"LaborConfig","_id":75,"Labor":75,"LaborExp":1310,"Income":7.8,"CarryAmount":33},
-{"_t":"LaborConfig","_id":76,"Labor":76,"LaborExp":1320,"Income":7.9,"CarryAmount":34},
-{"_t":"LaborConfig","_id":77,"Labor":77,"LaborExp":1320,"Income":8,"CarryAmount":34},
-{"_t":"LaborConfig","_id":78,"Labor":78,"LaborExp":1330,"Income":8.1,"CarryAmount":35},
-{"_t":"LaborConfig","_id":79,"Labor":79,"LaborExp":1330,"Income":8.2,"CarryAmount":35},
-{"_t":"LaborConfig","_id":80,"Labor":80,"LaborExp":1340,"Income":8.3,"CarryAmount":35},
-{"_t":"LaborConfig","_id":81,"Labor":81,"LaborExp":1340,"Income":8.4,"CarryAmount":36},
-{"_t":"LaborConfig","_id":82,"Labor":82,"LaborExp":1350,"Income":8.5,"CarryAmount":36},
-{"_t":"LaborConfig","_id":83,"Labor":83,"LaborExp":1350,"Income":8.6,"CarryAmount":37},
-{"_t":"LaborConfig","_id":84,"Labor":84,"LaborExp":1360,"Income":8.7,"CarryAmount":37},
-{"_t":"LaborConfig","_id":85,"Labor":85,"LaborExp":1360,"Income":8.8,"CarryAmount":37},
-{"_t":"LaborConfig","_id":86,"Labor":86,"LaborExp":1370,"Income":8.9,"CarryAmount":38},
-{"_t":"LaborConfig","_id":87,"Labor":87,"LaborExp":1380,"Income":9,"CarryAmount":38},
-{"_t":"LaborConfig","_id":88,"Labor":88,"LaborExp":1380,"Income":9.1,"CarryAmount":39},
-{"_t":"LaborConfig","_id":89,"Labor":89,"LaborExp":1380,"Income":9.2,"CarryAmount":39},
-{"_t":"LaborConfig","_id":90,"Labor":90,"LaborExp":1390,"Income":9.3,"CarryAmount":39},
-{"_t":"LaborConfig","_id":91,"Labor":91,"LaborExp":1390,"Income":9.4,"CarryAmount":40},
-{"_t":"LaborConfig","_id":92,"Labor":92,"LaborExp":1400,"Income":9.5,"CarryAmount":40},
-{"_t":"LaborConfig","_id":93,"Labor":93,"LaborExp":1400,"Income":9.6,"CarryAmount":41},
-{"_t":"LaborConfig","_id":94,"Labor":94,"LaborExp":1410,"Income":9.7,"CarryAmount":41},
-{"_t":"LaborConfig","_id":95,"Labor":95,"LaborExp":1410,"Income":9.8,"CarryAmount":41},
-{"_t":"LaborConfig","_id":96,"Labor":96,"LaborExp":1420,"Income":9.9,"CarryAmount":42},
-{"_t":"LaborConfig","_id":97,"Labor":97,"LaborExp":1420,"Income":10,"CarryAmount":42},
-{"_t":"LaborConfig","_id":98,"Labor":98,"LaborExp":1430,"Income":10.1,"CarryAmount":43},
-{"_t":"LaborConfig","_id":99,"Labor":99,"LaborExp":1430,"Income":10.2,"CarryAmount":43},
-{"_t":"LaborConfig","_id":100,"Labor":100,"LaborExp":1430,"Income":10.3,"CarryAmount":43},
-{"_t":"LaborConfig","_id":101,"Labor":101,"LaborExp":1440,"Income":10.4,"CarryAmount":44},
-{"_t":"LaborConfig","_id":102,"Labor":102,"LaborExp":1440,"Income":10.5,"CarryAmount":44},
-{"_t":"LaborConfig","_id":103,"Labor":103,"LaborExp":1450,"Income":10.6,"CarryAmount":45},
-{"_t":"LaborConfig","_id":104,"Labor":104,"LaborExp":1450,"Income":10.7,"CarryAmount":45},
-{"_t":"LaborConfig","_id":105,"Labor":105,"LaborExp":1450,"Income":10.8,"CarryAmount":45},
-{"_t":"LaborConfig","_id":106,"Labor":106,"LaborExp":1460,"Income":10.9,"CarryAmount":46},
-{"_t":"LaborConfig","_id":107,"Labor":107,"LaborExp":1460,"Income":11,"CarryAmount":46},
-{"_t":"LaborConfig","_id":108,"Labor":108,"LaborExp":1460,"Income":11.1,"CarryAmount":47},
-{"_t":"LaborConfig","_id":109,"Labor":109,"LaborExp":1470,"Income":11.2,"CarryAmount":47},
-{"_t":"LaborConfig","_id":110,"Labor":110,"LaborExp":1470,"Income":11.3,"CarryAmount":47},
+{"_t":"LaborConfig","_id":1,"Labor":1,"LaborExp":80,"IncomeCoefficient":3},
+{"_t":"LaborConfig","_id":2,"Labor":2,"LaborExp":150,"IncomeCoefficient":4},
+{"_t":"LaborConfig","_id":3,"Labor":3,"LaborExp":210,"IncomeCoefficient":5},
+{"_t":"LaborConfig","_id":4,"Labor":4,"LaborExp":280,"IncomeCoefficient":6},
+{"_t":"LaborConfig","_id":5,"Labor":5,"LaborExp":340,"IncomeCoefficient":7},
+{"_t":"LaborConfig","_id":6,"Labor":6,"LaborExp":400,"IncomeCoefficient":8},
+{"_t":"LaborConfig","_id":7,"Labor":7,"LaborExp":450,"IncomeCoefficient":9},
+{"_t":"LaborConfig","_id":8,"Labor":8,"LaborExp":500,"IncomeCoefficient":10},
+{"_t":"LaborConfig","_id":9,"Labor":9,"LaborExp":560,"IncomeCoefficient":11},
+{"_t":"LaborConfig","_id":10,"Labor":10,"LaborExp":600,"IncomeCoefficient":12},
+{"_t":"LaborConfig","_id":11,"Labor":11,"LaborExp":650,"IncomeCoefficient":13},
+{"_t":"LaborConfig","_id":12,"Labor":12,"LaborExp":700,"IncomeCoefficient":14},
+{"_t":"LaborConfig","_id":13,"Labor":13,"LaborExp":740,"IncomeCoefficient":15},
+{"_t":"LaborConfig","_id":14,"Labor":14,"LaborExp":780,"IncomeCoefficient":16},
+{"_t":"LaborConfig","_id":15,"Labor":15,"LaborExp":820,"IncomeCoefficient":17},
+{"_t":"LaborConfig","_id":16,"Labor":16,"LaborExp":860,"IncomeCoefficient":18},
+{"_t":"LaborConfig","_id":17,"Labor":17,"LaborExp":900,"IncomeCoefficient":19},
+{"_t":"LaborConfig","_id":18,"Labor":18,"LaborExp":940,"IncomeCoefficient":20},
+{"_t":"LaborConfig","_id":19,"Labor":19,"LaborExp":970,"IncomeCoefficient":21},
+{"_t":"LaborConfig","_id":20,"Labor":20,"LaborExp":1000,"IncomeCoefficient":22},
+{"_t":"LaborConfig","_id":21,"Labor":21,"LaborExp":1040,"IncomeCoefficient":23},
+{"_t":"LaborConfig","_id":22,"Labor":22,"LaborExp":1070,"IncomeCoefficient":24},
+{"_t":"LaborConfig","_id":23,"Labor":23,"LaborExp":1100,"IncomeCoefficient":25},
+{"_t":"LaborConfig","_id":24,"Labor":24,"LaborExp":1130,"IncomeCoefficient":26},
+{"_t":"LaborConfig","_id":25,"Labor":25,"LaborExp":1160,"IncomeCoefficient":27},
+{"_t":"LaborConfig","_id":26,"Labor":26,"LaborExp":1190,"IncomeCoefficient":28},
+{"_t":"LaborConfig","_id":27,"Labor":27,"LaborExp":1210,"IncomeCoefficient":29},
+{"_t":"LaborConfig","_id":28,"Labor":28,"LaborExp":1240,"IncomeCoefficient":30},
+{"_t":"LaborConfig","_id":29,"Labor":29,"LaborExp":1270,"IncomeCoefficient":31},
+{"_t":"LaborConfig","_id":30,"Labor":30,"LaborExp":1290,"IncomeCoefficient":32},
+{"_t":"LaborConfig","_id":31,"Labor":31,"LaborExp":1310,"IncomeCoefficient":33},
+{"_t":"LaborConfig","_id":32,"Labor":32,"LaborExp":1340,"IncomeCoefficient":34},
+{"_t":"LaborConfig","_id":33,"Labor":33,"LaborExp":1360,"IncomeCoefficient":35},
+{"_t":"LaborConfig","_id":34,"Labor":34,"LaborExp":1380,"IncomeCoefficient":36},
+{"_t":"LaborConfig","_id":35,"Labor":35,"LaborExp":1400,"IncomeCoefficient":37},
+{"_t":"LaborConfig","_id":36,"Labor":36,"LaborExp":1430,"IncomeCoefficient":38},
+{"_t":"LaborConfig","_id":37,"Labor":37,"LaborExp":1450,"IncomeCoefficient":39},
+{"_t":"LaborConfig","_id":38,"Labor":38,"LaborExp":1470,"IncomeCoefficient":40},
+{"_t":"LaborConfig","_id":39,"Labor":39,"LaborExp":1490,"IncomeCoefficient":41},
+{"_t":"LaborConfig","_id":40,"Labor":40,"LaborExp":1500,"IncomeCoefficient":42},
+{"_t":"LaborConfig","_id":41,"Labor":41,"LaborExp":1520,"IncomeCoefficient":43},
+{"_t":"LaborConfig","_id":42,"Labor":42,"LaborExp":1540,"IncomeCoefficient":44},
+{"_t":"LaborConfig","_id":43,"Labor":43,"LaborExp":1560,"IncomeCoefficient":45},
+{"_t":"LaborConfig","_id":44,"Labor":44,"LaborExp":1580,"IncomeCoefficient":46},
+{"_t":"LaborConfig","_id":45,"Labor":45,"LaborExp":1590,"IncomeCoefficient":47},
+{"_t":"LaborConfig","_id":46,"Labor":46,"LaborExp":1610,"IncomeCoefficient":48},
+{"_t":"LaborConfig","_id":47,"Labor":47,"LaborExp":1630,"IncomeCoefficient":49},
+{"_t":"LaborConfig","_id":48,"Labor":48,"LaborExp":1640,"IncomeCoefficient":50},
+{"_t":"LaborConfig","_id":49,"Labor":49,"LaborExp":1660,"IncomeCoefficient":51},
+{"_t":"LaborConfig","_id":50,"Labor":50,"LaborExp":1670,"IncomeCoefficient":52},
+{"_t":"LaborConfig","_id":51,"Labor":51,"LaborExp":1690,"IncomeCoefficient":53},
+{"_t":"LaborConfig","_id":52,"Labor":52,"LaborExp":1700,"IncomeCoefficient":54},
+{"_t":"LaborConfig","_id":53,"Labor":53,"LaborExp":1710,"IncomeCoefficient":55},
+{"_t":"LaborConfig","_id":54,"Labor":54,"LaborExp":1730,"IncomeCoefficient":56},
+{"_t":"LaborConfig","_id":55,"Labor":55,"LaborExp":1740,"IncomeCoefficient":57},
+{"_t":"LaborConfig","_id":56,"Labor":56,"LaborExp":1750,"IncomeCoefficient":58},
+{"_t":"LaborConfig","_id":57,"Labor":57,"LaborExp":1770,"IncomeCoefficient":59},
+{"_t":"LaborConfig","_id":58,"Labor":58,"LaborExp":1780,"IncomeCoefficient":60},
+{"_t":"LaborConfig","_id":59,"Labor":59,"LaborExp":1790,"IncomeCoefficient":61},
+{"_t":"LaborConfig","_id":60,"Labor":60,"LaborExp":1800,"IncomeCoefficient":62},
+{"_t":"LaborConfig","_id":61,"Labor":61,"LaborExp":1820,"IncomeCoefficient":63},
+{"_t":"LaborConfig","_id":62,"Labor":62,"LaborExp":1830,"IncomeCoefficient":64},
+{"_t":"LaborConfig","_id":63,"Labor":63,"LaborExp":1840,"IncomeCoefficient":65},
+{"_t":"LaborConfig","_id":64,"Labor":64,"LaborExp":1850,"IncomeCoefficient":66},
+{"_t":"LaborConfig","_id":65,"Labor":65,"LaborExp":1860,"IncomeCoefficient":67},
+{"_t":"LaborConfig","_id":66,"Labor":66,"LaborExp":1870,"IncomeCoefficient":68},
+{"_t":"LaborConfig","_id":67,"Labor":67,"LaborExp":1880,"IncomeCoefficient":69},
+{"_t":"LaborConfig","_id":68,"Labor":68,"LaborExp":1890,"IncomeCoefficient":70},
+{"_t":"LaborConfig","_id":69,"Labor":69,"LaborExp":1900,"IncomeCoefficient":71},
+{"_t":"LaborConfig","_id":70,"Labor":70,"LaborExp":1910,"IncomeCoefficient":72},
+{"_t":"LaborConfig","_id":71,"Labor":71,"LaborExp":1920,"IncomeCoefficient":73},
+{"_t":"LaborConfig","_id":72,"Labor":72,"LaborExp":1930,"IncomeCoefficient":74},
+{"_t":"LaborConfig","_id":73,"Labor":73,"LaborExp":1940,"IncomeCoefficient":75},
+{"_t":"LaborConfig","_id":74,"Labor":74,"LaborExp":1950,"IncomeCoefficient":76},
+{"_t":"LaborConfig","_id":75,"Labor":75,"LaborExp":1960,"IncomeCoefficient":77},
+{"_t":"LaborConfig","_id":76,"Labor":76,"LaborExp":1970,"IncomeCoefficient":78},
+{"_t":"LaborConfig","_id":77,"Labor":77,"LaborExp":1980,"IncomeCoefficient":79},
+{"_t":"LaborConfig","_id":78,"Labor":78,"LaborExp":1990,"IncomeCoefficient":80},
+{"_t":"LaborConfig","_id":79,"Labor":79,"LaborExp":2000,"IncomeCoefficient":81},
+{"_t":"LaborConfig","_id":80,"Labor":80,"LaborExp":2000,"IncomeCoefficient":82},
+{"_t":"LaborConfig","_id":81,"Labor":81,"LaborExp":2010,"IncomeCoefficient":83},
+{"_t":"LaborConfig","_id":82,"Labor":82,"LaborExp":2020,"IncomeCoefficient":84},
+{"_t":"LaborConfig","_id":83,"Labor":83,"LaborExp":2030,"IncomeCoefficient":85},
+{"_t":"LaborConfig","_id":84,"Labor":84,"LaborExp":2040,"IncomeCoefficient":86},
+{"_t":"LaborConfig","_id":85,"Labor":85,"LaborExp":2040,"IncomeCoefficient":87},
+{"_t":"LaborConfig","_id":86,"Labor":86,"LaborExp":2050,"IncomeCoefficient":88},
+{"_t":"LaborConfig","_id":87,"Labor":87,"LaborExp":2060,"IncomeCoefficient":89},
+{"_t":"LaborConfig","_id":88,"Labor":88,"LaborExp":2070,"IncomeCoefficient":90},
+{"_t":"LaborConfig","_id":89,"Labor":89,"LaborExp":2070,"IncomeCoefficient":91},
+{"_t":"LaborConfig","_id":90,"Labor":90,"LaborExp":2080,"IncomeCoefficient":92},
+{"_t":"LaborConfig","_id":91,"Labor":91,"LaborExp":2090,"IncomeCoefficient":93},
+{"_t":"LaborConfig","_id":92,"Labor":92,"LaborExp":2100,"IncomeCoefficient":94},
+{"_t":"LaborConfig","_id":93,"Labor":93,"LaborExp":2100,"IncomeCoefficient":95},
+{"_t":"LaborConfig","_id":94,"Labor":94,"LaborExp":2110,"IncomeCoefficient":96},
+{"_t":"LaborConfig","_id":95,"Labor":95,"LaborExp":2120,"IncomeCoefficient":97},
+{"_t":"LaborConfig","_id":96,"Labor":96,"LaborExp":2120,"IncomeCoefficient":98},
+{"_t":"LaborConfig","_id":97,"Labor":97,"LaborExp":2130,"IncomeCoefficient":99},
+{"_t":"LaborConfig","_id":98,"Labor":98,"LaborExp":2140,"IncomeCoefficient":100},
+{"_t":"LaborConfig","_id":99,"Labor":99,"LaborExp":2140,"IncomeCoefficient":101},
+{"_t":"LaborConfig","_id":100,"Labor":100,"LaborExp":2150,"IncomeCoefficient":102},
 ]}
diff --git a/Excel/Json/c/LifeExpConfig.txt b/Excel/Json/c/LifeExpConfig.txt
new file mode 100644
index 0000000..8fcd668
--- /dev/null
+++ b/Excel/Json/c/LifeExpConfig.txt
@@ -0,0 +1,122 @@
+{"list":[
+{"_t":"LifeExpConfig","_id":1,"Life":1,"LifeExp":100},
+{"_t":"LifeExpConfig","_id":2,"Life":2,"LifeExp":200},
+{"_t":"LifeExpConfig","_id":3,"Life":3,"LifeExp":300},
+{"_t":"LifeExpConfig","_id":4,"Life":4,"LifeExp":400},
+{"_t":"LifeExpConfig","_id":5,"Life":5,"LifeExp":500},
+{"_t":"LifeExpConfig","_id":6,"Life":6,"LifeExp":600},
+{"_t":"LifeExpConfig","_id":7,"Life":7,"LifeExp":700},
+{"_t":"LifeExpConfig","_id":8,"Life":8,"LifeExp":800},
+{"_t":"LifeExpConfig","_id":9,"Life":9,"LifeExp":900},
+{"_t":"LifeExpConfig","_id":10,"Life":10,"LifeExp":1000},
+{"_t":"LifeExpConfig","_id":11,"Life":11,"LifeExp":1100},
+{"_t":"LifeExpConfig","_id":12,"Life":12,"LifeExp":1200},
+{"_t":"LifeExpConfig","_id":13,"Life":13,"LifeExp":1300},
+{"_t":"LifeExpConfig","_id":14,"Life":14,"LifeExp":1400},
+{"_t":"LifeExpConfig","_id":15,"Life":15,"LifeExp":1500},
+{"_t":"LifeExpConfig","_id":16,"Life":16,"LifeExp":1600},
+{"_t":"LifeExpConfig","_id":17,"Life":17,"LifeExp":1700},
+{"_t":"LifeExpConfig","_id":18,"Life":18,"LifeExp":1800},
+{"_t":"LifeExpConfig","_id":19,"Life":19,"LifeExp":1900},
+{"_t":"LifeExpConfig","_id":20,"Life":20,"LifeExp":2000},
+{"_t":"LifeExpConfig","_id":21,"Life":21,"LifeExp":2100},
+{"_t":"LifeExpConfig","_id":22,"Life":22,"LifeExp":2200},
+{"_t":"LifeExpConfig","_id":23,"Life":23,"LifeExp":2300},
+{"_t":"LifeExpConfig","_id":24,"Life":24,"LifeExp":2400},
+{"_t":"LifeExpConfig","_id":25,"Life":25,"LifeExp":2500},
+{"_t":"LifeExpConfig","_id":26,"Life":26,"LifeExp":2600},
+{"_t":"LifeExpConfig","_id":27,"Life":27,"LifeExp":2700},
+{"_t":"LifeExpConfig","_id":28,"Life":28,"LifeExp":2800},
+{"_t":"LifeExpConfig","_id":29,"Life":29,"LifeExp":2900},
+{"_t":"LifeExpConfig","_id":30,"Life":30,"LifeExp":3000},
+{"_t":"LifeExpConfig","_id":31,"Life":31,"LifeExp":3100},
+{"_t":"LifeExpConfig","_id":32,"Life":32,"LifeExp":3200},
+{"_t":"LifeExpConfig","_id":33,"Life":33,"LifeExp":3300},
+{"_t":"LifeExpConfig","_id":34,"Life":34,"LifeExp":3400},
+{"_t":"LifeExpConfig","_id":35,"Life":35,"LifeExp":3500},
+{"_t":"LifeExpConfig","_id":36,"Life":36,"LifeExp":3600},
+{"_t":"LifeExpConfig","_id":37,"Life":37,"LifeExp":3700},
+{"_t":"LifeExpConfig","_id":38,"Life":38,"LifeExp":3800},
+{"_t":"LifeExpConfig","_id":39,"Life":39,"LifeExp":3900},
+{"_t":"LifeExpConfig","_id":40,"Life":40,"LifeExp":4000},
+{"_t":"LifeExpConfig","_id":41,"Life":41,"LifeExp":4100},
+{"_t":"LifeExpConfig","_id":42,"Life":42,"LifeExp":4200},
+{"_t":"LifeExpConfig","_id":43,"Life":43,"LifeExp":4300},
+{"_t":"LifeExpConfig","_id":44,"Life":44,"LifeExp":4400},
+{"_t":"LifeExpConfig","_id":45,"Life":45,"LifeExp":4500},
+{"_t":"LifeExpConfig","_id":46,"Life":46,"LifeExp":4600},
+{"_t":"LifeExpConfig","_id":47,"Life":47,"LifeExp":4700},
+{"_t":"LifeExpConfig","_id":48,"Life":48,"LifeExp":4800},
+{"_t":"LifeExpConfig","_id":49,"Life":49,"LifeExp":4900},
+{"_t":"LifeExpConfig","_id":50,"Life":50,"LifeExp":5000},
+{"_t":"LifeExpConfig","_id":51,"Life":51,"LifeExp":5100},
+{"_t":"LifeExpConfig","_id":52,"Life":52,"LifeExp":5200},
+{"_t":"LifeExpConfig","_id":53,"Life":53,"LifeExp":5300},
+{"_t":"LifeExpConfig","_id":54,"Life":54,"LifeExp":5400},
+{"_t":"LifeExpConfig","_id":55,"Life":55,"LifeExp":5500},
+{"_t":"LifeExpConfig","_id":56,"Life":56,"LifeExp":5600},
+{"_t":"LifeExpConfig","_id":57,"Life":57,"LifeExp":5700},
+{"_t":"LifeExpConfig","_id":58,"Life":58,"LifeExp":5800},
+{"_t":"LifeExpConfig","_id":59,"Life":59,"LifeExp":5900},
+{"_t":"LifeExpConfig","_id":60,"Life":60,"LifeExp":6000},
+{"_t":"LifeExpConfig","_id":61,"Life":61,"LifeExp":6100},
+{"_t":"LifeExpConfig","_id":62,"Life":62,"LifeExp":6200},
+{"_t":"LifeExpConfig","_id":63,"Life":63,"LifeExp":6300},
+{"_t":"LifeExpConfig","_id":64,"Life":64,"LifeExp":6400},
+{"_t":"LifeExpConfig","_id":65,"Life":65,"LifeExp":6500},
+{"_t":"LifeExpConfig","_id":66,"Life":66,"LifeExp":6600},
+{"_t":"LifeExpConfig","_id":67,"Life":67,"LifeExp":6700},
+{"_t":"LifeExpConfig","_id":68,"Life":68,"LifeExp":6800},
+{"_t":"LifeExpConfig","_id":69,"Life":69,"LifeExp":6900},
+{"_t":"LifeExpConfig","_id":70,"Life":70,"LifeExp":7000},
+{"_t":"LifeExpConfig","_id":71,"Life":71,"LifeExp":7100},
+{"_t":"LifeExpConfig","_id":72,"Life":72,"LifeExp":7200},
+{"_t":"LifeExpConfig","_id":73,"Life":73,"LifeExp":7300},
+{"_t":"LifeExpConfig","_id":74,"Life":74,"LifeExp":7400},
+{"_t":"LifeExpConfig","_id":75,"Life":75,"LifeExp":7500},
+{"_t":"LifeExpConfig","_id":76,"Life":76,"LifeExp":7600},
+{"_t":"LifeExpConfig","_id":77,"Life":77,"LifeExp":7700},
+{"_t":"LifeExpConfig","_id":78,"Life":78,"LifeExp":7800},
+{"_t":"LifeExpConfig","_id":79,"Life":79,"LifeExp":7900},
+{"_t":"LifeExpConfig","_id":80,"Life":80,"LifeExp":8000},
+{"_t":"LifeExpConfig","_id":81,"Life":81,"LifeExp":8100},
+{"_t":"LifeExpConfig","_id":82,"Life":82,"LifeExp":8200},
+{"_t":"LifeExpConfig","_id":83,"Life":83,"LifeExp":8300},
+{"_t":"LifeExpConfig","_id":84,"Life":84,"LifeExp":8400},
+{"_t":"LifeExpConfig","_id":85,"Life":85,"LifeExp":8500},
+{"_t":"LifeExpConfig","_id":86,"Life":86,"LifeExp":8600},
+{"_t":"LifeExpConfig","_id":87,"Life":87,"LifeExp":8700},
+{"_t":"LifeExpConfig","_id":88,"Life":88,"LifeExp":8800},
+{"_t":"LifeExpConfig","_id":89,"Life":89,"LifeExp":8900},
+{"_t":"LifeExpConfig","_id":90,"Life":90,"LifeExp":9000},
+{"_t":"LifeExpConfig","_id":91,"Life":91,"LifeExp":9100},
+{"_t":"LifeExpConfig","_id":92,"Life":92,"LifeExp":9200},
+{"_t":"LifeExpConfig","_id":93,"Life":93,"LifeExp":9300},
+{"_t":"LifeExpConfig","_id":94,"Life":94,"LifeExp":9400},
+{"_t":"LifeExpConfig","_id":95,"Life":95,"LifeExp":9500},
+{"_t":"LifeExpConfig","_id":96,"Life":96,"LifeExp":9600},
+{"_t":"LifeExpConfig","_id":97,"Life":97,"LifeExp":9700},
+{"_t":"LifeExpConfig","_id":98,"Life":98,"LifeExp":9800},
+{"_t":"LifeExpConfig","_id":99,"Life":99,"LifeExp":9900},
+{"_t":"LifeExpConfig","_id":100,"Life":100,"LifeExp":10000},
+{"_t":"LifeExpConfig","_id":101,"Life":101,"LifeExp":10100},
+{"_t":"LifeExpConfig","_id":102,"Life":102,"LifeExp":10200},
+{"_t":"LifeExpConfig","_id":103,"Life":103,"LifeExp":10300},
+{"_t":"LifeExpConfig","_id":104,"Life":104,"LifeExp":10400},
+{"_t":"LifeExpConfig","_id":105,"Life":105,"LifeExp":10500},
+{"_t":"LifeExpConfig","_id":106,"Life":106,"LifeExp":10600},
+{"_t":"LifeExpConfig","_id":107,"Life":107,"LifeExp":10700},
+{"_t":"LifeExpConfig","_id":108,"Life":108,"LifeExp":10800},
+{"_t":"LifeExpConfig","_id":109,"Life":109,"LifeExp":10900},
+{"_t":"LifeExpConfig","_id":110,"Life":110,"LifeExp":11000},
+{"_t":"LifeExpConfig","_id":111,"Life":111,"LifeExp":11100},
+{"_t":"LifeExpConfig","_id":112,"Life":112,"LifeExp":11200},
+{"_t":"LifeExpConfig","_id":113,"Life":113,"LifeExp":11300},
+{"_t":"LifeExpConfig","_id":114,"Life":114,"LifeExp":11400},
+{"_t":"LifeExpConfig","_id":115,"Life":115,"LifeExp":11500},
+{"_t":"LifeExpConfig","_id":116,"Life":116,"LifeExp":11600},
+{"_t":"LifeExpConfig","_id":117,"Life":117,"LifeExp":11700},
+{"_t":"LifeExpConfig","_id":118,"Life":118,"LifeExp":11800},
+{"_t":"LifeExpConfig","_id":119,"Life":119,"LifeExp":11900},
+{"_t":"LifeExpConfig","_id":120,"Life":120,"LifeExp":12000},
+]}
diff --git a/Excel/Json/c/PhysiqueConfig.txt b/Excel/Json/c/PhysiqueConfig.txt
new file mode 100644
index 0000000..cd8f2f4
--- /dev/null
+++ b/Excel/Json/c/PhysiqueConfig.txt
@@ -0,0 +1,17 @@
+{"list":[
+{"_t":"PhysiqueConfig","_id":1,"Lv":1,"Exp":60,"Section":1,"LifeMin":30,"LifeMax":50,"LaborExpCoefficient":11,"DiseaseRecovery":46,"DiseaseWorsen":48,"DiseaseRelief":7},
+{"_t":"PhysiqueConfig","_id":2,"Lv":2,"Exp":480,"Section":1,"LifeMin":30,"LifeMax":50,"LaborExpCoefficient":12,"DiseaseRecovery":52,"DiseaseWorsen":46,"DiseaseRelief":9},
+{"_t":"PhysiqueConfig","_id":3,"Lv":3,"Exp":1620,"Section":1,"LifeMin":30,"LifeMax":50,"LaborExpCoefficient":13,"DiseaseRecovery":58,"DiseaseWorsen":44,"DiseaseRelief":11},
+{"_t":"PhysiqueConfig","_id":4,"Lv":4,"Exp":3840,"Section":2,"LifeMin":51,"LifeMax":60,"LaborExpCoefficient":14,"DiseaseRecovery":64,"DiseaseWorsen":42,"DiseaseRelief":13},
+{"_t":"PhysiqueConfig","_id":5,"Lv":5,"Exp":7500,"Section":2,"LifeMin":51,"LifeMax":60,"LaborExpCoefficient":15,"DiseaseRecovery":70,"DiseaseWorsen":40,"DiseaseRelief":15},
+{"_t":"PhysiqueConfig","_id":6,"Lv":6,"Exp":12960,"Section":2,"LifeMin":51,"LifeMax":60,"LaborExpCoefficient":16,"DiseaseRecovery":76,"DiseaseWorsen":38,"DiseaseRelief":17},
+{"_t":"PhysiqueConfig","_id":7,"Lv":7,"Exp":20580,"Section":3,"LifeMin":61,"LifeMax":75,"LaborExpCoefficient":17,"DiseaseRecovery":82,"DiseaseWorsen":36,"DiseaseRelief":19},
+{"_t":"PhysiqueConfig","_id":8,"Lv":8,"Exp":30720,"Section":3,"LifeMin":61,"LifeMax":75,"LaborExpCoefficient":18,"DiseaseRecovery":88,"DiseaseWorsen":34,"DiseaseRelief":21},
+{"_t":"PhysiqueConfig","_id":9,"Lv":9,"Exp":43740,"Section":3,"LifeMin":61,"LifeMax":75,"LaborExpCoefficient":19,"DiseaseRecovery":94,"DiseaseWorsen":32,"DiseaseRelief":23},
+{"_t":"PhysiqueConfig","_id":10,"Lv":10,"Exp":60000,"Section":4,"LifeMin":76,"LifeMax":89,"LaborExpCoefficient":20,"DiseaseRecovery":100,"DiseaseWorsen":30,"DiseaseRelief":25},
+{"_t":"PhysiqueConfig","_id":11,"Lv":11,"Exp":79860,"Section":4,"LifeMin":76,"LifeMax":89,"LaborExpCoefficient":21,"DiseaseRecovery":106,"DiseaseWorsen":28,"DiseaseRelief":27},
+{"_t":"PhysiqueConfig","_id":12,"Lv":12,"Exp":103680,"Section":4,"LifeMin":76,"LifeMax":89,"LaborExpCoefficient":22,"DiseaseRecovery":112,"DiseaseWorsen":26,"DiseaseRelief":29},
+{"_t":"PhysiqueConfig","_id":13,"Lv":13,"Exp":131820,"Section":5,"LifeMin":90,"LifeMax":120,"LaborExpCoefficient":23,"DiseaseRecovery":118,"DiseaseWorsen":24,"DiseaseRelief":31},
+{"_t":"PhysiqueConfig","_id":14,"Lv":14,"Exp":164640,"Section":5,"LifeMin":90,"LifeMax":120,"LaborExpCoefficient":24,"DiseaseRecovery":124,"DiseaseWorsen":22,"DiseaseRelief":33},
+{"_t":"PhysiqueConfig","_id":15,"Lv":15,"Exp":202500,"Section":5,"LifeMin":90,"LifeMax":120,"LaborExpCoefficient":25,"DiseaseRecovery":130,"DiseaseWorsen":20,"DiseaseRelief":35},
+]}
diff --git a/Excel/Json/c/SeasonConfig.txt b/Excel/Json/c/SeasonConfig.txt
index 2b920fb..6e43842 100644
--- a/Excel/Json/c/SeasonConfig.txt
+++ b/Excel/Json/c/SeasonConfig.txt
@@ -1,7 +1,15 @@
 {"list":[
-{"_t":"SeasonConfig","_id":1,"Name":"æ–°","Type":2,"Duration":3,"DayTime":[530,1730],"Description":"","Picture":""},
-{"_t":"SeasonConfig","_id":2,"Name":"æ˜¥","Type":1,"Duration":8,"DayTime":[530,1730],"Description":"","Picture":""},
-{"_t":"SeasonConfig","_id":3,"Name":"å¤�","Type":1,"Duration":8,"DayTime":[500,1700],"Description":"","Picture":""},
-{"_t":"SeasonConfig","_id":4,"Name":"ç§‹","Type":1,"Duration":8,"DayTime":[600,1800],"Description":"","Picture":""},
-{"_t":"SeasonConfig","_id":5,"Name":"å†¬","Type":1,"Duration":8,"DayTime":[700,1900],"Description":"","Picture":""},
+{"_t":"SeasonConfig","_id":1,"Name":"æ˜¥","Tapy":1,"Stage":1,"Duration":8,"DayTime":[530,1730],"WeatherGroup":[1,2],"Weights":[10,1],"Description":"","Picture":""},
+{"_t":"SeasonConfig","_id":2,"Name":"æ˜¥","Tapy":1,"Stage":2,"Duration":8,"DayTime":[530,1730],"WeatherGroup":[2,6],"Weights":[2,1],"Description":"","Picture":""},
+{"_t":"SeasonConfig","_id":3,"Name":"å¤�","Tapy":2,"Stage":2,"Duration":8,"DayTime":[500,1700],"WeatherGroup":[1,3],"Weights":[2,1],"Description":"","Picture":""},
+{"_t":"SeasonConfig","_id":4,"Name":"ç§‹","Tapy":3,"Stage":2,"Duration":8,"DayTime":[600,1800],"WeatherGroup":[1,2],"Weights":[2,1],"Description":"","Picture":""},
+{"_t":"SeasonConfig","_id":5,"Name":"å†¬","Tapy":4,"Stage":2,"Duration":8,"DayTime":[700,1900],"WeatherGroup":[2,7],"Weights":[2,1],"Description":"","Picture":""},
+{"_t":"SeasonConfig","_id":6,"Name":"æ˜¥","Tapy":1,"Stage":3,"Duration":8,"DayTime":[530,1730],"WeatherGroup":[1,2,7,11],"Weights":[30,20,10,5],"Description":"","Picture":""},
+{"_t":"SeasonConfig","_id":7,"Name":"å¤�","Tapy":2,"Stage":3,"Duration":8,"DayTime":[500,1700],"WeatherGroup":[3,4,6,5],"Weights":[30,20,10,5],"Description":"","Picture":""},
+{"_t":"SeasonConfig","_id":8,"Name":"ç§‹","Tapy":3,"Stage":3,"Duration":8,"DayTime":[600,1800],"WeatherGroup":[1,2,10],"Weights":[20,20,5],"Description":"","Picture":""},
+{"_t":"SeasonConfig","_id":9,"Name":"å†¬","Tapy":4,"Stage":3,"Duration":8,"DayTime":[700,1900],"WeatherGroup":[1,9,7,8],"Weights":[2,2,2,1],"Description":"","Picture":""},
+{"_t":"SeasonConfig","_id":10,"Name":"æ˜¥","Tapy":1,"Stage":4,"Duration":8,"DayTime":[530,1730],"WeatherGroup":[1,2,7,11],"Weights":[30,20,10,5],"Description":"","Picture":""},
+{"_t":"SeasonConfig","_id":11,"Name":"å¤�","Tapy":2,"Stage":4,"Duration":8,"DayTime":[500,1700],"WeatherGroup":[3,4,6,5],"Weights":[30,20,10,5],"Description":"","Picture":""},
+{"_t":"SeasonConfig","_id":12,"Name":"ç§‹","Tapy":3,"Stage":4,"Duration":8,"DayTime":[600,1800],"WeatherGroup":[1,2,10],"Weights":[20,20,5],"Description":"","Picture":""},
+{"_t":"SeasonConfig","_id":13,"Name":"å†¬","Tapy":4,"Stage":4,"Duration":8,"DayTime":[700,1900],"WeatherGroup":[1,9,7,8],"Weights":[2,2,2,1],"Description":"","Picture":""},
 ]}
diff --git a/Excel/Json/c/WeatherConfig.txt b/Excel/Json/c/WeatherConfig.txt
new file mode 100644
index 0000000..a0e8ec4
--- /dev/null
+++ b/Excel/Json/c/WeatherConfig.txt
@@ -0,0 +1,13 @@
+{"list":[
+{"_t":"WeatherConfig","_id":1,"Name":"å¤§é£Ž","Disease":200,"Injury":0,"DurableDestroy":2,"LaborVariety":0,"Duration":[5,10],"CD":[2,3],"WeaterEffect":"","SpecialEfficacyCD":[10,15],"ICON":"","Describe":""},
+{"_t":"WeatherConfig","_id":2,"Name":"å°�é›¨","Disease":250,"Injury":0,"DurableDestroy":1,"LaborVariety":1,"Duration":[20,30],"CD":[2,3],"WeaterEffect":"","SpecialEfficacyCD":[0],"ICON":"","Describe":""},
+{"_t":"WeatherConfig","_id":3,"Name":"æš´é›¨","Disease":300,"Injury":0,"DurableDestroy":3,"LaborVariety":2,"Duration":[10,20],"CD":[2,3],"WeaterEffect":"","SpecialEfficacyCD":[0],"ICON":"","Describe":""},
+{"_t":"WeatherConfig","_id":4,"Name":"é›·é›¨","Disease":350,"Injury":0,"DurableDestroy":5,"LaborVariety":3,"Duration":[5,10],"CD":[2,3],"WeaterEffect":"","SpecialEfficacyCD":[0],"ICON":"","Describe":""},
+{"_t":"WeatherConfig","_id":5,"Name":"å†°é›¹","Disease":300,"Injury":200,"DurableDestroy":15,"LaborVariety":3,"Duration":[3,5],"CD":[2,3],"WeaterEffect":"","SpecialEfficacyCD":[0],"ICON":"","Describe":""},
+{"_t":"WeatherConfig","_id":6,"Name":"é«˜æ¸©","Disease":400,"Injury":0,"DurableDestroy":0,"LaborVariety":3,"Duration":[50,100],"CD":[2,3],"WeaterEffect":"","SpecialEfficacyCD":[10,15],"ICON":"","Describe":""},
+{"_t":"WeatherConfig","_id":7,"Name":"é›ª","Disease":400,"Injury":0,"DurableDestroy":5,"LaborVariety":3,"Duration":[10,20],"CD":[2,3],"WeaterEffect":"","SpecialEfficacyCD":[0],"ICON":"","Describe":""},
+{"_t":"WeatherConfig","_id":8,"Name":"æš´é›ª","Disease":500,"Injury":0,"DurableDestroy":10,"LaborVariety":5,"Duration":[5,10],"CD":[2,3],"WeaterEffect":"","SpecialEfficacyCD":[0],"ICON":"","Describe":""},
+{"_t":"WeatherConfig","_id":9,"Name":"å¯’æµ�","Disease":400,"Injury":0,"DurableDestroy":0,"LaborVariety":4,"Duration":[5,10],"CD":[2,3],"WeaterEffect":"","SpecialEfficacyCD":[20,40],"ICON":"","Describe":"éš�æœºæ�‘æ°‘é¢¤æŠ–"},
+{"_t":"WeatherConfig","_id":10,"Name":"åœ°éœ‡","Disease":0,"Injury":300,"DurableDestroy":30,"LaborVariety":10,"Duration":[3,5],"CD":[30],"WeaterEffect":"","SpecialEfficacyCD":[5,10],"ICON":"","Describe":""},
+{"_t":"WeatherConfig","_id":11,"Name":"æµ�æ„Ÿ","Disease":700,"Injury":0,"DurableDestroy":0,"LaborVariety":0,"Duration":[10,20],"CD":[2,3],"WeaterEffect":"","SpecialEfficacyCD":[10,20],"ICON":"","Describe":"éš�æœºæ�‘æ°‘æ‰“å–·åš�"},
+]}
diff --git a/Excel/Json/s/LaborConfig.txt b/Excel/Json/s/LaborConfig.txt
new file mode 100644
index 0000000..18ec350
--- /dev/null
+++ b/Excel/Json/s/LaborConfig.txt
@@ -0,0 +1,102 @@
+{"list":[
+{"_t":"LaborConfig","_id":1,"Labor":1,"LaborExp":80,"IncomeCoefficient":3},
+{"_t":"LaborConfig","_id":2,"Labor":2,"LaborExp":150,"IncomeCoefficient":4},
+{"_t":"LaborConfig","_id":3,"Labor":3,"LaborExp":210,"IncomeCoefficient":5},
+{"_t":"LaborConfig","_id":4,"Labor":4,"LaborExp":280,"IncomeCoefficient":6},
+{"_t":"LaborConfig","_id":5,"Labor":5,"LaborExp":340,"IncomeCoefficient":7},
+{"_t":"LaborConfig","_id":6,"Labor":6,"LaborExp":400,"IncomeCoefficient":8},
+{"_t":"LaborConfig","_id":7,"Labor":7,"LaborExp":450,"IncomeCoefficient":9},
+{"_t":"LaborConfig","_id":8,"Labor":8,"LaborExp":500,"IncomeCoefficient":10},
+{"_t":"LaborConfig","_id":9,"Labor":9,"LaborExp":560,"IncomeCoefficient":11},
+{"_t":"LaborConfig","_id":10,"Labor":10,"LaborExp":600,"IncomeCoefficient":12},
+{"_t":"LaborConfig","_id":11,"Labor":11,"LaborExp":650,"IncomeCoefficient":13},
+{"_t":"LaborConfig","_id":12,"Labor":12,"LaborExp":700,"IncomeCoefficient":14},
+{"_t":"LaborConfig","_id":13,"Labor":13,"LaborExp":740,"IncomeCoefficient":15},
+{"_t":"LaborConfig","_id":14,"Labor":14,"LaborExp":780,"IncomeCoefficient":16},
+{"_t":"LaborConfig","_id":15,"Labor":15,"LaborExp":820,"IncomeCoefficient":17},
+{"_t":"LaborConfig","_id":16,"Labor":16,"LaborExp":860,"IncomeCoefficient":18},
+{"_t":"LaborConfig","_id":17,"Labor":17,"LaborExp":900,"IncomeCoefficient":19},
+{"_t":"LaborConfig","_id":18,"Labor":18,"LaborExp":940,"IncomeCoefficient":20},
+{"_t":"LaborConfig","_id":19,"Labor":19,"LaborExp":970,"IncomeCoefficient":21},
+{"_t":"LaborConfig","_id":20,"Labor":20,"LaborExp":1000,"IncomeCoefficient":22},
+{"_t":"LaborConfig","_id":21,"Labor":21,"LaborExp":1040,"IncomeCoefficient":23},
+{"_t":"LaborConfig","_id":22,"Labor":22,"LaborExp":1070,"IncomeCoefficient":24},
+{"_t":"LaborConfig","_id":23,"Labor":23,"LaborExp":1100,"IncomeCoefficient":25},
+{"_t":"LaborConfig","_id":24,"Labor":24,"LaborExp":1130,"IncomeCoefficient":26},
+{"_t":"LaborConfig","_id":25,"Labor":25,"LaborExp":1160,"IncomeCoefficient":27},
+{"_t":"LaborConfig","_id":26,"Labor":26,"LaborExp":1190,"IncomeCoefficient":28},
+{"_t":"LaborConfig","_id":27,"Labor":27,"LaborExp":1210,"IncomeCoefficient":29},
+{"_t":"LaborConfig","_id":28,"Labor":28,"LaborExp":1240,"IncomeCoefficient":30},
+{"_t":"LaborConfig","_id":29,"Labor":29,"LaborExp":1270,"IncomeCoefficient":31},
+{"_t":"LaborConfig","_id":30,"Labor":30,"LaborExp":1290,"IncomeCoefficient":32},
+{"_t":"LaborConfig","_id":31,"Labor":31,"LaborExp":1310,"IncomeCoefficient":33},
+{"_t":"LaborConfig","_id":32,"Labor":32,"LaborExp":1340,"IncomeCoefficient":34},
+{"_t":"LaborConfig","_id":33,"Labor":33,"LaborExp":1360,"IncomeCoefficient":35},
+{"_t":"LaborConfig","_id":34,"Labor":34,"LaborExp":1380,"IncomeCoefficient":36},
+{"_t":"LaborConfig","_id":35,"Labor":35,"LaborExp":1400,"IncomeCoefficient":37},
+{"_t":"LaborConfig","_id":36,"Labor":36,"LaborExp":1430,"IncomeCoefficient":38},
+{"_t":"LaborConfig","_id":37,"Labor":37,"LaborExp":1450,"IncomeCoefficient":39},
+{"_t":"LaborConfig","_id":38,"Labor":38,"LaborExp":1470,"IncomeCoefficient":40},
+{"_t":"LaborConfig","_id":39,"Labor":39,"LaborExp":1490,"IncomeCoefficient":41},
+{"_t":"LaborConfig","_id":40,"Labor":40,"LaborExp":1500,"IncomeCoefficient":42},
+{"_t":"LaborConfig","_id":41,"Labor":41,"LaborExp":1520,"IncomeCoefficient":43},
+{"_t":"LaborConfig","_id":42,"Labor":42,"LaborExp":1540,"IncomeCoefficient":44},
+{"_t":"LaborConfig","_id":43,"Labor":43,"LaborExp":1560,"IncomeCoefficient":45},
+{"_t":"LaborConfig","_id":44,"Labor":44,"LaborExp":1580,"IncomeCoefficient":46},
+{"_t":"LaborConfig","_id":45,"Labor":45,"LaborExp":1590,"IncomeCoefficient":47},
+{"_t":"LaborConfig","_id":46,"Labor":46,"LaborExp":1610,"IncomeCoefficient":48},
+{"_t":"LaborConfig","_id":47,"Labor":47,"LaborExp":1630,"IncomeCoefficient":49},
+{"_t":"LaborConfig","_id":48,"Labor":48,"LaborExp":1640,"IncomeCoefficient":50},
+{"_t":"LaborConfig","_id":49,"Labor":49,"LaborExp":1660,"IncomeCoefficient":51},
+{"_t":"LaborConfig","_id":50,"Labor":50,"LaborExp":1670,"IncomeCoefficient":52},
+{"_t":"LaborConfig","_id":51,"Labor":51,"LaborExp":1690,"IncomeCoefficient":53},
+{"_t":"LaborConfig","_id":52,"Labor":52,"LaborExp":1700,"IncomeCoefficient":54},
+{"_t":"LaborConfig","_id":53,"Labor":53,"LaborExp":1710,"IncomeCoefficient":55},
+{"_t":"LaborConfig","_id":54,"Labor":54,"LaborExp":1730,"IncomeCoefficient":56},
+{"_t":"LaborConfig","_id":55,"Labor":55,"LaborExp":1740,"IncomeCoefficient":57},
+{"_t":"LaborConfig","_id":56,"Labor":56,"LaborExp":1750,"IncomeCoefficient":58},
+{"_t":"LaborConfig","_id":57,"Labor":57,"LaborExp":1770,"IncomeCoefficient":59},
+{"_t":"LaborConfig","_id":58,"Labor":58,"LaborExp":1780,"IncomeCoefficient":60},
+{"_t":"LaborConfig","_id":59,"Labor":59,"LaborExp":1790,"IncomeCoefficient":61},
+{"_t":"LaborConfig","_id":60,"Labor":60,"LaborExp":1800,"IncomeCoefficient":62},
+{"_t":"LaborConfig","_id":61,"Labor":61,"LaborExp":1820,"IncomeCoefficient":63},
+{"_t":"LaborConfig","_id":62,"Labor":62,"LaborExp":1830,"IncomeCoefficient":64},
+{"_t":"LaborConfig","_id":63,"Labor":63,"LaborExp":1840,"IncomeCoefficient":65},
+{"_t":"LaborConfig","_id":64,"Labor":64,"LaborExp":1850,"IncomeCoefficient":66},
+{"_t":"LaborConfig","_id":65,"Labor":65,"LaborExp":1860,"IncomeCoefficient":67},
+{"_t":"LaborConfig","_id":66,"Labor":66,"LaborExp":1870,"IncomeCoefficient":68},
+{"_t":"LaborConfig","_id":67,"Labor":67,"LaborExp":1880,"IncomeCoefficient":69},
+{"_t":"LaborConfig","_id":68,"Labor":68,"LaborExp":1890,"IncomeCoefficient":70},
+{"_t":"LaborConfig","_id":69,"Labor":69,"LaborExp":1900,"IncomeCoefficient":71},
+{"_t":"LaborConfig","_id":70,"Labor":70,"LaborExp":1910,"IncomeCoefficient":72},
+{"_t":"LaborConfig","_id":71,"Labor":71,"LaborExp":1920,"IncomeCoefficient":73},
+{"_t":"LaborConfig","_id":72,"Labor":72,"LaborExp":1930,"IncomeCoefficient":74},
+{"_t":"LaborConfig","_id":73,"Labor":73,"LaborExp":1940,"IncomeCoefficient":75},
+{"_t":"LaborConfig","_id":74,"Labor":74,"LaborExp":1950,"IncomeCoefficient":76},
+{"_t":"LaborConfig","_id":75,"Labor":75,"LaborExp":1960,"IncomeCoefficient":77},
+{"_t":"LaborConfig","_id":76,"Labor":76,"LaborExp":1970,"IncomeCoefficient":78},
+{"_t":"LaborConfig","_id":77,"Labor":77,"LaborExp":1980,"IncomeCoefficient":79},
+{"_t":"LaborConfig","_id":78,"Labor":78,"LaborExp":1990,"IncomeCoefficient":80},
+{"_t":"LaborConfig","_id":79,"Labor":79,"LaborExp":2000,"IncomeCoefficient":81},
+{"_t":"LaborConfig","_id":80,"Labor":80,"LaborExp":2000,"IncomeCoefficient":82},
+{"_t":"LaborConfig","_id":81,"Labor":81,"LaborExp":2010,"IncomeCoefficient":83},
+{"_t":"LaborConfig","_id":82,"Labor":82,"LaborExp":2020,"IncomeCoefficient":84},
+{"_t":"LaborConfig","_id":83,"Labor":83,"LaborExp":2030,"IncomeCoefficient":85},
+{"_t":"LaborConfig","_id":84,"Labor":84,"LaborExp":2040,"IncomeCoefficient":86},
+{"_t":"LaborConfig","_id":85,"Labor":85,"LaborExp":2040,"IncomeCoefficient":87},
+{"_t":"LaborConfig","_id":86,"Labor":86,"LaborExp":2050,"IncomeCoefficient":88},
+{"_t":"LaborConfig","_id":87,"Labor":87,"LaborExp":2060,"IncomeCoefficient":89},
+{"_t":"LaborConfig","_id":88,"Labor":88,"LaborExp":2070,"IncomeCoefficient":90},
+{"_t":"LaborConfig","_id":89,"Labor":89,"LaborExp":2070,"IncomeCoefficient":91},
+{"_t":"LaborConfig","_id":90,"Labor":90,"LaborExp":2080,"IncomeCoefficient":92},
+{"_t":"LaborConfig","_id":91,"Labor":91,"LaborExp":2090,"IncomeCoefficient":93},
+{"_t":"LaborConfig","_id":92,"Labor":92,"LaborExp":2100,"IncomeCoefficient":94},
+{"_t":"LaborConfig","_id":93,"Labor":93,"LaborExp":2100,"IncomeCoefficient":95},
+{"_t":"LaborConfig","_id":94,"Labor":94,"LaborExp":2110,"IncomeCoefficient":96},
+{"_t":"LaborConfig","_id":95,"Labor":95,"LaborExp":2120,"IncomeCoefficient":97},
+{"_t":"LaborConfig","_id":96,"Labor":96,"LaborExp":2120,"IncomeCoefficient":98},
+{"_t":"LaborConfig","_id":97,"Labor":97,"LaborExp":2130,"IncomeCoefficient":99},
+{"_t":"LaborConfig","_id":98,"Labor":98,"LaborExp":2140,"IncomeCoefficient":100},
+{"_t":"LaborConfig","_id":99,"Labor":99,"LaborExp":2140,"IncomeCoefficient":101},
+{"_t":"LaborConfig","_id":100,"Labor":100,"LaborExp":2150,"IncomeCoefficient":102},
+]}
diff --git a/Excel/Json/s/LifeExpConfig.txt b/Excel/Json/s/LifeExpConfig.txt
new file mode 100644
index 0000000..8fcd668
--- /dev/null
+++ b/Excel/Json/s/LifeExpConfig.txt
@@ -0,0 +1,122 @@
+{"list":[
+{"_t":"LifeExpConfig","_id":1,"Life":1,"LifeExp":100},
+{"_t":"LifeExpConfig","_id":2,"Life":2,"LifeExp":200},
+{"_t":"LifeExpConfig","_id":3,"Life":3,"LifeExp":300},
+{"_t":"LifeExpConfig","_id":4,"Life":4,"LifeExp":400},
+{"_t":"LifeExpConfig","_id":5,"Life":5,"LifeExp":500},
+{"_t":"LifeExpConfig","_id":6,"Life":6,"LifeExp":600},
+{"_t":"LifeExpConfig","_id":7,"Life":7,"LifeExp":700},
+{"_t":"LifeExpConfig","_id":8,"Life":8,"LifeExp":800},
+{"_t":"LifeExpConfig","_id":9,"Life":9,"LifeExp":900},
+{"_t":"LifeExpConfig","_id":10,"Life":10,"LifeExp":1000},
+{"_t":"LifeExpConfig","_id":11,"Life":11,"LifeExp":1100},
+{"_t":"LifeExpConfig","_id":12,"Life":12,"LifeExp":1200},
+{"_t":"LifeExpConfig","_id":13,"Life":13,"LifeExp":1300},
+{"_t":"LifeExpConfig","_id":14,"Life":14,"LifeExp":1400},
+{"_t":"LifeExpConfig","_id":15,"Life":15,"LifeExp":1500},
+{"_t":"LifeExpConfig","_id":16,"Life":16,"LifeExp":1600},
+{"_t":"LifeExpConfig","_id":17,"Life":17,"LifeExp":1700},
+{"_t":"LifeExpConfig","_id":18,"Life":18,"LifeExp":1800},
+{"_t":"LifeExpConfig","_id":19,"Life":19,"LifeExp":1900},
+{"_t":"LifeExpConfig","_id":20,"Life":20,"LifeExp":2000},
+{"_t":"LifeExpConfig","_id":21,"Life":21,"LifeExp":2100},
+{"_t":"LifeExpConfig","_id":22,"Life":22,"LifeExp":2200},
+{"_t":"LifeExpConfig","_id":23,"Life":23,"LifeExp":2300},
+{"_t":"LifeExpConfig","_id":24,"Life":24,"LifeExp":2400},
+{"_t":"LifeExpConfig","_id":25,"Life":25,"LifeExp":2500},
+{"_t":"LifeExpConfig","_id":26,"Life":26,"LifeExp":2600},
+{"_t":"LifeExpConfig","_id":27,"Life":27,"LifeExp":2700},
+{"_t":"LifeExpConfig","_id":28,"Life":28,"LifeExp":2800},
+{"_t":"LifeExpConfig","_id":29,"Life":29,"LifeExp":2900},
+{"_t":"LifeExpConfig","_id":30,"Life":30,"LifeExp":3000},
+{"_t":"LifeExpConfig","_id":31,"Life":31,"LifeExp":3100},
+{"_t":"LifeExpConfig","_id":32,"Life":32,"LifeExp":3200},
+{"_t":"LifeExpConfig","_id":33,"Life":33,"LifeExp":3300},
+{"_t":"LifeExpConfig","_id":34,"Life":34,"LifeExp":3400},
+{"_t":"LifeExpConfig","_id":35,"Life":35,"LifeExp":3500},
+{"_t":"LifeExpConfig","_id":36,"Life":36,"LifeExp":3600},
+{"_t":"LifeExpConfig","_id":37,"Life":37,"LifeExp":3700},
+{"_t":"LifeExpConfig","_id":38,"Life":38,"LifeExp":3800},
+{"_t":"LifeExpConfig","_id":39,"Life":39,"LifeExp":3900},
+{"_t":"LifeExpConfig","_id":40,"Life":40,"LifeExp":4000},
+{"_t":"LifeExpConfig","_id":41,"Life":41,"LifeExp":4100},
+{"_t":"LifeExpConfig","_id":42,"Life":42,"LifeExp":4200},
+{"_t":"LifeExpConfig","_id":43,"Life":43,"LifeExp":4300},
+{"_t":"LifeExpConfig","_id":44,"Life":44,"LifeExp":4400},
+{"_t":"LifeExpConfig","_id":45,"Life":45,"LifeExp":4500},
+{"_t":"LifeExpConfig","_id":46,"Life":46,"LifeExp":4600},
+{"_t":"LifeExpConfig","_id":47,"Life":47,"LifeExp":4700},
+{"_t":"LifeExpConfig","_id":48,"Life":48,"LifeExp":4800},
+{"_t":"LifeExpConfig","_id":49,"Life":49,"LifeExp":4900},
+{"_t":"LifeExpConfig","_id":50,"Life":50,"LifeExp":5000},
+{"_t":"LifeExpConfig","_id":51,"Life":51,"LifeExp":5100},
+{"_t":"LifeExpConfig","_id":52,"Life":52,"LifeExp":5200},
+{"_t":"LifeExpConfig","_id":53,"Life":53,"LifeExp":5300},
+{"_t":"LifeExpConfig","_id":54,"Life":54,"LifeExp":5400},
+{"_t":"LifeExpConfig","_id":55,"Life":55,"LifeExp":5500},
+{"_t":"LifeExpConfig","_id":56,"Life":56,"LifeExp":5600},
+{"_t":"LifeExpConfig","_id":57,"Life":57,"LifeExp":5700},
+{"_t":"LifeExpConfig","_id":58,"Life":58,"LifeExp":5800},
+{"_t":"LifeExpConfig","_id":59,"Life":59,"LifeExp":5900},
+{"_t":"LifeExpConfig","_id":60,"Life":60,"LifeExp":6000},
+{"_t":"LifeExpConfig","_id":61,"Life":61,"LifeExp":6100},
+{"_t":"LifeExpConfig","_id":62,"Life":62,"LifeExp":6200},
+{"_t":"LifeExpConfig","_id":63,"Life":63,"LifeExp":6300},
+{"_t":"LifeExpConfig","_id":64,"Life":64,"LifeExp":6400},
+{"_t":"LifeExpConfig","_id":65,"Life":65,"LifeExp":6500},
+{"_t":"LifeExpConfig","_id":66,"Life":66,"LifeExp":6600},
+{"_t":"LifeExpConfig","_id":67,"Life":67,"LifeExp":6700},
+{"_t":"LifeExpConfig","_id":68,"Life":68,"LifeExp":6800},
+{"_t":"LifeExpConfig","_id":69,"Life":69,"LifeExp":6900},
+{"_t":"LifeExpConfig","_id":70,"Life":70,"LifeExp":7000},
+{"_t":"LifeExpConfig","_id":71,"Life":71,"LifeExp":7100},
+{"_t":"LifeExpConfig","_id":72,"Life":72,"LifeExp":7200},
+{"_t":"LifeExpConfig","_id":73,"Life":73,"LifeExp":7300},
+{"_t":"LifeExpConfig","_id":74,"Life":74,"LifeExp":7400},
+{"_t":"LifeExpConfig","_id":75,"Life":75,"LifeExp":7500},
+{"_t":"LifeExpConfig","_id":76,"Life":76,"LifeExp":7600},
+{"_t":"LifeExpConfig","_id":77,"Life":77,"LifeExp":7700},
+{"_t":"LifeExpConfig","_id":78,"Life":78,"LifeExp":7800},
+{"_t":"LifeExpConfig","_id":79,"Life":79,"LifeExp":7900},
+{"_t":"LifeExpConfig","_id":80,"Life":80,"LifeExp":8000},
+{"_t":"LifeExpConfig","_id":81,"Life":81,"LifeExp":8100},
+{"_t":"LifeExpConfig","_id":82,"Life":82,"LifeExp":8200},
+{"_t":"LifeExpConfig","_id":83,"Life":83,"LifeExp":8300},
+{"_t":"LifeExpConfig","_id":84,"Life":84,"LifeExp":8400},
+{"_t":"LifeExpConfig","_id":85,"Life":85,"LifeExp":8500},
+{"_t":"LifeExpConfig","_id":86,"Life":86,"LifeExp":8600},
+{"_t":"LifeExpConfig","_id":87,"Life":87,"LifeExp":8700},
+{"_t":"LifeExpConfig","_id":88,"Life":88,"LifeExp":8800},
+{"_t":"LifeExpConfig","_id":89,"Life":89,"LifeExp":8900},
+{"_t":"LifeExpConfig","_id":90,"Life":90,"LifeExp":9000},
+{"_t":"LifeExpConfig","_id":91,"Life":91,"LifeExp":9100},
+{"_t":"LifeExpConfig","_id":92,"Life":92,"LifeExp":9200},
+{"_t":"LifeExpConfig","_id":93,"Life":93,"LifeExp":9300},
+{"_t":"LifeExpConfig","_id":94,"Life":94,"LifeExp":9400},
+{"_t":"LifeExpConfig","_id":95,"Life":95,"LifeExp":9500},
+{"_t":"LifeExpConfig","_id":96,"Life":96,"LifeExp":9600},
+{"_t":"LifeExpConfig","_id":97,"Life":97,"LifeExp":9700},
+{"_t":"LifeExpConfig","_id":98,"Life":98,"LifeExp":9800},
+{"_t":"LifeExpConfig","_id":99,"Life":99,"LifeExp":9900},
+{"_t":"LifeExpConfig","_id":100,"Life":100,"LifeExp":10000},
+{"_t":"LifeExpConfig","_id":101,"Life":101,"LifeExp":10100},
+{"_t":"LifeExpConfig","_id":102,"Life":102,"LifeExp":10200},
+{"_t":"LifeExpConfig","_id":103,"Life":103,"LifeExp":10300},
+{"_t":"LifeExpConfig","_id":104,"Life":104,"LifeExp":10400},
+{"_t":"LifeExpConfig","_id":105,"Life":105,"LifeExp":10500},
+{"_t":"LifeExpConfig","_id":106,"Life":106,"LifeExp":10600},
+{"_t":"LifeExpConfig","_id":107,"Life":107,"LifeExp":10700},
+{"_t":"LifeExpConfig","_id":108,"Life":108,"LifeExp":10800},
+{"_t":"LifeExpConfig","_id":109,"Life":109,"LifeExp":10900},
+{"_t":"LifeExpConfig","_id":110,"Life":110,"LifeExp":11000},
+{"_t":"LifeExpConfig","_id":111,"Life":111,"LifeExp":11100},
+{"_t":"LifeExpConfig","_id":112,"Life":112,"LifeExp":11200},
+{"_t":"LifeExpConfig","_id":113,"Life":113,"LifeExp":11300},
+{"_t":"LifeExpConfig","_id":114,"Life":114,"LifeExp":11400},
+{"_t":"LifeExpConfig","_id":115,"Life":115,"LifeExp":11500},
+{"_t":"LifeExpConfig","_id":116,"Life":116,"LifeExp":11600},
+{"_t":"LifeExpConfig","_id":117,"Life":117,"LifeExp":11700},
+{"_t":"LifeExpConfig","_id":118,"Life":118,"LifeExp":11800},
+{"_t":"LifeExpConfig","_id":119,"Life":119,"LifeExp":11900},
+{"_t":"LifeExpConfig","_id":120,"Life":120,"LifeExp":12000},
+]}
diff --git a/Excel/Json/s/PhysiqueConfig.txt b/Excel/Json/s/PhysiqueConfig.txt
new file mode 100644
index 0000000..cd8f2f4
--- /dev/null
+++ b/Excel/Json/s/PhysiqueConfig.txt
@@ -0,0 +1,17 @@
+{"list":[
+{"_t":"PhysiqueConfig","_id":1,"Lv":1,"Exp":60,"Section":1,"LifeMin":30,"LifeMax":50,"LaborExpCoefficient":11,"DiseaseRecovery":46,"DiseaseWorsen":48,"DiseaseRelief":7},
+{"_t":"PhysiqueConfig","_id":2,"Lv":2,"Exp":480,"Section":1,"LifeMin":30,"LifeMax":50,"LaborExpCoefficient":12,"DiseaseRecovery":52,"DiseaseWorsen":46,"DiseaseRelief":9},
+{"_t":"PhysiqueConfig","_id":3,"Lv":3,"Exp":1620,"Section":1,"LifeMin":30,"LifeMax":50,"LaborExpCoefficient":13,"DiseaseRecovery":58,"DiseaseWorsen":44,"DiseaseRelief":11},
+{"_t":"PhysiqueConfig","_id":4,"Lv":4,"Exp":3840,"Section":2,"LifeMin":51,"LifeMax":60,"LaborExpCoefficient":14,"DiseaseRecovery":64,"DiseaseWorsen":42,"DiseaseRelief":13},
+{"_t":"PhysiqueConfig","_id":5,"Lv":5,"Exp":7500,"Section":2,"LifeMin":51,"LifeMax":60,"LaborExpCoefficient":15,"DiseaseRecovery":70,"DiseaseWorsen":40,"DiseaseRelief":15},
+{"_t":"PhysiqueConfig","_id":6,"Lv":6,"Exp":12960,"Section":2,"LifeMin":51,"LifeMax":60,"LaborExpCoefficient":16,"DiseaseRecovery":76,"DiseaseWorsen":38,"DiseaseRelief":17},
+{"_t":"PhysiqueConfig","_id":7,"Lv":7,"Exp":20580,"Section":3,"LifeMin":61,"LifeMax":75,"LaborExpCoefficient":17,"DiseaseRecovery":82,"DiseaseWorsen":36,"DiseaseRelief":19},
+{"_t":"PhysiqueConfig","_id":8,"Lv":8,"Exp":30720,"Section":3,"LifeMin":61,"LifeMax":75,"LaborExpCoefficient":18,"DiseaseRecovery":88,"DiseaseWorsen":34,"DiseaseRelief":21},
+{"_t":"PhysiqueConfig","_id":9,"Lv":9,"Exp":43740,"Section":3,"LifeMin":61,"LifeMax":75,"LaborExpCoefficient":19,"DiseaseRecovery":94,"DiseaseWorsen":32,"DiseaseRelief":23},
+{"_t":"PhysiqueConfig","_id":10,"Lv":10,"Exp":60000,"Section":4,"LifeMin":76,"LifeMax":89,"LaborExpCoefficient":20,"DiseaseRecovery":100,"DiseaseWorsen":30,"DiseaseRelief":25},
+{"_t":"PhysiqueConfig","_id":11,"Lv":11,"Exp":79860,"Section":4,"LifeMin":76,"LifeMax":89,"LaborExpCoefficient":21,"DiseaseRecovery":106,"DiseaseWorsen":28,"DiseaseRelief":27},
+{"_t":"PhysiqueConfig","_id":12,"Lv":12,"Exp":103680,"Section":4,"LifeMin":76,"LifeMax":89,"LaborExpCoefficient":22,"DiseaseRecovery":112,"DiseaseWorsen":26,"DiseaseRelief":29},
+{"_t":"PhysiqueConfig","_id":13,"Lv":13,"Exp":131820,"Section":5,"LifeMin":90,"LifeMax":120,"LaborExpCoefficient":23,"DiseaseRecovery":118,"DiseaseWorsen":24,"DiseaseRelief":31},
+{"_t":"PhysiqueConfig","_id":14,"Lv":14,"Exp":164640,"Section":5,"LifeMin":90,"LifeMax":120,"LaborExpCoefficient":24,"DiseaseRecovery":124,"DiseaseWorsen":22,"DiseaseRelief":33},
+{"_t":"PhysiqueConfig","_id":15,"Lv":15,"Exp":202500,"Section":5,"LifeMin":90,"LifeMax":120,"LaborExpCoefficient":25,"DiseaseRecovery":130,"DiseaseWorsen":20,"DiseaseRelief":35},
+]}
diff --git a/Excel/Json/s/SeasonConfig.txt b/Excel/Json/s/SeasonConfig.txt
index 2b920fb..6e43842 100644
--- a/Excel/Json/s/SeasonConfig.txt
+++ b/Excel/Json/s/SeasonConfig.txt
@@ -1,7 +1,15 @@
 {"list":[
-{"_t":"SeasonConfig","_id":1,"Name":"æ–°","Type":2,"Duration":3,"DayTime":[530,1730],"Description":"","Picture":""},
-{"_t":"SeasonConfig","_id":2,"Name":"æ˜¥","Type":1,"Duration":8,"DayTime":[530,1730],"Description":"","Picture":""},
-{"_t":"SeasonConfig","_id":3,"Name":"å¤�","Type":1,"Duration":8,"DayTime":[500,1700],"Description":"","Picture":""},
-{"_t":"SeasonConfig","_id":4,"Name":"ç§‹","Type":1,"Duration":8,"DayTime":[600,1800],"Description":"","Picture":""},
-{"_t":"SeasonConfig","_id":5,"Name":"å†¬","Type":1,"Duration":8,"DayTime":[700,1900],"Description":"","Picture":""},
+{"_t":"SeasonConfig","_id":1,"Name":"æ˜¥","Tapy":1,"Stage":1,"Duration":8,"DayTime":[530,1730],"WeatherGroup":[1,2],"Weights":[10,1],"Description":"","Picture":""},
+{"_t":"SeasonConfig","_id":2,"Name":"æ˜¥","Tapy":1,"Stage":2,"Duration":8,"DayTime":[530,1730],"WeatherGroup":[2,6],"Weights":[2,1],"Description":"","Picture":""},
+{"_t":"SeasonConfig","_id":3,"Name":"å¤�","Tapy":2,"Stage":2,"Duration":8,"DayTime":[500,1700],"WeatherGroup":[1,3],"Weights":[2,1],"Description":"","Picture":""},
+{"_t":"SeasonConfig","_id":4,"Name":"ç§‹","Tapy":3,"Stage":2,"Duration":8,"DayTime":[600,1800],"WeatherGroup":[1,2],"Weights":[2,1],"Description":"","Picture":""},
+{"_t":"SeasonConfig","_id":5,"Name":"å†¬","Tapy":4,"Stage":2,"Duration":8,"DayTime":[700,1900],"WeatherGroup":[2,7],"Weights":[2,1],"Description":"","Picture":""},
+{"_t":"SeasonConfig","_id":6,"Name":"æ˜¥","Tapy":1,"Stage":3,"Duration":8,"DayTime":[530,1730],"WeatherGroup":[1,2,7,11],"Weights":[30,20,10,5],"Description":"","Picture":""},
+{"_t":"SeasonConfig","_id":7,"Name":"å¤�","Tapy":2,"Stage":3,"Duration":8,"DayTime":[500,1700],"WeatherGroup":[3,4,6,5],"Weights":[30,20,10,5],"Description":"","Picture":""},
+{"_t":"SeasonConfig","_id":8,"Name":"ç§‹","Tapy":3,"Stage":3,"Duration":8,"DayTime":[600,1800],"WeatherGroup":[1,2,10],"Weights":[20,20,5],"Description":"","Picture":""},
+{"_t":"SeasonConfig","_id":9,"Name":"å†¬","Tapy":4,"Stage":3,"Duration":8,"DayTime":[700,1900],"WeatherGroup":[1,9,7,8],"Weights":[2,2,2,1],"Description":"","Picture":""},
+{"_t":"SeasonConfig","_id":10,"Name":"æ˜¥","Tapy":1,"Stage":4,"Duration":8,"DayTime":[530,1730],"WeatherGroup":[1,2,7,11],"Weights":[30,20,10,5],"Description":"","Picture":""},
+{"_t":"SeasonConfig","_id":11,"Name":"å¤�","Tapy":2,"Stage":4,"Duration":8,"DayTime":[500,1700],"WeatherGroup":[3,4,6,5],"Weights":[30,20,10,5],"Description":"","Picture":""},
+{"_t":"SeasonConfig","_id":12,"Name":"ç§‹","Tapy":3,"Stage":4,"Duration":8,"DayTime":[600,1800],"WeatherGroup":[1,2,10],"Weights":[20,20,5],"Description":"","Picture":""},
+{"_t":"SeasonConfig","_id":13,"Name":"å†¬","Tapy":4,"Stage":4,"Duration":8,"DayTime":[700,1900],"WeatherGroup":[1,9,7,8],"Weights":[2,2,2,1],"Description":"","Picture":""},
 ]}
diff --git a/Excel/Json/s/WeatherConfig.txt b/Excel/Json/s/WeatherConfig.txt
new file mode 100644
index 0000000..a0e8ec4
--- /dev/null
+++ b/Excel/Json/s/WeatherConfig.txt
@@ -0,0 +1,13 @@
+{"list":[
+{"_t":"WeatherConfig","_id":1,"Name":"å¤§é£Ž","Disease":200,"Injury":0,"DurableDestroy":2,"LaborVariety":0,"Duration":[5,10],"CD":[2,3],"WeaterEffect":"","SpecialEfficacyCD":[10,15],"ICON":"","Describe":""},
+{"_t":"WeatherConfig","_id":2,"Name":"å°�é›¨","Disease":250,"Injury":0,"DurableDestroy":1,"LaborVariety":1,"Duration":[20,30],"CD":[2,3],"WeaterEffect":"","SpecialEfficacyCD":[0],"ICON":"","Describe":""},
+{"_t":"WeatherConfig","_id":3,"Name":"æš´é›¨","Disease":300,"Injury":0,"DurableDestroy":3,"LaborVariety":2,"Duration":[10,20],"CD":[2,3],"WeaterEffect":"","SpecialEfficacyCD":[0],"ICON":"","Describe":""},
+{"_t":"WeatherConfig","_id":4,"Name":"é›·é›¨","Disease":350,"Injury":0,"DurableDestroy":5,"LaborVariety":3,"Duration":[5,10],"CD":[2,3],"WeaterEffect":"","SpecialEfficacyCD":[0],"ICON":"","Describe":""},
+{"_t":"WeatherConfig","_id":5,"Name":"å†°é›¹","Disease":300,"Injury":200,"DurableDestroy":15,"LaborVariety":3,"Duration":[3,5],"CD":[2,3],"WeaterEffect":"","SpecialEfficacyCD":[0],"ICON":"","Describe":""},
+{"_t":"WeatherConfig","_id":6,"Name":"é«˜æ¸©","Disease":400,"Injury":0,"DurableDestroy":0,"LaborVariety":3,"Duration":[50,100],"CD":[2,3],"WeaterEffect":"","SpecialEfficacyCD":[10,15],"ICON":"","Describe":""},
+{"_t":"WeatherConfig","_id":7,"Name":"é›ª","Disease":400,"Injury":0,"DurableDestroy":5,"LaborVariety":3,"Duration":[10,20],"CD":[2,3],"WeaterEffect":"","SpecialEfficacyCD":[0],"ICON":"","Describe":""},
+{"_t":"WeatherConfig","_id":8,"Name":"æš´é›ª","Disease":500,"Injury":0,"DurableDestroy":10,"LaborVariety":5,"Duration":[5,10],"CD":[2,3],"WeaterEffect":"","SpecialEfficacyCD":[0],"ICON":"","Describe":""},
+{"_t":"WeatherConfig","_id":9,"Name":"å¯’æµ�","Disease":400,"Injury":0,"DurableDestroy":0,"LaborVariety":4,"Duration":[5,10],"CD":[2,3],"WeaterEffect":"","SpecialEfficacyCD":[20,40],"ICON":"","Describe":"éš�æœºæ�‘æ°‘é¢¤æŠ–"},
+{"_t":"WeatherConfig","_id":10,"Name":"åœ°éœ‡","Disease":0,"Injury":300,"DurableDestroy":30,"LaborVariety":10,"Duration":[3,5],"CD":[30],"WeaterEffect":"","SpecialEfficacyCD":[5,10],"ICON":"","Describe":""},
+{"_t":"WeatherConfig","_id":11,"Name":"æµ�æ„Ÿ","Disease":700,"Injury":0,"DurableDestroy":0,"LaborVariety":0,"Duration":[10,20],"CD":[2,3],"WeaterEffect":"","SpecialEfficacyCD":[10,20],"ICON":"","Describe":"éš�æœºæ�‘æ°‘æ‰“å–·åš�"},
+]}
diff --git a/Excel/LaborConfig.xlsx b/Excel/LaborConfig.xlsx
new file mode 100644
index 0000000..35ce6cf
Binary files /dev/null and b/Excel/LaborConfig.xlsx differ
diff --git a/Excel/LifeExpConfig.xlsx b/Excel/LifeExpConfig.xlsx
new file mode 100644
index 0000000..725bdf0
Binary files /dev/null and b/Excel/LifeExpConfig.xlsx differ
diff --git a/Excel/PhysiqueConfig.xlsx b/Excel/PhysiqueConfig.xlsx
new file mode 100644
index 0000000..33523c8
Binary files /dev/null and b/Excel/PhysiqueConfig.xlsx differ
diff --git a/Excel/SeasonConfig.xlsx b/Excel/SeasonConfig.xlsx
index a502f53..384a950 100644
Binary files a/Excel/SeasonConfig.xlsx and b/Excel/SeasonConfig.xlsx differ
diff --git a/Excel/WeatherConfig.xlsx b/Excel/WeatherConfig.xlsx
new file mode 100644
index 0000000..0edf8b1
Binary files /dev/null and b/Excel/WeatherConfig.xlsx differ
diff --git a/Proto/OuterMessage.proto b/Proto/OuterMessage.proto
index b8f9c15..ae34ad2 100644
--- a/Proto/OuterMessage.proto
+++ b/Proto/OuterMessage.proto
@@ -1200,11 +1200,12 @@ message M2C_ConstructFinish // IActorLocationResponse
 message FarmlandProto
 {
 	int64 id = 1;
-	int32 SeedCfgId = 2;
+	int32 CropCfgId = 2;
 	int32 PlantCfgId = 3;
 	int32 Duration = 4;
 	int32 ExProduct = 5;
 	int32 FarmlandState = 6;
+	long  PeopleId = 7;
 }
 
 //ResponseType M2C_FarmlandPlant
@@ -1285,3 +1286,33 @@ message M2C_CheatItemList // IActorLocationResponse
   int32 Error = 91;
   string Message = 92;
 }
+
+//ResponseType M2C_GoFarmlandPlant
+message C2M_GoFarmlandPlant // IActorLocationRequest
+{
+  int32 RpcId = 90;
+  int64 FarmlandId = 1 ;
+  int64 PeopleId = 2;
+}
+
+message M2C_GoFarmlandPlant // IActorLocationResponse
+{
+  int32 RpcId = 90;
+  int32 Error = 91;
+  string Message = 92;
+}
+
+//ResponseType M2C_GoFarmlandHarvest
+message C2M_GoFarmlandHarvest // IActorLocationRequest
+{
+  int32 RpcId = 90;
+  int64 FarmlandId = 1 ;
+  int64 PeopleId = 2;
+}
+
+message M2C_GoFarmlandHarvest // IActorLocationResponse
+{
+  int32 RpcId = 90;
+  int32 Error = 91;
+  string Message = 92;
+}
diff --git a/Server/Hotfix/Demo/Farmland/Handler/C2M_GoFarmlandHarvestHandler.cs b/Server/Hotfix/Demo/Farmland/Handler/C2M_GoFarmlandHarvestHandler.cs
new file mode 100644
index 0000000..702a8fd
--- /dev/null
+++ b/Server/Hotfix/Demo/Farmland/Handler/C2M_GoFarmlandHarvestHandler.cs
@@ -0,0 +1,44 @@
+ï»¿using System;
+
+namespace ET
+{
+   
+    [FriendClass(typeof(Unit))]
+    public class C2M_GoFarmlandHarvestHandler: AMActorLocationRpcHandler<Unit, C2M_GoFarmlandHarvest, M2C_GoFarmlandHarvest>
+    {
+        
+        protected override async ETTask Run(Unit unit, C2M_GoFarmlandHarvest request, M2C_GoFarmlandHarvest response, Action reply)
+        {
+            try
+            {
+                var people = unit.GetComponent<PeopleComponent>().GetChild<People>(request.PeopleId);
+                if (people == null)
+                {
+                    response.Error = ErrorCode.ERR_PeopleNotFound;
+                }
+                else
+                {
+                    Farmland farmland;
+                    if (unit.FarmlandDic.TryGetValue(request.FarmlandId, out farmland))
+                    {
+                        response.Error=FarmlandOperate.GoHarvest(unit,farmland, people);
+                    }
+                    else
+                    {
+                        response.Error = ErrorCode.ERR_FarmlandNotFound;
+                    }
+                }
+                reply();
+            }
+            catch (Exception e)
+            {
+                response.Message = e.ToString();
+                response.Error = ErrorCode.ERR_OperateFail;
+                reply();
+                throw;
+            }
+
+            await ETTask.CompletedTask;
+        }
+    }
+}
\ No newline at end of file
diff --git a/Server/Hotfix/Demo/Farmland/Handler/C2M_GoFarmlandPlantHandler.cs b/Server/Hotfix/Demo/Farmland/Handler/C2M_GoFarmlandPlantHandler.cs
new file mode 100644
index 0000000..382dabb
--- /dev/null
+++ b/Server/Hotfix/Demo/Farmland/Handler/C2M_GoFarmlandPlantHandler.cs
@@ -0,0 +1,45 @@
+ï»¿using System;
+
+namespace ET
+{
+
+    [FriendClass(typeof (Unit))]
+    public class C2M_GoFarmlandPlantHandler: AMActorLocationRpcHandler<Unit, C2M_GoFarmlandPlant, M2C_GoFarmlandPlant>
+    {
+
+        protected override async ETTask Run(Unit unit, C2M_GoFarmlandPlant request, M2C_GoFarmlandPlant response, Action reply)
+        {
+            try
+            {
+                var people = unit.GetComponent<PeopleComponent>().GetChild<People>(request.PeopleId);
+                if (people == null)
+                {
+                    response.Error = ErrorCode.ERR_PeopleNotFound;
+                }
+                else
+                {
+                    Farmland farmland;
+                    if (unit.FarmlandDic.TryGetValue(request.FarmlandId, out farmland))
+                    {
+                        response.Error = FarmlandOperate.GoPlant(unit, farmland, people);
+                    }
+                    else
+                    {
+                        response.Error = ErrorCode.ERR_FarmlandNotFound;
+                    }
+                }
+
+                reply();
+            }
+            catch (Exception e)
+            {
+                response.Message = e.ToString();
+                response.Error = ErrorCode.ERR_OperateFail;
+                reply();
+                throw;
+            }
+
+            await ETTask.CompletedTask;
+        }
+    }
+}
\ No newline at end of file
diff --git a/Server/Model/Generate/Config/LaborConfig.cs b/Server/Model/Generate/Config/LaborConfig.cs
new file mode 100644
index 0000000..0e386ca
--- /dev/null
+++ b/Server/Model/Generate/Config/LaborConfig.cs
@@ -0,0 +1,97 @@
+using System;
+using System.Collections.Generic;
+using MongoDB.Bson.Serialization.Attributes;
+using ProtoBuf;
+
+namespace ET
+{
+    [ProtoContract]
+    [Config]
+    public partial class LaborConfigCategory : ProtoObject, IMerge
+    {
+        public static LaborConfigCategory Instance;
+		
+        [ProtoIgnore]
+        [BsonIgnore]
+        private Dictionary<int, LaborConfig> dict = new Dictionary<int, LaborConfig>();
+		
+        [BsonElement]
+        [ProtoMember(1)]
+        private List<LaborConfig> list = new List<LaborConfig>();
+		
+        public LaborConfigCategory()
+        {
+            Instance = this;
+        }
+        
+        public void Merge(object o)
+        {
+            LaborConfigCategory s = o as LaborConfigCategory;
+            this.list.AddRange(s.list);
+        }
+		
+        public override void EndInit()
+        {
+            foreach (LaborConfig config in list)
+            {
+                config.EndInit();
+                this.dict.Add(config.Id, config);
+            }            
+            this.AfterEndInit();
+        }
+		
+        public LaborConfig Get(int id)
+        {
+            this.dict.TryGetValue(id, out LaborConfig item);
+
+            if (item == null)
+            {
+                throw new Exception($"é…�ç½®æ‰¾ä¸�åˆ°ï¼Œé…�ç½®è¡¨å��: {nameof (LaborConfig)}ï¼Œé…�ç½®id: {id}");
+            }
+
+            return item;
+        }
+		
+        public bool Contain(int id)
+        {
+            return this.dict.ContainsKey(id);
+        }
+
+        public Dictionary<int, LaborConfig> GetAll()
+        {
+            return this.dict;
+        }
+        
+        public List<LaborConfig> GetList()
+        {
+            return this.list;
+        }
+
+        public LaborConfig GetOne()
+        {
+            if (this.dict == null || this.dict.Count <= 0)
+            {
+                return null;
+            }
+            return this.dict.Values.GetEnumerator().Current;
+        }
+    }
+
+    [ProtoContract]
+	public partial class LaborConfig: ProtoObject, IConfig
+	{
+		/// <summary>ç¼–å�·</summary>
+		[ProtoMember(1)]
+		public int Id { get; set; }
+		/// <summary>åŠ³åŠ›å€¼</summary>
+		[ProtoMember(2)]
+		public int Labor { get; set; }
+		/// <summary>åŠ³åŠ›ç»�éªŒ</summary>
+		[ProtoMember(3)]
+		public int LaborExp { get; set; }
+		/// <summary>åŠ³ä½œæ”¶ç›Šç³»æ•°</summary>
+		[ProtoMember(4)]
+		public int IncomeCoefficient { get; set; }
+
+	}
+}
diff --git a/Server/Model/Generate/Config/LifeExpConfig.cs b/Server/Model/Generate/Config/LifeExpConfig.cs
new file mode 100644
index 0000000..dbc4c74
--- /dev/null
+++ b/Server/Model/Generate/Config/LifeExpConfig.cs
@@ -0,0 +1,94 @@
+using System;
+using System.Collections.Generic;
+using MongoDB.Bson.Serialization.Attributes;
+using ProtoBuf;
+
+namespace ET
+{
+    [ProtoContract]
+    [Config]
+    public partial class LifeExpConfigCategory : ProtoObject, IMerge
+    {
+        public static LifeExpConfigCategory Instance;
+		
+        [ProtoIgnore]
+        [BsonIgnore]
+        private Dictionary<int, LifeExpConfig> dict = new Dictionary<int, LifeExpConfig>();
+		
+        [BsonElement]
+        [ProtoMember(1)]
+        private List<LifeExpConfig> list = new List<LifeExpConfig>();
+		
+        public LifeExpConfigCategory()
+        {
+            Instance = this;
+        }
+        
+        public void Merge(object o)
+        {
+            LifeExpConfigCategory s = o as LifeExpConfigCategory;
+            this.list.AddRange(s.list);
+        }
+		
+        public override void EndInit()
+        {
+            foreach (LifeExpConfig config in list)
+            {
+                config.EndInit();
+                this.dict.Add(config.Id, config);
+            }            
+            this.AfterEndInit();
+        }
+		
+        public LifeExpConfig Get(int id)
+        {
+            this.dict.TryGetValue(id, out LifeExpConfig item);
+
+            if (item == null)
+            {
+                throw new Exception($"é…�ç½®æ‰¾ä¸�åˆ°ï¼Œé…�ç½®è¡¨å��: {nameof (LifeExpConfig)}ï¼Œé…�ç½®id: {id}");
+            }
+
+            return item;
+        }
+		
+        public bool Contain(int id)
+        {
+            return this.dict.ContainsKey(id);
+        }
+
+        public Dictionary<int, LifeExpConfig> GetAll()
+        {
+            return this.dict;
+        }
+        
+        public List<LifeExpConfig> GetList()
+        {
+            return this.list;
+        }
+
+        public LifeExpConfig GetOne()
+        {
+            if (this.dict == null || this.dict.Count <= 0)
+            {
+                return null;
+            }
+            return this.dict.Values.GetEnumerator().Current;
+        }
+    }
+
+    [ProtoContract]
+	public partial class LifeExpConfig: ProtoObject, IConfig
+	{
+		/// <summary>ç¼–å�·</summary>
+		[ProtoMember(1)]
+		public int Id { get; set; }
+		/// <summary>å¯¿å‘½</summary>
+		[ProtoMember(2)]
+		public int Life { get; set; }
+		/// <summary>å¯¿å‘½ç»�éªŒ</summary>
+		[ProtoMember(3)]
+		public int LifeExp { get; set; }
+
+	}
+}
diff --git a/Server/Model/Generate/Config/PhysiqueConfig.cs b/Server/Model/Generate/Config/PhysiqueConfig.cs
new file mode 100644
index 0000000..e85d21e
--- /dev/null
+++ b/Server/Model/Generate/Config/PhysiqueConfig.cs
@@ -0,0 +1,115 @@
+using System;
+using System.Collections.Generic;
+using MongoDB.Bson.Serialization.Attributes;
+using ProtoBuf;
+
+namespace ET
+{
+    [ProtoContract]
+    [Config]
+    public partial class PhysiqueConfigCategory : ProtoObject, IMerge
+    {
+        public static PhysiqueConfigCategory Instance;
+		
+        [ProtoIgnore]
+        [BsonIgnore]
+        private Dictionary<int, PhysiqueConfig> dict = new Dictionary<int, PhysiqueConfig>();
+		
+        [BsonElement]
+        [ProtoMember(1)]
+        private List<PhysiqueConfig> list = new List<PhysiqueConfig>();
+		
+        public PhysiqueConfigCategory()
+        {
+            Instance = this;
+        }
+        
+        public void Merge(object o)
+        {
+            PhysiqueConfigCategory s = o as PhysiqueConfigCategory;
+            this.list.AddRange(s.list);
+        }
+		
+        public override void EndInit()
+        {
+            foreach (PhysiqueConfig config in list)
+            {
+                config.EndInit();
+                this.dict.Add(config.Id, config);
+            }            
+            this.AfterEndInit();
+        }
+		
+        public PhysiqueConfig Get(int id)
+        {
+            this.dict.TryGetValue(id, out PhysiqueConfig item);
+
+            if (item == null)
+            {
+                throw new Exception($"é…�ç½®æ‰¾ä¸�åˆ°ï¼Œé…�ç½®è¡¨å��: {nameof (PhysiqueConfig)}ï¼Œé…�ç½®id: {id}");
+            }
+
+            return item;
+        }
+		
+        public bool Contain(int id)
+        {
+            return this.dict.ContainsKey(id);
+        }
+
+        public Dictionary<int, PhysiqueConfig> GetAll()
+        {
+            return this.dict;
+        }
+        
+        public List<PhysiqueConfig> GetList()
+        {
+            return this.list;
+        }
+
+        public PhysiqueConfig GetOne()
+        {
+            if (this.dict == null || this.dict.Count <= 0)
+            {
+                return null;
+            }
+            return this.dict.Values.GetEnumerator().Current;
+        }
+    }
+
+    [ProtoContract]
+	public partial class PhysiqueConfig: ProtoObject, IConfig
+	{
+		/// <summary>ç¼–å�·</summary>
+		[ProtoMember(1)]
+		public int Id { get; set; }
+		/// <summary>ä½“è´¨ç­‰çº§</summary>
+		[ProtoMember(2)]
+		public int Lv { get; set; }
+		/// <summary>ä½“è´¨ç»�éªŒ</summary>
+		[ProtoMember(3)]
+		public int Exp { get; set; }
+		/// <summary>ä½“è´¨æ®µ</summary>
+		[ProtoMember(4)]
+		public int Section { get; set; }
+		/// <summary>æœ€ä½Žå¯¿å‘½</summary>
+		[ProtoMember(5)]
+		public int LifeMin { get; set; }
+		/// <summary>æœ€é«˜å¯¿å‘½</summary>
+		[ProtoMember(6)]
+		public int LifeMax { get; set; }
+		/// <summary>åŠ³åŠ›ç»�éªŒç³»æ•°</summary>
+		[ProtoMember(7)]
+		public int LaborExpCoefficient { get; set; }
+		/// <summary>ä¼¤ç–¾æ�¢å¤�</summary>
+		[ProtoMember(8)]
+		public int DiseaseRecovery { get; set; }
+		/// <summary>ä¼¤ç–¾åŠ é‡�</summary>
+		[ProtoMember(9)]
+		public int DiseaseWorsen { get; set; }
+		/// <summary>ä¼¤ç—…å‡�å…�</summary>
+		[ProtoMember(10)]
+		public int DiseaseRelief { get; set; }
+
+	}
+}
diff --git a/Server/Model/Generate/Config/SeasonConfig.cs b/Server/Model/Generate/Config/SeasonConfig.cs
index d9becc4..46631b9 100644
--- a/Server/Model/Generate/Config/SeasonConfig.cs
+++ b/Server/Model/Generate/Config/SeasonConfig.cs
@@ -86,20 +86,29 @@ namespace ET
 		/// <summary>å­£èŠ‚å��ç§°</summary>
 		[ProtoMember(2)]
 		public string Name { get; set; }
-		/// <summary>ç±»åž‹</summary>
+		/// <summary>å­£èŠ‚ç±»åž‹</summary>
 		[ProtoMember(3)]
-		public int Type { get; set; }
-		/// <summary>æ—¶é•¿</summary>
+		public int Tapy { get; set; }
+		/// <summary>æ¸¸æˆ�é˜¶æ®µ</summary>
 		[ProtoMember(4)]
+		public int Stage { get; set; }
+		/// <summary>æ—¶é•¿</summary>
+		[ProtoMember(5)]
 		public int Duration { get; set; }
 		/// <summary>æ¯�æ—¥èµ·æ­¢æ—¶é—´</summary>
-		[ProtoMember(5)]
+		[ProtoMember(6)]
 		public int[] DayTime { get; set; }
+		/// <summary>å­£èŠ‚å¤©æ°”ç»„</summary>
+		[ProtoMember(7)]
+		public int[] WeatherGroup { get; set; }
+		/// <summary>å¤©æ°”æ�ƒé‡�</summary>
+		[ProtoMember(8)]
+		public int[] Weights { get; set; }
 		/// <summary>å­£èŠ‚æ��è¿°</summary>
-		[ProtoMember(6)]
+		[ProtoMember(9)]
 		public string Description { get; set; }
 		/// <summary>å­£èŠ‚å›¾ç‰‡</summary>
-		[ProtoMember(7)]
+		[ProtoMember(10)]
 		public string Picture { get; set; }
 
 	}
diff --git a/Server/Model/Generate/Config/WeatherConfig.cs b/Server/Model/Generate/Config/WeatherConfig.cs
new file mode 100644
index 0000000..a962316
--- /dev/null
+++ b/Server/Model/Generate/Config/WeatherConfig.cs
@@ -0,0 +1,121 @@
+using System;
+using System.Collections.Generic;
+using MongoDB.Bson.Serialization.Attributes;
+using ProtoBuf;
+
+namespace ET
+{
+    [ProtoContract]
+    [Config]
+    public partial class WeatherConfigCategory : ProtoObject, IMerge
+    {
+        public static WeatherConfigCategory Instance;
+		
+        [ProtoIgnore]
+        [BsonIgnore]
+        private Dictionary<int, WeatherConfig> dict = new Dictionary<int, WeatherConfig>();
+		
+        [BsonElement]
+        [ProtoMember(1)]
+        private List<WeatherConfig> list = new List<WeatherConfig>();
+		
+        public WeatherConfigCategory()
+        {
+            Instance = this;
+        }
+        
+        public void Merge(object o)
+        {
+            WeatherConfigCategory s = o as WeatherConfigCategory;
+            this.list.AddRange(s.list);
+        }
+		
+        public override void EndInit()
+        {
+            foreach (WeatherConfig config in list)
+            {
+                config.EndInit();
+                this.dict.Add(config.Id, config);
+            }            
+            this.AfterEndInit();
+        }
+		
+        public WeatherConfig Get(int id)
+        {
+            this.dict.TryGetValue(id, out WeatherConfig item);
+
+            if (item == null)
+            {
+                throw new Exception($"é…�ç½®æ‰¾ä¸�åˆ°ï¼Œé…�ç½®è¡¨å��: {nameof (WeatherConfig)}ï¼Œé…�ç½®id: {id}");
+            }
+
+            return item;
+        }
+		
+        public bool Contain(int id)
+        {
+            return this.dict.ContainsKey(id);
+        }
+
+        public Dictionary<int, WeatherConfig> GetAll()
+        {
+            return this.dict;
+        }
+        
+        public List<WeatherConfig> GetList()
+        {
+            return this.list;
+        }
+
+        public WeatherConfig GetOne()
+        {
+            if (this.dict == null || this.dict.Count <= 0)
+            {
+                return null;
+            }
+            return this.dict.Values.GetEnumerator().Current;
+        }
+    }
+
+    [ProtoContract]
+	public partial class WeatherConfig: ProtoObject, IConfig
+	{
+		/// <summary>ç¼–å�·</summary>
+		[ProtoMember(1)]
+		public int Id { get; set; }
+		/// <summary>å¤©æ°”å��ç§°</summary>
+		[ProtoMember(2)]
+		public string Name { get; set; }
+		/// <summary>ç–¾ç—…å€¼</summary>
+		[ProtoMember(3)]
+		public int Disease { get; set; }
+		/// <summary>å¤–ä¼¤å€¼</summary>
+		[ProtoMember(4)]
+		public int Injury { get; set; }
+		/// <summary>è€�ä¹…ç ´å��</summary>
+		[ProtoMember(5)]
+		public int DurableDestroy { get; set; }
+		/// <summary>åŠ³åŠ›å�˜åŒ–</summary>
+		[ProtoMember(6)]
+		public int LaborVariety { get; set; }
+		/// <summary>æŒ�ç»­æ—¶é•¿</summary>
+		[ProtoMember(7)]
+		public int[] Duration { get; set; }
+		/// <summary>å¤©æ°”CD</summary>
+		[ProtoMember(8)]
+		public int[] CD { get; set; }
+		/// <summary>å¤©æ°”ç‰¹æ•ˆ</summary>
+		[ProtoMember(9)]
+		public string WeaterEffect { get; set; }
+		/// <summary>ç‰¹æ•ˆé—´éš”</summary>
+		[ProtoMember(10)]
+		public int[] SpecialEfficacyCD { get; set; }
+		/// <summary>å¤©æ°”å›¾æ ‡</summary>
+		[ProtoMember(11)]
+		public string ICON { get; set; }
+		/// <summary>æ��è¿°</summary>
+		[ProtoMember(12)]
+		public string Describe { get; set; }
+
+	}
+}
diff --git a/Server/Model/Generate/ConfigEnum.cs b/Server/Model/Generate/ConfigEnum.cs
index dd72f25..ceff869 100644
--- a/Server/Model/Generate/ConfigEnum.cs
+++ b/Server/Model/Generate/ConfigEnum.cs
@@ -356,6 +356,19 @@ namespace ET
 		// æœˆåœ†å¤œåˆ·æ–°
 		FULLMOON = 3,
 	}
+	public enum PhysiqueSectionEnum
+	{
+		// å·®
+		POOR = 1,
+		// ä¸­
+		AMONG = 2,
+		// è‰¯
+		GOOD = 3,
+		// ä¼˜
+		EXCELLENT = 4,
+		// æž�
+		SUPERB = 5,
+	}
 	public enum ProductionTypeEnum
 	{
 		// å»ºç­‘äº§å‡º
@@ -442,6 +455,28 @@ namespace ET
 		// å¥³
 		FEMALE = 2,
 	}
+	public enum SeasonTapyEnum
+	{
+		// æ˜¥
+		SPRING = 1,
+		// å¤�
+		SUMMER = 2,
+		// ç§‹
+		AUTUMN = 3,
+		// å†¬
+		WINTER = 4,
+	}
+	public enum SeasonStageEnum
+	{
+		// æ–°æ‰‹æœŸ
+		NEWBIE = 1,
+		// æ¸¸æˆ�å‰�æœŸ
+		EARLY = 2,
+		// æ¸¸æˆ�ä¸­æœŸ
+		MEDIUM = 3,
+		// æ¸¸æˆ�å�ŽæœŸ
+		LATE = 4,
+	}
 	public enum SkillBuffTriggerEventEnum
 	{
 		// é—ªé�¿äº‹ä»¶
diff --git a/Server/Model/Generate/Message/OuterMessage.cs b/Server/Model/Generate/Message/OuterMessage.cs
index 5a35482..c317318 100644
--- a/Server/Model/Generate/Message/OuterMessage.cs
+++ b/Server/Model/Generate/Message/OuterMessage.cs
@@ -2501,7 +2501,7 @@ namespace ET
 		public long id { get; set; }
 
 		[ProtoMember(2)]
-		public int SeedCfgId { get; set; }
+		public int CropCfgId { get; set; }
 
 		[ProtoMember(3)]
 		public int PlantCfgId { get; set; }
@@ -2515,6 +2515,9 @@ namespace ET
 		[ProtoMember(6)]
 		public int FarmlandState { get; set; }
 
+		[ProtoMember(7)]
+		public long PeopleId { get; set; }
+
 	}
 
 	[ResponseType(nameof(M2C_FarmlandPlant))]
@@ -2681,4 +2684,66 @@ namespace ET
 
 	}
 
+	[ResponseType(nameof(M2C_GoFarmlandPlant))]
+	[Message(OuterOpcode.C2M_GoFarmlandPlant)]
+	[ProtoContract]
+	public partial class C2M_GoFarmlandPlant: Object, IActorLocationRequest
+	{
+		[ProtoMember(90)]
+		public int RpcId { get; set; }
+
+		[ProtoMember(1)]
+		public long FarmlandId { get; set; }
+
+		[ProtoMember(2)]
+		public long PeopleId { get; set; }
+
+	}
+
+	[Message(OuterOpcode.M2C_GoFarmlandPlant)]
+	[ProtoContract]
+	public partial class M2C_GoFarmlandPlant: Object, IActorLocationResponse
+	{
+		[ProtoMember(90)]
+		public int RpcId { get; set; }
+
+		[ProtoMember(91)]
+		public int Error { get; set; }
+
+		[ProtoMember(92)]
+		public string Message { get; set; }
+
+	}
+
+	[ResponseType(nameof(M2C_GoFarmlandHarvest))]
+	[Message(OuterOpcode.C2M_GoFarmlandHarvest)]
+	[ProtoContract]
+	public partial class C2M_GoFarmlandHarvest: Object, IActorLocationRequest
+	{
+		[ProtoMember(90)]
+		public int RpcId { get; set; }
+
+		[ProtoMember(1)]
+		public long FarmlandId { get; set; }
+
+		[ProtoMember(2)]
+		public long PeopleId { get; set; }
+
+	}
+
+	[Message(OuterOpcode.M2C_GoFarmlandHarvest)]
+	[ProtoContract]
+	public partial class M2C_GoFarmlandHarvest: Object, IActorLocationResponse
+	{
+		[ProtoMember(90)]
+		public int RpcId { get; set; }
+
+		[ProtoMember(91)]
+		public int Error { get; set; }
+
+		[ProtoMember(92)]
+		public string Message { get; set; }
+
+	}
+
 }
diff --git a/Server/Model/Generate/Message/OuterOpcode.cs b/Server/Model/Generate/Message/OuterOpcode.cs
index bb6bbe3..723aa68 100644
--- a/Server/Model/Generate/Message/OuterOpcode.cs
+++ b/Server/Model/Generate/Message/OuterOpcode.cs
@@ -158,5 +158,9 @@ namespace ET
 		 public const ushort M2C_ChangeBehave = 10155;
 		 public const ushort C2M_CheatItemList = 10156;
 		 public const ushort M2C_CheatItemList = 10157;
+		 public const ushort C2M_GoFarmlandPlant = 10158;
+		 public const ushort M2C_GoFarmlandPlant = 10159;
+		 public const ushort C2M_GoFarmlandHarvest = 10160;
+		 public const ushort M2C_GoFarmlandHarvest = 10161;
 	}
 }
diff --git a/Tools/App/Apps/ExcelExporter/ExcelExporter.cs b/Tools/App/Apps/ExcelExporter/ExcelExporter.cs
index 2ba0c57..2cd9f83 100644
--- a/Tools/App/Apps/ExcelExporter/ExcelExporter.cs
+++ b/Tools/App/Apps/ExcelExporter/ExcelExporter.cs
@@ -764,7 +764,7 @@ namespace ET
         public static void ExportWorldParam()
         {
             string path = "../Excel/WorldParametersConfig.xlsx";
-            string classPath = "../Unity/Codes/Hotfix/Demo/WorldParam.cs";
+            string classPath = "../Unity/Codes/Model/Demo/Config/WorldParam.cs";
             using Stream stream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
             using ExcelPackage p = new ExcelPackage(stream);
             var worksheet = p.Workbook.Worksheets[0];
diff --git a/Unity/Assets/Bundles/Config/LaborConfigCategory.bytes b/Unity/Assets/Bundles/Config/LaborConfigCategory.bytes
new file mode 100644
index 0000000..1b61458
--- /dev/null
+++ b/Unity/Assets/Bundles/Config/LaborConfigCategory.bytes
@@ -0,0 +1,110 @@
+
+P 
+	– 
+	Ò 
+	˜ 
+	Ô 
+	� 
+	Â 	
+	ô 
+
+			° 
+	
+
+Ø 
+	Š 
+	¼ 
+	

ä 
+	Œ 
+	´ 
+	Ü 
+	„ 
+	¬ 
+	Ê 
+	è 
+	� 
+	® 
+	Ì 
+	ê 
+	ˆ	 
+	¦	 
+	º	 
+	Ø	 
+	ö	 
+	Š
+  
+	ž
+ !
+	  ¼
+ "
+	!!Ð
+ #
+	""ä
+ $
+	##ø
+ %
+	$$– &
+	%%ª '
+	&&¾ (
+	''Ò )
+	((Ü *
+	))ð +
+	**„ ,
+	++˜ -
+	,,¬ .
+	--¶ /
+	..Ê 0
+	//Þ 1
+	00è 2
+	11ü 3
+	22†
 4
+	33š
 5
+	44¤
 6
+	55®
 7
+	66Â
 8
+	77Ì
 9
+	88Ö
 :
+	99ê
 ;
+	::ô
 <
+	;;þ
 =
+	<<ˆ >
+	==œ ?
+	>>¦ @
+	??° A
+	@@º B
+	AAÄ C
+	BBÎ D
+	CCØ E
+	DDâ F
+	EEì G
+	FFö H
+	GG€ I
+	HHŠ J
+	II” K
+	JJž L
+	KK¨ M
+	LL² N
+	MM¼ O
+	NNÆ P
+	OOÐ Q
+	PPÐ R
+	QQÚ S
+	RRä T
+	SSî U
+	TTø V
+	UUø W
+	VV‚ X
+	WWŒ Y
+	XX– Z
+	YY– [
+	ZZ  \
+	[[ª ]
+	\\´ ^
+	]]´ _
+	^^¾ `
+	__È a
+	``È b
+	aaÒ c
+	bbÜ d
+	ccÜ e
+	ddæ f
\ No newline at end of file
diff --git a/Unity/Assets/Bundles/Config/LaborConfigCategory.bytes.meta b/Unity/Assets/Bundles/Config/LaborConfigCategory.bytes.meta
new file mode 100644
index 0000000..cf2b8fb
--- /dev/null
+++ b/Unity/Assets/Bundles/Config/LaborConfigCategory.bytes.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: b63b98bf16b075c40b86337825f0c45e
+TextScriptImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Unity/Assets/Bundles/Config/LifeExpConfigCategory.bytes b/Unity/Assets/Bundles/Config/LifeExpConfigCategory.bytes
new file mode 100644
index 0000000..420cf81
--- /dev/null
+++ b/Unity/Assets/Bundles/Config/LifeExpConfigCategory.bytes
@@ -0,0 +1,125 @@
+
+d
+È
+¬
+�
+ô
+Ø
+¼
+ 
+		„
+
+
+è
+Ì
+°	
+

”
+
+ø
+
+Ü
+À
+¤
+ˆ
+ì
+Ð
+´
+˜
+ü
+à
+Ä
+¨
+Œ
+ð
+Ô
+¸
+œ
+  €
+!!ä
+""È
+##¬
+$$�
+%%ô
+&&Ø
+''¼
+(( 
+))„ 
+**è 
+++Ì!
+,,°"
+--”#
+..ø#
+//Ü$
+00À%
+11¤&
+22ˆ'
+33ì'
+44Ð(
+55´)
+66˜*
+77ü*
+88à+
+99Ä,
+::¨-
+;;Œ.
+<<ð.
+==Ô/
+>>¸0
+??œ1
+@@€2
+AAä2
+BBÈ3
+CC¬4
+DD�5
+EEô5
+FFØ6
+GG¼7
+HH 8
+II„9
+JJè9
+KKÌ:
+LL°;
+MM”<
+NNø<
+OOÜ=
+PPÀ>
+QQ¤?
+RRˆ@
+SSì@
+TTÐA
+UU´B
+VV˜C
+WWüC
+XXàD
+YYÄE
+ZZ¨F
+[[ŒG
+\\ðG
+]]ÔH
+^^¸I
+__œJ
+``€K
+aaäK
+bbÈL
+cc¬M
+dd�N
+eeôN
+ffØO
+gg¼P
+hh Q
+ii„R
+jjèR
+kkÌS
+ll°T
+mm”U
+nnøU
+ooÜV
+ppÀW
+qq¤X
+rrˆY
+ssìY
+ttÐZ
+uu´[
+vv˜\
+wwü\
+xxà]
\ No newline at end of file
diff --git a/Unity/Assets/Bundles/Config/LifeExpConfigCategory.bytes.meta b/Unity/Assets/Bundles/Config/LifeExpConfigCategory.bytes.meta
new file mode 100644
index 0000000..692b0c6
--- /dev/null
+++ b/Unity/Assets/Bundles/Config/LifeExpConfigCategory.bytes.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 4f92e02fad134e543b8f05c61ba303c4
+TextScriptImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Unity/Assets/Bundles/Config/PhysiqueConfigCategory.bytes b/Unity/Assets/Bundles/Config/PhysiqueConfigCategory.bytes
new file mode 100644
index 0000000..d0a24b6
--- /dev/null
+++ b/Unity/Assets/Bundles/Config/PhysiqueConfigCategory.bytes
@@ -0,0 +1,19 @@
+
+< (028@.H0P
+à (028@4H.P	
+Ô (028
@:H,P
+€ (30<8@@H*P
+Ì: (30<8@FH(P
+ e (30<8@LH&P
+ä  (=0K8@RH$P
+€ð (=0K8@XH"P
+		ÜÕ (=0K8@^H P
+
+
+àÔ (L0Y8@dHP
+ôï (L0Y8@jHP
+€ª (L0Y8@pHP
+

ì… (Z0x8@vHP
+ †
+ (Z0x8@|HP!
+„® (Z0x8@‚HP#
\ No newline at end of file
diff --git a/Unity/Assets/Bundles/Config/PhysiqueConfigCategory.bytes.meta b/Unity/Assets/Bundles/Config/PhysiqueConfigCategory.bytes.meta
new file mode 100644
index 0000000..cc0d885
--- /dev/null
+++ b/Unity/Assets/Bundles/Config/PhysiqueConfigCategory.bytes.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 50752de22dc86684986e3f2658d56cab
+TextScriptImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Unity/Assets/Bundles/Config/SeasonConfigCategory.bytes b/Unity/Assets/Bundles/Config/SeasonConfigCategory.bytes
index cf65c18..5c1f100 100644
Binary files a/Unity/Assets/Bundles/Config/SeasonConfigCategory.bytes and b/Unity/Assets/Bundles/Config/SeasonConfigCategory.bytes differ
diff --git a/Unity/Assets/Bundles/Config/WeatherConfigCategory.bytes b/Unity/Assets/Bundles/Config/WeatherConfigCategory.bytes
new file mode 100644
index 0000000..a925540
Binary files /dev/null and b/Unity/Assets/Bundles/Config/WeatherConfigCategory.bytes differ
diff --git a/Unity/Assets/Bundles/Config/WeatherConfigCategory.bytes.meta b/Unity/Assets/Bundles/Config/WeatherConfigCategory.bytes.meta
new file mode 100644
index 0000000..1b79e82
--- /dev/null
+++ b/Unity/Assets/Bundles/Config/WeatherConfigCategory.bytes.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 9210e21415f53b544836dab71d0c7263
+TextScriptImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Unity/Codes/Hotfix/Demo/Farmland/FarmlandSystem.cs b/Unity/Codes/Hotfix/Demo/Farmland/FarmlandSystem.cs
index d8c419b..543c945 100644
--- a/Unity/Codes/Hotfix/Demo/Farmland/FarmlandSystem.cs
+++ b/Unity/Codes/Hotfix/Demo/Farmland/FarmlandSystem.cs
@@ -29,22 +29,25 @@
         public static void FromMessage(this Farmland self, FarmlandProto farmlandProto)
         {
             self.Id = farmlandProto.id;
-            self.CropCfgId = farmlandProto.SeedCfgId;
+            self.CropCfgId = farmlandProto.CropCfgId;
             self.Duration = farmlandProto.Duration;
             self.ExProduct = farmlandProto.ExProduct;
             self.PlanCropCfgId = farmlandProto.PlantCfgId;
             self.FarmlandState = farmlandProto.FarmlandState;
+            self.PeopleId = farmlandProto.PeopleId;
         }
 
         public static FarmlandProto ToMessage(this Farmland self)
         {
             FarmlandProto proto = new FarmlandProto();
             proto.id = self.Id;
-            proto.SeedCfgId = self.CropCfgId;
+            proto.CropCfgId = self.CropCfgId;
             proto.Duration = self.Duration;
             proto.ExProduct = self.ExProduct;
             proto.PlantCfgId = self.PlanCropCfgId;
             proto.FarmlandState = self.FarmlandState;
+            proto.PeopleId = self.PeopleId;
+            
             return proto;
         }
 
@@ -53,6 +56,7 @@
             self.Duration = 0;
             self.FarmlandState = FarmlandState.FARMLAND_STATE_GROW;
             self.ExProduct = 0;
+            self.PeopleId = 0;
 
         }
 
@@ -75,6 +79,7 @@
             self.CropCfgId = 0;
             self.ExProduct = 0;
             self.FarmlandState = FarmlandState.FARMLAND_STATE_FREE;
+            self.PeopleId = 0;
 
         }
 
diff --git a/Unity/Codes/Hotfix/Demo/Helper/FarmlandHelper.cs b/Unity/Codes/Hotfix/Demo/Helper/FarmlandHelper.cs
index 631da26..563aa41 100644
--- a/Unity/Codes/Hotfix/Demo/Helper/FarmlandHelper.cs
+++ b/Unity/Codes/Hotfix/Demo/Helper/FarmlandHelper.cs
@@ -28,8 +28,13 @@ namespace ET
                 throw;
             }
         }
+        
+        public static async ETTask<int> GoFarmlandPlant(Unit unit,People people,long farmlandId)
+        {
+            return await PeopleHelper.ChangeBehave(unit, people, farmlandId, ConstBehaveType.BEHAVE_PREPARE_PLANT);
+        }
 
-        public static async ETTask<int> FarmlandPlant(Unit unit, Farmland farmland,People people)
+        public static async ETTask<int> StartFarmlandPlant(Unit unit, Farmland farmland,People people)
         {
             try
             {
@@ -52,7 +57,15 @@ namespace ET
                 throw;
             }
         }
-
+        public static async ETTask<int> FinishFarmlandPlant(Unit unit,People people)
+        {
+            return await PeopleHelper.ChangeBehave(unit, people, 0, ConstBehaveType.BEHAVE_IDLE);
+        }
+        
+        public static async ETTask<int> GoFarmlandHarvest(Unit unit,People people)
+        {
+            return await PeopleHelper.ChangeBehave(unit, people, 0, ConstBehaveType.BEHAVE_PREPARE_HARVEST);
+        }
         public static async ETTask<int> FarmlandHarvest(Unit unit, Farmland farmland,People people)
         {
             try
@@ -77,15 +90,14 @@ namespace ET
             }
         }
 
-        public static async ETTask<int> FarmlandPlantFinish(Unit unit,People people)
-        {
-            return await PeopleHelper.ChangeBehave(unit, people, 0, ConstBehaveType.BEHAVE_IDLE);
-        }
+       
         
-        public static async ETTask<int> FarmlandHarvestFinish(Unit unit,People people)
+        public static async ETTask<int> FinishFarmlandHarvest(Unit unit,People people)
         {
             return await PeopleHelper.ChangeBehave(unit, people, 0, ConstBehaveType.BEHAVE_IDLE);
         }
+       
+       
         
         
 
diff --git a/Unity/Codes/Hotfix/Demo/Operate/FarmlandOperate.cs b/Unity/Codes/Hotfix/Demo/Operate/FarmlandOperate.cs
index 933237a..6919ae6 100644
--- a/Unity/Codes/Hotfix/Demo/Operate/FarmlandOperate.cs
+++ b/Unity/Codes/Hotfix/Demo/Operate/FarmlandOperate.cs
@@ -6,6 +6,19 @@ namespace ET
     [FriendClass(typeof (Farmland))]
     public static class FarmlandOperate
     {
+        public static int GoPlant(Unit unit, Farmland farmland, People people)
+        {
+            if (farmland.FarmlandState != FarmlandState.FARMLAND_STATE_SEED)
+            {
+                return ErrorCode.ERR_FarmlandNotSeed;
+            }
+
+            PeopleOperate.StopBehave(unit, people);
+            people.SetBehaveType(ConstBehaveType.BEHAVE_PREPARE_PLANT);
+            people.SetTargetId(farmland.Id);
+            farmland.PeopleId = people.Id;
+            return ErrorCode.ERR_Success;
+        }
         public static int Plant(Unit unit, Farmland farmland,People people)
         {
             
@@ -14,11 +27,24 @@ namespace ET
                 return ErrorCode.ERR_FarmlandNotFree;
             }
             farmland.Plant();
-            PeopleOperate.ChangeBehave(unit,people, farmland.Id, ConstBehaveType.BEHAVE_PLANT);
+            PeopleOperate.ChangeBehave(unit,people, farmland.Id, ConstBehaveType.BEHAVE_IDLE);
 
             return ErrorCode.ERR_Success;
         }
+        
+        public static int GoHarvest(Unit unit, Farmland farmland, People people)
+        {
+            if (farmland.FarmlandState != FarmlandState.FARMLAND_STATE_SEED)
+            {
+                return ErrorCode.ERR_FarmlandNotSeed;
+            }
 
+            PeopleOperate.StopBehave(unit, people);
+            people.SetBehaveType(ConstBehaveType.BEHAVE_PREPARE_HARVEST);
+            people.SetTargetId(farmland.Id);
+            farmland.PeopleId = people.Id;
+            return ErrorCode.ERR_Success;
+        }
         public static int Harvest(Unit unit, Farmland farmland,People people)
         {
            
@@ -35,7 +61,7 @@ namespace ET
                     farmland.Harvest();
                     return ErrorCode.ERR_Success;
                 }
-                PeopleOperate.ChangeBehave(unit,people, farmland.Id, ConstBehaveType.BEHAVE_HARVEST);
+                PeopleOperate.ChangeBehave(unit,people, farmland.Id, ConstBehaveType.BEHAVE_IDLE);
 
                 return ErrorCode.ERR_FarmlandNotRipe;
            
diff --git a/Unity/Codes/Hotfix/Demo/People/PeopleSystem.cs b/Unity/Codes/Hotfix/Demo/People/PeopleSystem.cs
index aa90b09..29336fa 100644
--- a/Unity/Codes/Hotfix/Demo/People/PeopleSystem.cs
+++ b/Unity/Codes/Hotfix/Demo/People/PeopleSystem.cs
@@ -2,16 +2,15 @@
 
 namespace ET
 {
-    public class PeopleAwakeSystem: AwakeSystem<People,int>
+    public class PeopleAwakeSystem: AwakeSystem<People, int>
     {
-        public override void Awake(People self,int configId)
+        public override void Awake(People self, int configId)
         {
             self.ConfigId = configId;
         }
-      
-    } 
-    
-    [FriendClass(typeof(People))]
+    }
+
+    [FriendClass(typeof (People))]
     public static class PeopleSystem
     {
         public static void FromMessage(this People self, PeopleProto peopleProto)
@@ -63,16 +62,16 @@ namespace ET
                     peopleProto.SkillList.Add(skill.ToMessage());
                 }
             }
-            return peopleProto;
 
+            return peopleProto;
         }
-        
+
         public static int GetStrength(this People self)
         {
             var numericComp = self.GetComponent<NumericComponent>();
             return numericComp.GetAsInt(NumericType.Strength);
         }
-        
+
         public static int GetGender(this People self)
         {
             var numericComp = self.GetComponent<NumericComponent>();
@@ -84,21 +83,22 @@ namespace ET
             return self.BehaveType;
         }
 
-        public static void SetBehaveType(this People self,int val)
+        public static void SetBehaveType(this People self, int val)
         {
-             self.BehaveType = val;
+            self.BehaveType = val;
 #if !SERVER
-             Game.EventSystem.Publish(new EventType.BehaveTypeChanged(){People = self});
+            Game.EventSystem.Publish(new EventType.BehaveTypeChanged() { People = self });
 #endif
         }
+
         public static long GetTargetId(this People self)
         {
             return self.TargetId;
         }
-        
+
         public static void SetTargetId(this People self, long val)
         {
-             self.TargetId = val;
+            self.TargetId = val;
         }
 
         public static int GetHp(this People self)
@@ -122,22 +122,21 @@ namespace ET
         public static void InitNumericComponent(this People self)
         {
             var nc = self.AddComponent<NumericComponent>();
-            nc.Set(NumericType.PeopleType,self.Config.Type);
-            nc.Set(NumericType.Gender,self.Config.Gender);
-            nc.Set(NumericType.Age,self.Age);
-            nc.Set(NumericType.Labor,self.Config.Labor);
-            nc.Set(NumericType.Wisdom,self.Config.Wisdom);
-            nc.Set(NumericType.MoveSpeed,self.Config.MoveSpeed);
-            
+            nc.Set(NumericType.PeopleType, self.Config.Type);
+            nc.Set(NumericType.Gender, self.Config.Gender);
+            nc.Set(NumericType.Age, self.Age);
+            nc.Set(NumericType.Labor, self.Config.Labor);
+            nc.Set(NumericType.Wisdom, self.Config.Wisdom);
+            nc.Set(NumericType.MoveSpeed, self.Config.MoveSpeed);
+
             if (self.AttriConfig != null)
             {
-                nc.Set(NumericType.Domination,self.AttriConfig.Domination);
-                nc.Set(NumericType.Strength,self.AttriConfig.Strength);
-                nc.Set(NumericType.Endurance,self.AttriConfig.Endurance);
-                nc.Set(NumericType.Agile,self.AttriConfig.Agile);
-                nc.Set(NumericType.SpiritualPower,self.AttriConfig.SpiritualPower);
+                nc.Set(NumericType.Domination, self.AttriConfig.Domination);
+                nc.Set(NumericType.Strength, self.AttriConfig.Strength);
+                nc.Set(NumericType.Endurance, self.AttriConfig.Endurance);
+                nc.Set(NumericType.Agile, self.AttriConfig.Agile);
+                nc.Set(NumericType.SpiritualPower, self.AttriConfig.SpiritualPower);
             }
-            
         }
 
         public static int GetLabor(this People self)
@@ -153,36 +152,178 @@ namespace ET
             int laborCoefficientBuild = WorldParametersConfigCategory.Instance.Get(WorldParam.LaborCoefficientBuild).Value[0];
             return labor * laborCoefficientBuild;
         }
- 
+
         //å†œæ°‘ç±»åž‹æ‰�ä¼šæˆ�é•¿,å¹´é¾„å¢žåŠ 
         public static void GrowUp(this People self)
         {
-            if (self.PeopleType != (int)RoleTypeEnum.VILLAGERS)
+            if (self.PeopleType != (int) RoleTypeEnum.VILLAGERS)
             {
                 return;
             }
 
             self.Age += 1;
+        }
+
+        //è¿”å›žtrueè¡¨ç¤ºæ­»äº¡
+        public static bool CheckPeopleDie(this People self)
+        {
+            if (self.PeopleType == (int) RoleTypeEnum.VILLAGERS && self.Age >= self.AgeMax)
+            {
+                return true;
+            }
 
+            return false;
         }
 
         //å¢žåŠ ä½“è´¨ç»�éªŒ
         public static void AddPhysiqueExp(this People self, int exp)
         {
-            
+            if (self.PeopleType != (int) RoleTypeEnum.VILLAGERS)
+            {
+                return;
+            }
+
+            self.PhysiqueExp += exp;
+            var config = PhysiqueConfigCategory.Instance.Get(self.Physique);
+            if (self.PhysiqueExp < 0)
+            {
+                self.PhysiqueExp = 0;
+            }
+
+            if (self.PhysiqueExp >= config.Exp)
+            {
+                self.Physique += 1;
+                self.PhysiqueExp -= config.Exp;
+            }
         }
-        
+
         //å¢žåŠ å¯¿å‘½ç»�éªŒ
         public static void AddLifeExp(this People self, int exp)
         {
-            
+            if (self.PeopleType != (int) RoleTypeEnum.VILLAGERS)
+            {
+                return;
+            }
+
+            self.AgeExp += exp;
+            var configList = LifeExpConfigCategory.Instance.GetList();
+            var phyConfig = PhysiqueConfigCategory.Instance.Get(self.Physique);
+            int ageMax = 0;
+            foreach (var v in configList)
+            {
+                if (self.AgeExp < v.LifeExp)
+                {
+                    ageMax = v.Life;
+                    break;
+                }
+            }
+
+            if (ageMax > phyConfig.LifeMax)
+            {
+                ageMax = phyConfig.LifeMax;
+            }
+
+            self.AgeMax = ageMax;
+            var lifeConfig = LifeExpConfigCategory.Instance.Get(self.AgeMax);
+            if (self.AgeExp > lifeConfig.LifeExp)
+            {
+                self.AgeExp = lifeConfig.LifeExp;
+            }
         }
+
         //å¢žåŠ åŠ³åŠ›ç»�éªŒ
         public static void AddLaborExp(this People self, int exp)
         {
-            
+            if (self.PeopleType != (int) RoleTypeEnum.VILLAGERS)
+            {
+                return;
+            }
+
+            self.LaborExp += exp;
+            var config = LaborConfigCategory.Instance.Get(self.Labor);
+            while (self.LaborExp > config.LaborExp)
+            {
+                var stageLabor = self.GetAgeStageLaborMax();
+                if (self.Labor >= stageLabor)
+                {
+                    self.Labor = stageLabor;
+                    config = LaborConfigCategory.Instance.Get(self.Labor);
+                    if (self.LaborExp > config.LaborExp)
+                    {
+                        self.LaborExp = config.LaborExp;
+                        return;
+                    }
+                }
+
+                self.LaborExp -= config.LaborExp;
+                self.Labor++;
+                config = LaborConfigCategory.Instance.Get(self.Labor);
+            }
+        }
+
+        public static int GetAgeStageLaborMax(this People self)
+        {
+            var ageStageList = AgeStageConfigCategory.Instance.GetList();
+            foreach (var v in ageStageList)
+            {
+                if (self.Age < v.EndAge)
+                {
+                    return v.LaborMax;
+                }
+            }
+
+            return 1;
+        }
+        
+        //æ¯�åˆ†é’Ÿæ›´æ–°ä½“è´¨ç»�éªŒ
+        public static void UpdatePhysiqueExp(this People self, int food)
+        {
+            var exp = (int)(-1*self.Disease/5);
+            if (food < 0)
+            {
+                exp += food * 40;
+            }
+            self.AddPhysiqueExp(exp);
         }
+        
+        //ç–¾ç—…å½±å“�ç»�éªŒ
+        public static void UpdateLifeExp(this People self)
+        {
+            var injuryLv = 0;
+            var diseaseLv = 0;
+            int exp = 0;
+            var configs = DiseaseConfigCategory.Instance.GetList();
+            foreach (var v in configs)
+            {
+                if (v.Type == (int) (DiseaseTypeEnum.INJURY))
+                {
+                    if (self.Injury > v.Min)
+                    {
+                        injuryLv = v.Level;
+                    }
+                }
+                if (v.Type == (int) (DiseaseTypeEnum.ILLNESS))
+                {
+                    if (self.Disease > v.Min)
+                    {
+                        diseaseLv = v.Level;
+                    }
+                }
+                
+            }
 
+            if (injuryLv > 2)
+            {
+                exp += -1 * self.Injury * 5;
+            }
 
+            if (diseaseLv > 2)
+            {
+                exp += -1 * self.Disease * 5;
+            }
+            self.AddLifeExp(exp);
+        }
+        
+        
     }
-}
+}
\ No newline at end of file
diff --git a/Unity/Codes/Hotfix/Demo/Unit/UnitSystem.cs b/Unity/Codes/Hotfix/Demo/Unit/UnitSystem.cs
index 3335395..af7f662 100644
--- a/Unity/Codes/Hotfix/Demo/Unit/UnitSystem.cs
+++ b/Unity/Codes/Hotfix/Demo/Unit/UnitSystem.cs
@@ -109,6 +109,11 @@ namespace ET
                 }
                 
                 self.GameTime = time;
+                if (gameTime>self.GameTime)
+                {
+                    //æ¯�å¤©é•¿å¤§ä¸€å²�
+                    self.AddAge();
+                }
             }
         }
 
@@ -160,8 +165,7 @@ namespace ET
 #if SERVER
             UnitHelper.NofityUpdateValley(self, new List<int> { NumericType.Season }, new List<long> { self.Season });       
 #endif
-            
-            //å¦‚æžœæ˜¯æ˜¥å¤©ï¼Œé•¿å¤§ä¸€å²�
+       
         }
 
         public static void SetEmbattle(this Unit self, Dictionary<int, long> FighterDic)
diff --git a/Unity/Codes/Model/Demo/ConstValue.cs b/Unity/Codes/Model/Demo/ConstValue.cs
index f6c9f60..a190171 100644
--- a/Unity/Codes/Model/Demo/ConstValue.cs
+++ b/Unity/Codes/Model/Demo/ConstValue.cs
@@ -32,9 +32,7 @@ namespace ET
         public const int BEHAVE_PREPARE_CONSTRUCT = 3; //åŽ»å»ºé€ 
         public const int BEHAVE_CONSTRUCT = 4; //å»ºé€ 
         public const int BEHAVE_PREPARE_PLANT = 5;   //åŽ»ç§�æ¤�
-        public const int BEHAVE_PLANT = 6;   //æ­£åœ¨ç§�æ¤�
-        public const int BEHAVE_PREPARE_HARVEST = 7;//åŽ»æ”¶å‰²
-        public const int BEHAVE_HARVEST = 8;//æ”¶å‰²
+        public const int BEHAVE_PREPARE_HARVEST = 6;//åŽ»æ”¶å‰²
 
     }
 
@@ -127,10 +125,8 @@ namespace ET
     public static class FarmlandState
     {
         public const int FARMLAND_STATE_FREE = 1;//ç©ºé—²
-        public const int FARMLAND_STATE_SEED = 2; //å·²ç»�æ’­ç§�
-        public const int FARMLAND_STATE_PLANT = 3; //ç§�æ¤�
-        public const int FARMLAND_STATE_GROW = 4; //ç”Ÿé•¿
-        public const int FARMLAND_STATE_RIPE = 5; //æˆ�ç†Ÿ
-        public const int FARMLAND_STATE_HARVEST = 6;//æ”¶å‰²
+        public const int FARMLAND_STATE_SEED = 2; //æ’­ç§�
+        public const int FARMLAND_STATE_GROW = 3; //ç”Ÿé•¿
+        public const int FARMLAND_STATE_RIPE = 4; //æˆ�ç†Ÿ
     }
 }
\ No newline at end of file
diff --git a/Unity/Codes/Model/Demo/Farmland/Farmland.cs b/Unity/Codes/Model/Demo/Farmland/Farmland.cs
index bd050f9..422ce14 100644
--- a/Unity/Codes/Model/Demo/Farmland/Farmland.cs
+++ b/Unity/Codes/Model/Demo/Farmland/Farmland.cs
@@ -10,6 +10,7 @@ namespace ET
         public int ExProduct;    //é¢�å¤–äº§é‡�
         public int FarmlandState; //å†œç”°çŠ¶æ€�
         public int PlanCropCfgId;    //è®¡åˆ’ç§�æ¤�çš„ä¸œè¥¿
+        public long PeopleId;   //å†œæ°‘id                                          
         
         [BsonIgnore]
         public CropConfig Config =>CropConfigCategory.Instance.Get(this.CropCfgId);
diff --git a/Unity/Codes/Model/Demo/People/People.cs b/Unity/Codes/Model/Demo/People/People.cs
index 546d6b7..09a5e83 100644
--- a/Unity/Codes/Model/Demo/People/People.cs
+++ b/Unity/Codes/Model/Demo/People/People.cs
@@ -27,9 +27,11 @@ namespace ET
         public int Disease; //ç–¾ç—…å€¼
         public int PeopleType; //ä¸»è§’ï¼Œä¼™ä¼´ï¼Œæ�‘æ°‘
         public int Gender; //æ€§åˆ«
-        public int Life; //ç”Ÿå‘½
+        public int AgeMax; //å¯¿å‘½ä¸Šé™�
+        public int AgeExp;
         public int Wisdom; //æ™ºæ…§
         public int MoveSpeed; //ç§»åŠ¨é€Ÿåº¦
+        public int Injury; //å¤–ä¼¤
 
        
 
diff --git a/Unity/Codes/Model/Demo/Unit/Unit.cs b/Unity/Codes/Model/Demo/Unit/Unit.cs
index 8adf0e4..ef9322b 100644
--- a/Unity/Codes/Model/Demo/Unit/Unit.cs
+++ b/Unity/Codes/Model/Demo/Unit/Unit.cs
@@ -51,6 +51,7 @@ namespace ET
         public string Name;
         public int EventSeed;
         public List<string> EventNames;
+        public int Hunger; //é¥¥é¥¿å€¼
         
         
         [BsonDictionaryOptions(DictionaryRepresentation.ArrayOfArrays)]
diff --git a/Unity/Codes/Model/Generate/Config/LaborConfig.cs b/Unity/Codes/Model/Generate/Config/LaborConfig.cs
new file mode 100644
index 0000000..0e386ca
--- /dev/null
+++ b/Unity/Codes/Model/Generate/Config/LaborConfig.cs
@@ -0,0 +1,97 @@
+using System;
+using System.Collections.Generic;
+using MongoDB.Bson.Serialization.Attributes;
+using ProtoBuf;
+
+namespace ET
+{
+    [ProtoContract]
+    [Config]
+    public partial class LaborConfigCategory : ProtoObject, IMerge
+    {
+        public static LaborConfigCategory Instance;
+		
+        [ProtoIgnore]
+        [BsonIgnore]
+        private Dictionary<int, LaborConfig> dict = new Dictionary<int, LaborConfig>();
+		
+        [BsonElement]
+        [ProtoMember(1)]
+        private List<LaborConfig> list = new List<LaborConfig>();
+		
+        public LaborConfigCategory()
+        {
+            Instance = this;
+        }
+        
+        public void Merge(object o)
+        {
+            LaborConfigCategory s = o as LaborConfigCategory;
+            this.list.AddRange(s.list);
+        }
+		
+        public override void EndInit()
+        {
+            foreach (LaborConfig config in list)
+            {
+                config.EndInit();
+                this.dict.Add(config.Id, config);
+            }            
+            this.AfterEndInit();
+        }
+		
+        public LaborConfig Get(int id)
+        {
+            this.dict.TryGetValue(id, out LaborConfig item);
+
+            if (item == null)
+            {
+                throw new Exception($"é…�ç½®æ‰¾ä¸�åˆ°ï¼Œé…�ç½®è¡¨å��: {nameof (LaborConfig)}ï¼Œé…�ç½®id: {id}");
+            }
+
+            return item;
+        }
+		
+        public bool Contain(int id)
+        {
+            return this.dict.ContainsKey(id);
+        }
+
+        public Dictionary<int, LaborConfig> GetAll()
+        {
+            return this.dict;
+        }
+        
+        public List<LaborConfig> GetList()
+        {
+            return this.list;
+        }
+
+        public LaborConfig GetOne()
+        {
+            if (this.dict == null || this.dict.Count <= 0)
+            {
+                return null;
+            }
+            return this.dict.Values.GetEnumerator().Current;
+        }
+    }
+
+    [ProtoContract]
+	public partial class LaborConfig: ProtoObject, IConfig
+	{
+		/// <summary>ç¼–å�·</summary>
+		[ProtoMember(1)]
+		public int Id { get; set; }
+		/// <summary>åŠ³åŠ›å€¼</summary>
+		[ProtoMember(2)]
+		public int Labor { get; set; }
+		/// <summary>åŠ³åŠ›ç»�éªŒ</summary>
+		[ProtoMember(3)]
+		public int LaborExp { get; set; }
+		/// <summary>åŠ³ä½œæ”¶ç›Šç³»æ•°</summary>
+		[ProtoMember(4)]
+		public int IncomeCoefficient { get; set; }
+
+	}
+}
diff --git a/Unity/Codes/Model/Generate/Config/LifeExpConfig.cs b/Unity/Codes/Model/Generate/Config/LifeExpConfig.cs
new file mode 100644
index 0000000..dbc4c74
--- /dev/null
+++ b/Unity/Codes/Model/Generate/Config/LifeExpConfig.cs
@@ -0,0 +1,94 @@
+using System;
+using System.Collections.Generic;
+using MongoDB.Bson.Serialization.Attributes;
+using ProtoBuf;
+
+namespace ET
+{
+    [ProtoContract]
+    [Config]
+    public partial class LifeExpConfigCategory : ProtoObject, IMerge
+    {
+        public static LifeExpConfigCategory Instance;
+		
+        [ProtoIgnore]
+        [BsonIgnore]
+        private Dictionary<int, LifeExpConfig> dict = new Dictionary<int, LifeExpConfig>();
+		
+        [BsonElement]
+        [ProtoMember(1)]
+        private List<LifeExpConfig> list = new List<LifeExpConfig>();
+		
+        public LifeExpConfigCategory()
+        {
+            Instance = this;
+        }
+        
+        public void Merge(object o)
+        {
+            LifeExpConfigCategory s = o as LifeExpConfigCategory;
+            this.list.AddRange(s.list);
+        }
+		
+        public override void EndInit()
+        {
+            foreach (LifeExpConfig config in list)
+            {
+                config.EndInit();
+                this.dict.Add(config.Id, config);
+            }            
+            this.AfterEndInit();
+        }
+		
+        public LifeExpConfig Get(int id)
+        {
+            this.dict.TryGetValue(id, out LifeExpConfig item);
+
+            if (item == null)
+            {
+                throw new Exception($"é…�ç½®æ‰¾ä¸�åˆ°ï¼Œé…�ç½®è¡¨å��: {nameof (LifeExpConfig)}ï¼Œé…�ç½®id: {id}");
+            }
+
+            return item;
+        }
+		
+        public bool Contain(int id)
+        {
+            return this.dict.ContainsKey(id);
+        }
+
+        public Dictionary<int, LifeExpConfig> GetAll()
+        {
+            return this.dict;
+        }
+        
+        public List<LifeExpConfig> GetList()
+        {
+            return this.list;
+        }
+
+        public LifeExpConfig GetOne()
+        {
+            if (this.dict == null || this.dict.Count <= 0)
+            {
+                return null;
+            }
+            return this.dict.Values.GetEnumerator().Current;
+        }
+    }
+
+    [ProtoContract]
+	public partial class LifeExpConfig: ProtoObject, IConfig
+	{
+		/// <summary>ç¼–å�·</summary>
+		[ProtoMember(1)]
+		public int Id { get; set; }
+		/// <summary>å¯¿å‘½</summary>
+		[ProtoMember(2)]
+		public int Life { get; set; }
+		/// <summary>å¯¿å‘½ç»�éªŒ</summary>
+		[ProtoMember(3)]
+		public int LifeExp { get; set; }
+
+	}
+}
diff --git a/Unity/Codes/Model/Generate/Config/PhysiqueConfig.cs b/Unity/Codes/Model/Generate/Config/PhysiqueConfig.cs
new file mode 100644
index 0000000..e85d21e
--- /dev/null
+++ b/Unity/Codes/Model/Generate/Config/PhysiqueConfig.cs
@@ -0,0 +1,115 @@
+using System;
+using System.Collections.Generic;
+using MongoDB.Bson.Serialization.Attributes;
+using ProtoBuf;
+
+namespace ET
+{
+    [ProtoContract]
+    [Config]
+    public partial class PhysiqueConfigCategory : ProtoObject, IMerge
+    {
+        public static PhysiqueConfigCategory Instance;
+		
+        [ProtoIgnore]
+        [BsonIgnore]
+        private Dictionary<int, PhysiqueConfig> dict = new Dictionary<int, PhysiqueConfig>();
+		
+        [BsonElement]
+        [ProtoMember(1)]
+        private List<PhysiqueConfig> list = new List<PhysiqueConfig>();
+		
+        public PhysiqueConfigCategory()
+        {
+            Instance = this;
+        }
+        
+        public void Merge(object o)
+        {
+            PhysiqueConfigCategory s = o as PhysiqueConfigCategory;
+            this.list.AddRange(s.list);
+        }
+		
+        public override void EndInit()
+        {
+            foreach (PhysiqueConfig config in list)
+            {
+                config.EndInit();
+                this.dict.Add(config.Id, config);
+            }            
+            this.AfterEndInit();
+        }
+		
+        public PhysiqueConfig Get(int id)
+        {
+            this.dict.TryGetValue(id, out PhysiqueConfig item);
+
+            if (item == null)
+            {
+                throw new Exception($"é…�ç½®æ‰¾ä¸�åˆ°ï¼Œé…�ç½®è¡¨å��: {nameof (PhysiqueConfig)}ï¼Œé…�ç½®id: {id}");
+            }
+
+            return item;
+        }
+		
+        public bool Contain(int id)
+        {
+            return this.dict.ContainsKey(id);
+        }
+
+        public Dictionary<int, PhysiqueConfig> GetAll()
+        {
+            return this.dict;
+        }
+        
+        public List<PhysiqueConfig> GetList()
+        {
+            return this.list;
+        }
+
+        public PhysiqueConfig GetOne()
+        {
+            if (this.dict == null || this.dict.Count <= 0)
+            {
+                return null;
+            }
+            return this.dict.Values.GetEnumerator().Current;
+        }
+    }
+
+    [ProtoContract]
+	public partial class PhysiqueConfig: ProtoObject, IConfig
+	{
+		/// <summary>ç¼–å�·</summary>
+		[ProtoMember(1)]
+		public int Id { get; set; }
+		/// <summary>ä½“è´¨ç­‰çº§</summary>
+		[ProtoMember(2)]
+		public int Lv { get; set; }
+		/// <summary>ä½“è´¨ç»�éªŒ</summary>
+		[ProtoMember(3)]
+		public int Exp { get; set; }
+		/// <summary>ä½“è´¨æ®µ</summary>
+		[ProtoMember(4)]
+		public int Section { get; set; }
+		/// <summary>æœ€ä½Žå¯¿å‘½</summary>
+		[ProtoMember(5)]
+		public int LifeMin { get; set; }
+		/// <summary>æœ€é«˜å¯¿å‘½</summary>
+		[ProtoMember(6)]
+		public int LifeMax { get; set; }
+		/// <summary>åŠ³åŠ›ç»�éªŒç³»æ•°</summary>
+		[ProtoMember(7)]
+		public int LaborExpCoefficient { get; set; }
+		/// <summary>ä¼¤ç–¾æ�¢å¤�</summary>
+		[ProtoMember(8)]
+		public int DiseaseRecovery { get; set; }
+		/// <summary>ä¼¤ç–¾åŠ é‡�</summary>
+		[ProtoMember(9)]
+		public int DiseaseWorsen { get; set; }
+		/// <summary>ä¼¤ç—…å‡�å…�</summary>
+		[ProtoMember(10)]
+		public int DiseaseRelief { get; set; }
+
+	}
+}
diff --git a/Unity/Codes/Model/Generate/Config/SeasonConfig.cs b/Unity/Codes/Model/Generate/Config/SeasonConfig.cs
index d9becc4..46631b9 100644
--- a/Unity/Codes/Model/Generate/Config/SeasonConfig.cs
+++ b/Unity/Codes/Model/Generate/Config/SeasonConfig.cs
@@ -86,20 +86,29 @@ namespace ET
 		/// <summary>å­£èŠ‚å��ç§°</summary>
 		[ProtoMember(2)]
 		public string Name { get; set; }
-		/// <summary>ç±»åž‹</summary>
+		/// <summary>å­£èŠ‚ç±»åž‹</summary>
 		[ProtoMember(3)]
-		public int Type { get; set; }
-		/// <summary>æ—¶é•¿</summary>
+		public int Tapy { get; set; }
+		/// <summary>æ¸¸æˆ�é˜¶æ®µ</summary>
 		[ProtoMember(4)]
+		public int Stage { get; set; }
+		/// <summary>æ—¶é•¿</summary>
+		[ProtoMember(5)]
 		public int Duration { get; set; }
 		/// <summary>æ¯�æ—¥èµ·æ­¢æ—¶é—´</summary>
-		[ProtoMember(5)]
+		[ProtoMember(6)]
 		public int[] DayTime { get; set; }
+		/// <summary>å­£èŠ‚å¤©æ°”ç»„</summary>
+		[ProtoMember(7)]
+		public int[] WeatherGroup { get; set; }
+		/// <summary>å¤©æ°”æ�ƒé‡�</summary>
+		[ProtoMember(8)]
+		public int[] Weights { get; set; }
 		/// <summary>å­£èŠ‚æ��è¿°</summary>
-		[ProtoMember(6)]
+		[ProtoMember(9)]
 		public string Description { get; set; }
 		/// <summary>å­£èŠ‚å›¾ç‰‡</summary>
-		[ProtoMember(7)]
+		[ProtoMember(10)]
 		public string Picture { get; set; }
 
 	}
diff --git a/Unity/Codes/Model/Generate/Config/WeatherConfig.cs b/Unity/Codes/Model/Generate/Config/WeatherConfig.cs
new file mode 100644
index 0000000..a962316
--- /dev/null
+++ b/Unity/Codes/Model/Generate/Config/WeatherConfig.cs
@@ -0,0 +1,121 @@
+using System;
+using System.Collections.Generic;
+using MongoDB.Bson.Serialization.Attributes;
+using ProtoBuf;
+
+namespace ET
+{
+    [ProtoContract]
+    [Config]
+    public partial class WeatherConfigCategory : ProtoObject, IMerge
+    {
+        public static WeatherConfigCategory Instance;
+		
+        [ProtoIgnore]
+        [BsonIgnore]
+        private Dictionary<int, WeatherConfig> dict = new Dictionary<int, WeatherConfig>();
+		
+        [BsonElement]
+        [ProtoMember(1)]
+        private List<WeatherConfig> list = new List<WeatherConfig>();
+		
+        public WeatherConfigCategory()
+        {
+            Instance = this;
+        }
+        
+        public void Merge(object o)
+        {
+            WeatherConfigCategory s = o as WeatherConfigCategory;
+            this.list.AddRange(s.list);
+        }
+		
+        public override void EndInit()
+        {
+            foreach (WeatherConfig config in list)
+            {
+                config.EndInit();
+                this.dict.Add(config.Id, config);
+            }            
+            this.AfterEndInit();
+        }
+		
+        public WeatherConfig Get(int id)
+        {
+            this.dict.TryGetValue(id, out WeatherConfig item);
+
+            if (item == null)
+            {
+                throw new Exception($"é…�ç½®æ‰¾ä¸�åˆ°ï¼Œé…�ç½®è¡¨å��: {nameof (WeatherConfig)}ï¼Œé…�ç½®id: {id}");
+            }
+
+            return item;
+        }
+		
+        public bool Contain(int id)
+        {
+            return this.dict.ContainsKey(id);
+        }
+
+        public Dictionary<int, WeatherConfig> GetAll()
+        {
+            return this.dict;
+        }
+        
+        public List<WeatherConfig> GetList()
+        {
+            return this.list;
+        }
+
+        public WeatherConfig GetOne()
+        {
+            if (this.dict == null || this.dict.Count <= 0)
+            {
+                return null;
+            }
+            return this.dict.Values.GetEnumerator().Current;
+        }
+    }
+
+    [ProtoContract]
+	public partial class WeatherConfig: ProtoObject, IConfig
+	{
+		/// <summary>ç¼–å�·</summary>
+		[ProtoMember(1)]
+		public int Id { get; set; }
+		/// <summary>å¤©æ°”å��ç§°</summary>
+		[ProtoMember(2)]
+		public string Name { get; set; }
+		/// <summary>ç–¾ç—…å€¼</summary>
+		[ProtoMember(3)]
+		public int Disease { get; set; }
+		/// <summary>å¤–ä¼¤å€¼</summary>
+		[ProtoMember(4)]
+		public int Injury { get; set; }
+		/// <summary>è€�ä¹…ç ´å��</summary>
+		[ProtoMember(5)]
+		public int DurableDestroy { get; set; }
+		/// <summary>åŠ³åŠ›å�˜åŒ–</summary>
+		[ProtoMember(6)]
+		public int LaborVariety { get; set; }
+		/// <summary>æŒ�ç»­æ—¶é•¿</summary>
+		[ProtoMember(7)]
+		public int[] Duration { get; set; }
+		/// <summary>å¤©æ°”CD</summary>
+		[ProtoMember(8)]
+		public int[] CD { get; set; }
+		/// <summary>å¤©æ°”ç‰¹æ•ˆ</summary>
+		[ProtoMember(9)]
+		public string WeaterEffect { get; set; }
+		/// <summary>ç‰¹æ•ˆé—´éš”</summary>
+		[ProtoMember(10)]
+		public int[] SpecialEfficacyCD { get; set; }
+		/// <summary>å¤©æ°”å›¾æ ‡</summary>
+		[ProtoMember(11)]
+		public string ICON { get; set; }
+		/// <summary>æ��è¿°</summary>
+		[ProtoMember(12)]
+		public string Describe { get; set; }
+
+	}
+}
diff --git a/Unity/Codes/Model/Generate/ConfigEnum.cs b/Unity/Codes/Model/Generate/ConfigEnum.cs
index dd72f25..ceff869 100644
--- a/Unity/Codes/Model/Generate/ConfigEnum.cs
+++ b/Unity/Codes/Model/Generate/ConfigEnum.cs
@@ -356,6 +356,19 @@ namespace ET
 		// æœˆåœ†å¤œåˆ·æ–°
 		FULLMOON = 3,
 	}
+	public enum PhysiqueSectionEnum
+	{
+		// å·®
+		POOR = 1,
+		// ä¸­
+		AMONG = 2,
+		// è‰¯
+		GOOD = 3,
+		// ä¼˜
+		EXCELLENT = 4,
+		// æž�
+		SUPERB = 5,
+	}
 	public enum ProductionTypeEnum
 	{
 		// å»ºç­‘äº§å‡º
@@ -442,6 +455,28 @@ namespace ET
 		// å¥³
 		FEMALE = 2,
 	}
+	public enum SeasonTapyEnum
+	{
+		// æ˜¥
+		SPRING = 1,
+		// å¤�
+		SUMMER = 2,
+		// ç§‹
+		AUTUMN = 3,
+		// å†¬
+		WINTER = 4,
+	}
+	public enum SeasonStageEnum
+	{
+		// æ–°æ‰‹æœŸ
+		NEWBIE = 1,
+		// æ¸¸æˆ�å‰�æœŸ
+		EARLY = 2,
+		// æ¸¸æˆ�ä¸­æœŸ
+		MEDIUM = 3,
+		// æ¸¸æˆ�å�ŽæœŸ
+		LATE = 4,
+	}
 	public enum SkillBuffTriggerEventEnum
 	{
 		// é—ªé�¿äº‹ä»¶
diff --git a/Unity/Codes/Model/Generate/Message/OuterMessage.cs b/Unity/Codes/Model/Generate/Message/OuterMessage.cs
index 5a35482..c317318 100644
--- a/Unity/Codes/Model/Generate/Message/OuterMessage.cs
+++ b/Unity/Codes/Model/Generate/Message/OuterMessage.cs
@@ -2501,7 +2501,7 @@ namespace ET
 		public long id { get; set; }
 
 		[ProtoMember(2)]
-		public int SeedCfgId { get; set; }
+		public int CropCfgId { get; set; }
 
 		[ProtoMember(3)]
 		public int PlantCfgId { get; set; }
@@ -2515,6 +2515,9 @@ namespace ET
 		[ProtoMember(6)]
 		public int FarmlandState { get; set; }
 
+		[ProtoMember(7)]
+		public long PeopleId { get; set; }
+
 	}
 
 	[ResponseType(nameof(M2C_FarmlandPlant))]
@@ -2681,4 +2684,66 @@ namespace ET
 
 	}
 
+	[ResponseType(nameof(M2C_GoFarmlandPlant))]
+	[Message(OuterOpcode.C2M_GoFarmlandPlant)]
+	[ProtoContract]
+	public partial class C2M_GoFarmlandPlant: Object, IActorLocationRequest
+	{
+		[ProtoMember(90)]
+		public int RpcId { get; set; }
+
+		[ProtoMember(1)]
+		public long FarmlandId { get; set; }
+
+		[ProtoMember(2)]
+		public long PeopleId { get; set; }
+
+	}
+
+	[Message(OuterOpcode.M2C_GoFarmlandPlant)]
+	[ProtoContract]
+	public partial class M2C_GoFarmlandPlant: Object, IActorLocationResponse
+	{
+		[ProtoMember(90)]
+		public int RpcId { get; set; }
+
+		[ProtoMember(91)]
+		public int Error { get; set; }
+
+		[ProtoMember(92)]
+		public string Message { get; set; }
+
+	}
+
+	[ResponseType(nameof(M2C_GoFarmlandHarvest))]
+	[Message(OuterOpcode.C2M_GoFarmlandHarvest)]
+	[ProtoContract]
+	public partial class C2M_GoFarmlandHarvest: Object, IActorLocationRequest
+	{
+		[ProtoMember(90)]
+		public int RpcId { get; set; }
+
+		[ProtoMember(1)]
+		public long FarmlandId { get; set; }
+
+		[ProtoMember(2)]
+		public long PeopleId { get; set; }
+
+	}
+
+	[Message(OuterOpcode.M2C_GoFarmlandHarvest)]
+	[ProtoContract]
+	public partial class M2C_GoFarmlandHarvest: Object, IActorLocationResponse
+	{
+		[ProtoMember(90)]
+		public int RpcId { get; set; }
+
+		[ProtoMember(91)]
+		public int Error { get; set; }
+
+		[ProtoMember(92)]
+		public string Message { get; set; }
+
+	}
+
 }
diff --git a/Unity/Codes/Model/Generate/Message/OuterOpcode.cs b/Unity/Codes/Model/Generate/Message/OuterOpcode.cs
index bb6bbe3..723aa68 100644
--- a/Unity/Codes/Model/Generate/Message/OuterOpcode.cs
+++ b/Unity/Codes/Model/Generate/Message/OuterOpcode.cs
@@ -158,5 +158,9 @@ namespace ET
 		 public const ushort M2C_ChangeBehave = 10155;
 		 public const ushort C2M_CheatItemList = 10156;
 		 public const ushort M2C_CheatItemList = 10157;
+		 public const ushort C2M_GoFarmlandPlant = 10158;
+		 public const ushort M2C_GoFarmlandPlant = 10159;
+		 public const ushort C2M_GoFarmlandHarvest = 10160;
+		 public const ushort M2C_GoFarmlandHarvest = 10161;
 	}
 }
