public void ReloadSkills(Dictionary <string, BaseSkillRequirement> DicRequirement, Dictionary <string, BaseEffect> DicEffect, Dictionary <string, ManualSkillTarget> DicTarget)
        {
            Target = DicTarget[Target.TargetType].Copy();


            for (int E = 0; E < ListEffect.Count; E++)
            {
                BaseEffect NewEffect = DicEffect[ListEffect[E].EffectTypeName].Copy();
                NewEffect.CopyMembers(ListEffect[E]);
                ListEffect[E] = NewEffect;

                foreach (BaseAutomaticSkill ActiveFollowingSkill in ListEffect[E].ListFollowingSkill)
                {
                    ActiveFollowingSkill.ReloadSkills(DicRequirement, DicEffect);
                }
            }
        }
        public void ReloadSkills(Dictionary <string, BaseSkillRequirement> DicRequirement, Dictionary <string, BaseEffect> DicEffect, Dictionary <string, AutomaticSkillTargetType> DicAutomaticSkillTarget)
        {
            foreach (BaseSkillLevel ActiveSkillLevel in ListSkillLevel)
            {
                foreach (BaseSkillActivation ActiveActivation in ActiveSkillLevel.ListActivation)
                {
                    for (int R = 0; R < ActiveActivation.ListRequirement.Count; R++)
                    {
                        BaseSkillRequirement NewRequirement = DicRequirement[ActiveActivation.ListRequirement[R].SkillRequirementName].Copy();
                        NewRequirement.CopyMembers(ActiveActivation.ListRequirement[R]);
                        ActiveActivation.ListRequirement[R] = NewRequirement;
                    }

                    ActiveActivation.ListEffectTargetReal.Clear();
                    foreach (List <string> ListActiveTarget in ActiveActivation.ListEffectTarget)
                    {
                        List <AutomaticSkillTargetType> NewListEffectTargetReal = new List <AutomaticSkillTargetType>(ListActiveTarget.Count);
                        ActiveActivation.ListEffectTargetReal.Add(NewListEffectTargetReal);
                        foreach (string ActiveTarget in ListActiveTarget)
                        {
                            NewListEffectTargetReal.Add(DicAutomaticSkillTarget[ActiveTarget].Copy());
                        }
                    }

                    for (int E = 0; E < ActiveActivation.ListEffect.Count; E++)
                    {
                        BaseEffect NewEffect = DicEffect[ActiveActivation.ListEffect[E].EffectTypeName].Copy();
                        NewEffect.CopyMembers(ActiveActivation.ListEffect[E]);
                        ActiveActivation.ListEffect[E] = NewEffect;

                        foreach (BaseAutomaticSkill ActiveFollowingSkill in ActiveActivation.ListEffect[E].ListFollowingSkill)
                        {
                            ActiveFollowingSkill.ReloadSkills(DicRequirement, DicEffect, DicAutomaticSkillTarget);
                        }
                    }
                }
            }
        }