public static void initTalentEffectProp(GameClient client) { TalentData myTalentData = TalentManager.GetTalentData(client); if (myTalentData != null && myTalentData.IsOpen) { TalentPropData myPropData = client.ClientData.MyTalentPropData; myPropData.ResetProps(); foreach (TalentEffectItem item in myTalentData.EffectList) { TalentInfo talentInfo = TalentManager.GetTalentInfoByID(client.ClientData.Occupation, item.ID); if (talentInfo.LevelMax >= item.Level) { item.ItemEffectList = talentInfo.EffectList[item.Level]; foreach (TalentEffectInfo info in item.ItemEffectList) { switch (info.EffectType) { case 1: myPropData.PropItem.BaseProps[info.EffectID] += (double)((int)info.EffectValue); break; case 2: myPropData.PropItem.ExtProps[info.EffectID] += info.EffectValue; break; case 3: if (myPropData.SkillOneValue.ContainsKey(info.EffectID)) { Dictionary <int, int> skillOneValue; int effectID; (skillOneValue = myPropData.SkillOneValue)[effectID = info.EffectID] = skillOneValue[effectID] + (int)info.EffectValue; } else { myPropData.SkillOneValue.Add(info.EffectID, (int)info.EffectValue); } break; case 4: myPropData.SkillAllValue += (int)info.EffectValue; break; } } } } TalentManager.InitSpecialProp(client); client.ClientData.MyTalentData.SkillOneValue = client.ClientData.MyTalentPropData.SkillOneValue; client.ClientData.MyTalentData.SkillAllValue = client.ClientData.MyTalentPropData.SkillAllValue; TalentManager.SetTalentProp(client, TalentEffectType.PropBasic, myPropData.PropItem); TalentManager.SetTalentProp(client, TalentEffectType.PropExt, myPropData.PropItem); } }