private static IList<WarMagicData> CreateAbnormalConditionMagic(MagicData magic, bool isChipEffect, IAbnormalCondition cond, TargetType targetType)
        {
            var name = magic.Name;
            var description = magic.Description;
            var cores = magic.Cores;
            var magicDatas = new List<WarMagicData>(cores.Length);
            foreach (var core in cores)
            {
                // 行為の範囲や対象を設定する
                IScope scope;
                if (core.Area != 0)
                    scope = new DefaultScope(core.Range, core.Area, targetType);
                else
                    scope = new WholeScope(targetType);

                // 画面効果を設定する
                var screenEffect = CreateScreenEffect(magic, isChipEffect);

                // 消費MPの設定
                var consumption = new MPCost(core.MPCost);

                // 行為の設定
                var action = new GiveAbnormalConditionAction(scope, consumption, screenEffect, cond);

                // 魔法データを作成する
                var magicData = new WarMagicData(name, description, action, core.MPCost, core.Area, core.Range);
                magicDatas.Add(magicData);
            }
            return magicDatas;
        }
        private static IList<WarMagicData> CreateSummonMagic(MagicData magic, IList<UnitData> unitDatas, string id)
        {
            var name = magic.Name;
            var description = magic.Description;

            var cores = magic.Cores;
            var magicDatas = new List<WarMagicData>(cores.Length);
            cores.ForEach((core, i) => {
                // 行為の範囲や対象を設定する
                var scope = new DefaultScope(core.Range, core.Area, TargetType.NONE);

                // 消費MPの設定
                var consumption = new MPCost(core.MPCost);

                // 画面効果を設定する
                var screenEffect = CreateScreenEffect(magic, true);

                // 行為を設定する
                var unitData = unitDatas.FirstOrDefault(unit_ => unit_.ID == id + (i + 1));
                var action = new SummonAction(scope, consumption, unitData, screenEffect);

                // 魔法データを作成する
                var magicData = new WarMagicData(name, description, action, core.MPCost, core.Area, core.Range);
                magicDatas.Add(magicData);
            });
            return magicDatas;
        }