Exemplo n.º 1
0
        protected override Other ConvertRowToModel(int generatedId, OtherRow row)
        {
            Other model = new Other();

            model.Id          = generatedId;
            model.Description = row.OtherName;

            model.CharacterName = row.Character;
            model.SourceName    = row.Source;
            model.SourceType    = null; //fill in during merge phase
            model.SourceId      = 0;    //fill in during merge phase
            model.ImagePath     = row.ImagePath;
            model.Name          = row.OtherName;

            model.AbilityType           = _abilityTypeConverter.ConvertFromNameToId(row.Type);
            model.TargetType            = _targetTypeConverter.ConvertFromNameToId(row.Target);
            model.DamageFormulaType     = _damageFormulaTypeConverter.ConvertFromNameToId(row.Formula);
            model.Multiplier            = _doubleConverter.ConvertFromStringToDouble(row.Multiplier);
            model.Elements              = _elementConverter.ConvertFromCommaSeparatedListToIds(row.Element);
            model.CastTime              = _doubleConverter.ConvertFromStringToDouble(row.Time);
            model.Effects               = row.Effects;
            model.IsCounterable         = _stringToBooleanConverter.ConvertFromStringToBool(row.Counter);
            model.AutoTargetType        = _autoTargetTypeConverter.ConvertFromNameToId(row.AutoTarget);
            model.SoulBreakPointsGained = _intConverter.ConvertFromStringToInt(row.SB);
            model.School     = _schoolConverter.ConvertFromNameToId(row.School);
            model.EnlirId    = row.ID;
            model.IsInGlobal = _stringToBooleanConverter.ConvertFromStringToBool(row.IsInGlobal);
            model.IsChecked  = _stringToBooleanConverter.ConvertFromStringToBool(row.Checked);

            _logger.LogDebug("Converted OtherRow to Other: {Id} - {Description}", model.Id, model.Description);

            return(model);
        }
Exemplo n.º 2
0
        protected override SynchroCommand ConvertRowToModel(int generatedId, SynchroCommandRow row)
        {
            SynchroCommand model = new SynchroCommand();

            model.Id          = generatedId;
            model.Description = $"{row.Source} - {row.CommandName}";

            model.CommandName  = row.CommandName;
            model.JapaneseName = row.JapaneseName;

            model.CharacterName = row.Character;
            model.CharacterId   = 0; //fill in during merge phase

            model.SourceSoulBreakName = row.Source;
            model.SourceSoulBreakId   = 0; //fill in during merge phase
            model.SbVer = row.SbVer;

            model.ImagePath = row.ImagePath;

            model.SynchroAbilitySlot = _intConverter.ConvertFromStringToInt(row.SynchroAbilitySlot);
            model.SynchroCondition   = row.SynchroCondition;
            model.SynchroConditionId = _intConverter.ConvertFromStringToInt(row.SynchroConditionId);

            model.AbilityType           = _abilityTypeConverter.ConvertFromNameToId(row.Type);
            model.TargetType            = _targetTypeConverter.ConvertFromNameToId(row.Target);
            model.AutoTargetType        = _autoTargetTypeConverter.ConvertFromNameToId(row.AutoTarget);
            model.DamageFormulaType     = _damageFormulaTypeConverter.ConvertFromNameToId(row.Formula);
            model.Multiplier            = _doubleConverter.ConvertFromStringToDouble(row.Multiplier);
            model.Elements              = _elementConverter.ConvertFromCommaSeparatedListToIds(row.Element);
            model.CastTime              = _doubleConverter.ConvertFromStringToDouble(row.Time);
            model.Effects               = row.Effects;
            model.IsCounterable         = _stringToBooleanConverter.ConvertFromStringToBool(row.Counter);
            model.IsInGlobal            = _stringToBooleanConverter.ConvertFromStringToBool(row.IsInGlobal);
            model.IsChecked             = _stringToBooleanConverter.ConvertFromStringToBool(row.Checked);
            model.SoulBreakPointsGained = _intConverter.ConvertFromStringToInt(row.SB);
            model.School  = _schoolConverter.ConvertFromNameToId(row.School);
            model.EnlirId = row.ID;

            _logger.LogDebug("Converted SynchroCommandRow to SynchroCommand: {Id} - {Description}", model.Id, model.Description);

            return(model);
        }
Exemplo n.º 3
0
        protected override Status ConvertRowToModel(int generatedId, StatusRow row)
        {
            Status model = new Status();

            model.Id          = generatedId;
            model.Description = row.CommonName;

            model.StatusId          = _intConverter.ConvertFromStringToInt(row.ID);
            model.CommonName        = row.CommonName;
            model.Effects           = row.Effects;
            model.DefaultDuration   = _intConverter.ConvertFromStringToInt(row.DefaultDuration);
            model.MindModifier      = _percentConverter.ConvertFromStringToDouble(row.MindModifier.TrimStart(PlusMinusCharArray));
            model.ExclusiveStatuses = ConvertCommaSeparatedStringToList(row.ExclusiveStatus);
            model.CodedName         = row.CodedName;
            model.Notes             = row.Notes.Replace(DashCharacter, String.Empty);

            _logger.LogDebug("Converted StatusRow to Status: {Id} - {Description}", model.Id, model.Description);

            return(model);
        }
Exemplo n.º 4
0
        protected override Dungeon ConvertRowToModel(int generatedId, DungeonRow row)
        {
            Dungeon model = new Dungeon();

            //IModelDescriptor
            model.Id          = generatedId;
            model.Description = row.DungeonName;

            model.Realm              = _realmConverter.ConvertFromNameToId(row.Realm);
            model.DungeonName        = row.DungeonName;
            model.IntroducingEvent   = row.Update;
            model.IntroducingEventId = 0; //fill in during merge stage

            //classic
            model.StaminaClassic          = _intConverter.ConvertFromStringToInt(row.StaminaClassic);
            model.DifficultyClassic       = _intConverter.ConvertFromStringToInt(row.DifficultyClassic);
            model.CompletionGilClassic    = _intConverter.ConvertFromStringToInt(row.CompletionClassic.TrimEnd(GilCharArray));
            model.FirstTimeRewardsClassic = ExtractItemWithCountAndStarLevel(row.FirstTimeClassic);
            model.MasteryRewardsClassic   = ExtractItemWithCountAndStarLevel(row.MasteryClassic);

            //elite
            model.StaminaElite          = _intConverter.ConvertFromStringToInt(row.StaminaElite);
            model.DifficultyElite       = _intConverter.ConvertFromStringToInt(row.DifficultyElite);
            model.CompletionGilElite    = _intConverter.ConvertFromStringToInt(row.CompletionElite.TrimEnd(GilCharArray));
            model.FirstTimeRewardsElite = ExtractItemWithCountAndStarLevel(row.FirstTimeElite);
            model.MasteryRewardsElite   = ExtractItemWithCountAndStarLevel(row.MasteryElite);

            _logger.LogDebug("Converted DungeonRow to Dungeon: {Id} - {Description}", model.Id, model.Description);

            return(model);
        }
Exemplo n.º 5
0
        protected override SoulBreak ConvertRowToModel(int generatedId, SoulBreakRow row)
        {
            SoulBreak model = new SoulBreak();

            model.Id          = generatedId;
            model.Description = row.SoulBreakName;

            model.SoulBreakName = row.SoulBreakName;
            model.JapaneseName  = row.JapaneseName;
            model.ImagePath     = row.ImagePath;

            model.CharacterName = row.Character.Replace(DashCharacter, String.Empty);;
            model.CharacterId   = 0; //fill in during merge phase

            model.RelicName = row.Relic;
            model.RelicId   = 0; //fill in during merge phase

            model.Realm = _realmConverter.ConvertFromNameToId(row.Realm);

            model.Commands     = null; //fill in during merge phase
            model.Statuses     = null; //fill in during merge phase
            model.OtherEffects = null; //fill in during merge phase

            model.SbVer             = row.SbVer;
            model.AbilityType       = _abilityTypeConverter.ConvertFromNameToId(row.Type);
            model.TargetType        = _targetTypeConverter.ConvertFromNameToId(row.Target);
            model.AutoTargetType    = _autoTargetTypeConverter.ConvertFromNameToId(row.AutoTarget);
            model.DamageFormulaType = _damageFormulaTypeConverter.ConvertFromNameToId(row.Formula);
            model.Multiplier        = _doubleConverter.ConvertFromStringToDouble(row.Multiplier);
            model.Elements          = _elementConverter.ConvertFromCommaSeparatedListToIds(row.Element);
            model.CastTime          = _doubleConverter.ConvertFromStringToDouble(row.Time);
            model.Effects           = row.Effects;
            model.IsCounterable     = _stringToBooleanConverter.ConvertFromStringToBool(row.Counter);
            model.IsInGlobal        = _stringToBooleanConverter.ConvertFromStringToBool(row.IsInGlobal);
            model.IsChecked         = _stringToBooleanConverter.ConvertFromStringToBool(row.Checked);

            model.SoulBreakPointsRequired = _intConverter.ConvertFromStringToInt(row.Points);
            model.SoulBreakTier           = _soulBreakTierConverter.ConvertFromNameToId(row.Tier);
            model.MasteryBonus            = row.Master;
            model.Anima = row.Anima;

            model.EnlirId = row.ID;


            _logger.LogDebug("Converted SoulBreakRow to SoulBreak: {Id} - {Description}", model.Id, model.Description);

            return(model);
        }
Exemplo n.º 6
0
        private IEnumerable <StatsByLevelInfo> GetStatsByLevelInfos(CharacterRow row)
        {
            IList <StatsByLevelInfo> statsByLevelInfos = new List <StatsByLevelInfo>();

            //level 50
            StatsByLevelInfo sli50 = new StatsByLevelInfo()
            {
                Level              = 50,
                IntroducingEvent   = row.IntroducingEventLevel50,
                IntroducingEventId = 0,                          //filled in during merge phase
                HitPoints          = _intConverter.ConvertFromStringToInt(row.HPLevel50),
                Attack             = _intConverter.ConvertFromStringToInt(row.ATKLevel50),
                Defense            = _intConverter.ConvertFromStringToInt(row.DEFLevel50),
                Magic              = _intConverter.ConvertFromStringToInt(row.MAGLevel50),
                Resistance         = _intConverter.ConvertFromStringToInt(row.RESLevel50),
                Mind     = _intConverter.ConvertFromStringToInt(row.MNDLevel50),
                Accuracy = _intConverter.ConvertFromStringToInt(row.ACCLevel50),
                Evasion  = _intConverter.ConvertFromStringToInt(row.EVALevel50),
                Speed    = _intConverter.ConvertFromStringToInt(row.SPDLevel50)
            };

            statsByLevelInfos.Add(sli50);

            //level 65
            StatsByLevelInfo sli65 = new StatsByLevelInfo()
            {
                Level              = 65,
                IntroducingEvent   = row.IntroducingEventLevel65,
                IntroducingEventId = 0,                          //filled in during merge phase
                HitPoints          = _intConverter.ConvertFromStringToInt(row.HPLevel65),
                Attack             = _intConverter.ConvertFromStringToInt(row.ATKLevel65),
                Defense            = _intConverter.ConvertFromStringToInt(row.DEFLevel65),
                Magic              = _intConverter.ConvertFromStringToInt(row.MAGLevel65),
                Resistance         = _intConverter.ConvertFromStringToInt(row.RESLevel65),
                Mind     = _intConverter.ConvertFromStringToInt(row.MNDLevel65),
                Accuracy = _intConverter.ConvertFromStringToInt(row.ACCLevel65),
                Evasion  = _intConverter.ConvertFromStringToInt(row.EVALevel65),
                Speed    = _intConverter.ConvertFromStringToInt(row.SPDLevel65)
            };

            statsByLevelInfos.Add(sli65);

            //level 80
            StatsByLevelInfo sli80 = new StatsByLevelInfo()
            {
                Level              = 80,
                IntroducingEvent   = row.IntroducingEventLevel80,
                IntroducingEventId = 0,                          //filled in during merge phase
                HitPoints          = _intConverter.ConvertFromStringToInt(row.HPLevel80),
                Attack             = _intConverter.ConvertFromStringToInt(row.ATKLevel80),
                Defense            = _intConverter.ConvertFromStringToInt(row.DEFLevel80),
                Magic              = _intConverter.ConvertFromStringToInt(row.MAGLevel80),
                Resistance         = _intConverter.ConvertFromStringToInt(row.RESLevel80),
                Mind     = _intConverter.ConvertFromStringToInt(row.MNDLevel80),
                Accuracy = _intConverter.ConvertFromStringToInt(row.ACCLevel80),
                Evasion  = _intConverter.ConvertFromStringToInt(row.EVALevel80),
                Speed    = _intConverter.ConvertFromStringToInt(row.SPDLevel80)
            };

            statsByLevelInfos.Add(sli80);

            //level 99
            StatsByLevelInfo sli99 = new StatsByLevelInfo()
            {
                Level              = 99,
                IntroducingEvent   = row.IntroducingEventLevel99,
                IntroducingEventId = 0,                          //filled in during merge phase
                HitPoints          = _intConverter.ConvertFromStringToInt(row.HPLevel99),
                Attack             = _intConverter.ConvertFromStringToInt(row.ATKLevel99),
                Defense            = _intConverter.ConvertFromStringToInt(row.DEFLevel99),
                Magic              = _intConverter.ConvertFromStringToInt(row.MAGLevel99),
                Resistance         = _intConverter.ConvertFromStringToInt(row.RESLevel99),
                Mind     = _intConverter.ConvertFromStringToInt(row.MNDLevel99),
                Accuracy = _intConverter.ConvertFromStringToInt(row.ACCLevel99),
                Evasion  = _intConverter.ConvertFromStringToInt(row.EVALevel99),
                Speed    = _intConverter.ConvertFromStringToInt(row.SPDLevel99)
            };

            statsByLevelInfos.Add(sli99);


            return(statsByLevelInfos);
        }
Exemplo n.º 7
0
        protected override Relic ConvertRowToModel(int generatedId, RelicRow row)
        {
            Relic model = new Relic();


            model.Id          = generatedId;
            model.Description = $"{row.RelicName} - {row.Realm}";

            model.RelicName  = row.RelicName;
            model.Realm      = _realmConverter.ConvertFromNameToId(row.Realm);
            model.RelicType  = _relicTypeConverter.ConvertFromNameToId(row.Type);
            model.EnlirId    = row.ID;
            model.IsInGlobal = _stringToBooleanConverter.ConvertFromStringToBool(row.IsInGlobal);

            model.CharacterName = row.Character.Replace(DashCharacter, String.Empty);
            model.CharacterId   = 0; //fill during merge phase

            model.SoulBreakName = row.SoulBreak;
            model.SoulBreakId   = 0;    //fill during merge phase
            model.SoulBreak     = null; //fill during merge phase

            model.LegendMateriaName = row.LegendMateria;
            model.LegendMateriaId   = 0; //fill during merge phase

            model.HasSynergy   = _stringToBooleanConverter.ConvertFromStringToBool(row.Synergy);
            model.CombineLevel = row.Combine;

            model.Rarity     = _intConverter.ConvertFromStringToInt(row.Rarity);
            model.Level      = _intConverter.ConvertFromStringToInt(row.Level);
            model.Attack     = _intConverter.ConvertFromStringToInt(row.ATK);
            model.Defense    = _intConverter.ConvertFromStringToInt(row.DEF);
            model.Magic      = _intConverter.ConvertFromStringToInt(row.MAG);
            model.Resistance = _intConverter.ConvertFromStringToInt(row.RES);
            model.Mind       = _intConverter.ConvertFromStringToInt(row.MND);
            model.Accuracy   = _intConverter.ConvertFromStringToInt(row.ACC);
            model.Evasion    = _intConverter.ConvertFromStringToInt(row.EVA);

            model.Effect = row.Effect;

            model.BaseRarity     = _intConverter.ConvertFromStringToInt(row.BRAR);
            model.BaseLevel      = _intConverter.ConvertFromStringToInt(row.BLV);
            model.BaseAttack     = _intConverter.ConvertFromStringToInt(row.BATK);
            model.BaseDefense    = _intConverter.ConvertFromStringToInt(row.BDEF);
            model.BaseMagic      = _intConverter.ConvertFromStringToInt(row.BMAG);
            model.BaseResistance = _intConverter.ConvertFromStringToInt(row.BRES);
            model.BaseMind       = _intConverter.ConvertFromStringToInt(row.BMND);
            model.BaseAccuracy   = _intConverter.ConvertFromStringToInt(row.BACC);
            model.BaseEvasion    = _intConverter.ConvertFromStringToInt(row.BEVA);

            model.MaxRarity     = _intConverter.ConvertFromStringToInt(row.MRAR);
            model.MaxLevel      = _intConverter.ConvertFromStringToInt(row.MLV);
            model.MaxAttack     = _intConverter.ConvertFromStringToInt(row.MATK);
            model.MaxDefense    = _intConverter.ConvertFromStringToInt(row.MDEF);
            model.MaxMagic      = _intConverter.ConvertFromStringToInt(row.MMAG);
            model.MaxResistance = _intConverter.ConvertFromStringToInt(row.MRES);
            model.MaxMind       = _intConverter.ConvertFromStringToInt(row.MMND);
            model.MaxAccuracy   = _intConverter.ConvertFromStringToInt(row.MACC);
            model.MaxEvasion    = _intConverter.ConvertFromStringToInt(row.MEVA);


            _logger.LogDebug("Converted RelicRow to Relic: {Id} - {Description}", model.Id, model.Description);

            return(model);
        }
Exemplo n.º 8
0
        //This row modifies the model that was input by reference, adding another object to each of its collection properties
        public void PivotInputRow(ExperienceRow row, Experience model)
        {
            int currentLevel = _intConverter.ConvertFromStringToInt(row.Level);

            ExperienceByLevelInfo genericCharacterLevel = new ExperienceByLevelInfo()
            {
                Level = currentLevel
            };

            genericCharacterLevel.ExperienceNeededToReachLevel     = _intConverter.ConvertFromStringToInt(row.Character);
            genericCharacterLevel.ExperienceNeededToReachNextLevel = _intConverter.ConvertFromStringToInt(row.NextLevelCharacter);
            ((IList <ExperienceByLevelInfo>)model.GenericCharacterLevelInfo).Add(genericCharacterLevel);

            ExperienceByLevelInfo tyroCharacterLevel = new ExperienceByLevelInfo()
            {
                Level = currentLevel
            };

            tyroCharacterLevel.ExperienceNeededToReachLevel     = _intConverter.ConvertFromStringToInt(row.Tyro);
            tyroCharacterLevel.ExperienceNeededToReachNextLevel = _intConverter.ConvertFromStringToInt(row.NextLevelTyro);
            ((IList <ExperienceByLevelInfo>)model.TyroCharacterLevelInfo).Add(tyroCharacterLevel);

            ExperienceByLevelInfo magicite1StarLevel = new ExperienceByLevelInfo()
            {
                Level = currentLevel
            };

            magicite1StarLevel.ExperienceNeededToReachLevel     = _intConverter.ConvertFromStringToInt(row.Magicite1);
            magicite1StarLevel.ExperienceNeededToReachNextLevel = _intConverter.ConvertFromStringToInt(row.NextLevelMagicite1);
            ((IList <ExperienceByLevelInfo>)model.Magicite1StarLevelInfo).Add(magicite1StarLevel);

            ExperienceByLevelInfo magicite2StarLevel = new ExperienceByLevelInfo()
            {
                Level = currentLevel
            };

            magicite2StarLevel.ExperienceNeededToReachLevel     = _intConverter.ConvertFromStringToInt(row.Magicite2);
            magicite2StarLevel.ExperienceNeededToReachNextLevel = _intConverter.ConvertFromStringToInt(row.NextLevelMagicite2);
            ((IList <ExperienceByLevelInfo>)model.Magicite2StarLevelInfo).Add(magicite2StarLevel);

            ExperienceByLevelInfo magicite3StarLevel = new ExperienceByLevelInfo()
            {
                Level = currentLevel
            };

            magicite3StarLevel.ExperienceNeededToReachLevel     = _intConverter.ConvertFromStringToInt(row.Magicite3);
            magicite3StarLevel.ExperienceNeededToReachNextLevel = _intConverter.ConvertFromStringToInt(row.NextLevelMagicite3);
            ((IList <ExperienceByLevelInfo>)model.Magicite3StarLevelInfo).Add(magicite3StarLevel);

            ExperienceByLevelInfo magicite4StarLevel = new ExperienceByLevelInfo()
            {
                Level = currentLevel
            };

            magicite4StarLevel.ExperienceNeededToReachLevel     = _intConverter.ConvertFromStringToInt(row.Magicite4);
            magicite4StarLevel.ExperienceNeededToReachNextLevel = _intConverter.ConvertFromStringToInt(row.NextLevelMagicite4);
            ((IList <ExperienceByLevelInfo>)model.Magicite4StarLevelInfo).Add(magicite4StarLevel);

            ExperienceByLevelInfo magicite5StarLevel = new ExperienceByLevelInfo()
            {
                Level = currentLevel
            };

            magicite5StarLevel.ExperienceNeededToReachLevel     = _intConverter.ConvertFromStringToInt(row.Magicite5);
            magicite5StarLevel.ExperienceNeededToReachNextLevel = _intConverter.ConvertFromStringToInt(row.NextLevelMagicite5);
            ((IList <ExperienceByLevelInfo>)model.Magicite5StarLevelInfo).Add(magicite5StarLevel);

            ExperienceByLevelInfo magicite3StarInheritanceLevel = new ExperienceByLevelInfo()
            {
                Level = currentLevel
            };

            magicite3StarInheritanceLevel.ExperienceNeededToReachLevel     = _intConverter.ConvertFromStringToInt(row.Inheritance3);
            magicite3StarInheritanceLevel.ExperienceNeededToReachNextLevel = _intConverter.ConvertFromStringToInt(row.NextLevelInheritance3);
            ((IList <ExperienceByLevelInfo>)model.Magicite3StarInheritanceLevelInfo).Add(magicite3StarInheritanceLevel);

            ExperienceByLevelInfo magicite4StarInheritanceLevel = new ExperienceByLevelInfo()
            {
                Level = currentLevel
            };

            magicite4StarInheritanceLevel.ExperienceNeededToReachLevel     = _intConverter.ConvertFromStringToInt(row.Inheritance4);
            magicite4StarInheritanceLevel.ExperienceNeededToReachNextLevel = _intConverter.ConvertFromStringToInt(row.NextLevelInheritance4);
            ((IList <ExperienceByLevelInfo>)model.Magicite4StarInheritanceLevelInfo).Add(magicite4StarInheritanceLevel);

            ExperienceByLevelInfo magicite5StarInheritanceLevel = new ExperienceByLevelInfo()
            {
                Level = currentLevel
            };

            magicite5StarInheritanceLevel.ExperienceNeededToReachLevel     = _intConverter.ConvertFromStringToInt(row.Inheritance5);
            magicite5StarInheritanceLevel.ExperienceNeededToReachNextLevel = _intConverter.ConvertFromStringToInt(row.NextLevelInheritance5);
            ((IList <ExperienceByLevelInfo>)model.Magicite5StarInheritanceLevelInfo).Add(magicite5StarInheritanceLevel);
        }
Exemplo n.º 9
0
        protected override Magicite ConvertRowToModel(int generatedId, MagiciteRow row)
        {
            Magicite model = new Magicite();

            //IModelDescriptor
            model.Id          = generatedId;
            model.Description = row.Name;

            //core attributes
            model.MagiciteName         = row.Name;
            model.Element              = _elementConverter.ConvertFromNameToId(row.Element);
            model.Rarity               = _intConverter.ConvertFromStringToInt(row.Rarity);
            model.Realm                = _realmConverter.ConvertFromNameToId(row.Realm);
            model.ImagePath            = row.ImagePath;
            model.IntroducingEventName = row.IntroducingEvent;
            model.IntroducingEventId   = 0; //fill in during merge phase

            model.IsInGlobal = _stringToBooleanConverter.ConvertFromStringToBool(row.IsInGlobal);
            model.IsChecked  = _stringToBooleanConverter.ConvertFromStringToBool(row.Checked);

            //stats
            model.HitPoints  = _intConverter.ConvertFromStringToInt(row.HP);
            model.Attack     = _intConverter.ConvertFromStringToInt(row.ATK);
            model.Defense    = _intConverter.ConvertFromStringToInt(row.DEF);
            model.Magic      = _intConverter.ConvertFromStringToInt(row.MAG);
            model.Resistance = _intConverter.ConvertFromStringToInt(row.RES);
            model.Mind       = _intConverter.ConvertFromStringToInt(row.MND);
            model.Speed      = _intConverter.ConvertFromStringToInt(row.SPD);

            //passives
            model.PassiveEffects = GetPassiveEffectsForMagicite(row);

            //ultra skill
            if (row.UltraSkill.Length > 1)
            {
                UltraSkill ultraSkill = new UltraSkill()
                {
                    Name              = row.UltraSkill,
                    JapaneseName      = row.JapaneseName,
                    AbilityType       = _abilityTypeConverter.ConvertFromNameToId(row.Type),
                    AutoTargetType    = _autoTargetTypeConverter.ConvertFromNameToId(row.AutoTarget),
                    DamageFormulaType = _damageFormulaTypeConverter.ConvertFromNameToId(row.Formula),
                    Multiplier        = _doubleConverter.ConvertFromStringToDouble(row.Multiplier),
                    Element           = _elementConverter.ConvertFromNameToId(row.Element),
                    CastTime          = _doubleConverter.ConvertFromStringToDouble(row.Time),
                    Effects           = row.Effects,
                    IsCounterable     = _stringToBooleanConverter.ConvertFromStringToBool(row.Counter),
                    Cooldown          = _doubleConverter.ConvertFromStringToDouble(row.Cooldown),
                    Duration          = _doubleConverter.ConvertFromStringToDouble(row.Duration),
                    EnlirId           = row.ID
                };

                model.UltraSkill = ultraSkill;
            }


            //magicite skills
            model.MagiciteSkills = new List <MagiciteSkill>(); //fill in during merge phase

            _logger.LogDebug("Converted MagiciteRow to Magicite: {Id} - {Description}", model.Id, model.Description);

            return(model);
        }
Exemplo n.º 10
0
        protected override Ability ConvertRowToModel(int generatedId, AbilityRow row)
        {
            Ability model = new Ability();

            model.Id          = generatedId;
            model.Description = row.AbilityName;

            model.AbilityName = row.AbilityName;
            model.ImagePath   = row.ImagePath;

            model.School = _schoolConverter.ConvertFromNameToId(row.School ?? "Unknown");

            model.Rarity  = _intConverter.ConvertFromStringToInt(row.Rarity);
            model.MinUses = _intConverter.ConvertFromStringToInt(row.Uses);
            model.MaxUses = _intConverter.ConvertFromStringToInt(row.Max);

            model.AbilityType           = _abilityTypeConverter.ConvertFromNameToId(row.Type);
            model.TargetType            = _targetTypeConverter.ConvertFromNameToId(row.Target);
            model.AutoTargetType        = _autoTargetTypeConverter.ConvertFromNameToId(row.AutoTarget);
            model.DamageFormulaType     = _damageFormulaTypeConverter.ConvertFromNameToId(row.Formula);
            model.Multiplier            = _doubleConverter.ConvertFromStringToDouble(row.Multiplier);
            model.Elements              = _elementConverter.ConvertFromCommaSeparatedListToIds(row.Element);
            model.CastTime              = _doubleConverter.ConvertFromStringToDouble(row.Time);
            model.Effects               = row.Effects;
            model.IsCounterable         = _stringToBooleanConverter.ConvertFromStringToBool(row.Counter);
            model.IsInGlobal            = _stringToBooleanConverter.ConvertFromStringToBool(row.IsInGlobal);
            model.IsChecked             = _stringToBooleanConverter.ConvertFromStringToBool(row.Checked);
            model.SoulBreakPointsGained = _intConverter.ConvertFromStringToInt(row.SB);

            model.IntroducingEventName = row.IntroducingEvent;
            model.IntroducingEventId   = 0; //filled in during merge phase
            model.JapaneseName         = row.JapaneseName;
            model.EnlirId = row.ID;

            model.OrbRequirements = GetOrbRequirements(row);

            _logger.LogDebug("Converted AbilityRow to Ability: {Id} - {Description}", model.Id, model.Description);

            return(model);
        }
Exemplo n.º 11
0
        private IEnumerable <RecordSphereLevel> GetRecordSphereLevels(RecordSphereRow row)
        {
            IList <RecordSphereLevel> recordSphereLevels = new List <RecordSphereLevel>();

            //can be up to 5 levels

            //level 1
            if (!String.IsNullOrWhiteSpace(row.BenefitLevel1?.Replace(DashCharacter, String.Empty)))
            {
                RecordSphereLevel rsl = new RecordSphereLevel()
                {
                    Level = 1, Benefit = row.BenefitLevel1, RequiredMotes = new List <ItemWithCountAndStarLevel>()
                };

                //mote 1
                if (!String.IsNullOrWhiteSpace(row.Mote1Type)) //we use this type of mote
                {
                    ItemWithStarLevel         iwsl   = ExtractItemWithStarLevel(row.Mote1Type);
                    ItemWithCountAndStarLevel iwcasl = new ItemWithCountAndStarLevel()
                    {
                        ItemCount     = _intConverter.ConvertFromStringToInt(row.Mote1AmountLevel1),
                        ItemName      = iwsl.ItemName,
                        ItemStarLevel = iwsl.ItemStarLevel
                    };
                    if (iwcasl.ItemCount > 0)
                    {
                        rsl.RequiredMotes.Add(iwcasl);
                    }
                }

                //mote 2
                if (!String.IsNullOrWhiteSpace(row.Mote2Type)) //we use this type of mote
                {
                    ItemWithStarLevel         iwsl   = ExtractItemWithStarLevel(row.Mote2Type);
                    ItemWithCountAndStarLevel iwcasl = new ItemWithCountAndStarLevel()
                    {
                        ItemCount     = _intConverter.ConvertFromStringToInt(row.Mote2AmountLevel1),
                        ItemName      = iwsl.ItemName,
                        ItemStarLevel = iwsl.ItemStarLevel
                    };

                    if (iwcasl.ItemCount > 0)
                    {
                        rsl.RequiredMotes.Add(iwcasl);
                    }
                }

                //mote 3
                if (!String.IsNullOrWhiteSpace(row.Mote3Type)) //we use this type of mote
                {
                    ItemWithStarLevel         iwsl   = ExtractItemWithStarLevel(row.Mote3Type);
                    ItemWithCountAndStarLevel iwcasl = new ItemWithCountAndStarLevel()
                    {
                        ItemCount     = _intConverter.ConvertFromStringToInt(row.Mote3AmountLevel1),
                        ItemName      = iwsl.ItemName,
                        ItemStarLevel = iwsl.ItemStarLevel
                    };

                    if (iwcasl.ItemCount > 0)
                    {
                        rsl.RequiredMotes.Add(iwcasl);
                    }
                }

                //mote 4
                if (!String.IsNullOrWhiteSpace(row.Mote4Type)) //we use this type of mote
                {
                    ItemWithStarLevel         iwsl   = ExtractItemWithStarLevel(row.Mote4Type);
                    ItemWithCountAndStarLevel iwcasl = new ItemWithCountAndStarLevel()
                    {
                        ItemCount     = _intConverter.ConvertFromStringToInt(row.Mote4AmountLevel1),
                        ItemName      = iwsl.ItemName,
                        ItemStarLevel = iwsl.ItemStarLevel
                    };

                    if (iwcasl.ItemCount > 0)
                    {
                        rsl.RequiredMotes.Add(iwcasl);
                    }
                }

                recordSphereLevels.Add(rsl);
            }

            //level 2
            if (!String.IsNullOrWhiteSpace(row.BenefitLevel2?.Replace(DashCharacter, String.Empty)))
            {
                RecordSphereLevel rs2 = new RecordSphereLevel()
                {
                    Level = 2, Benefit = row.BenefitLevel2, RequiredMotes = new List <ItemWithCountAndStarLevel>()
                };

                //mote 1
                if (!String.IsNullOrWhiteSpace(row.Mote1Type)) //we use this type of mote
                {
                    ItemWithStarLevel         iwsl   = ExtractItemWithStarLevel(row.Mote1Type);
                    ItemWithCountAndStarLevel iwcasl = new ItemWithCountAndStarLevel()
                    {
                        ItemCount     = _intConverter.ConvertFromStringToInt(row.Mote1AmountLevel2),
                        ItemName      = iwsl.ItemName,
                        ItemStarLevel = iwsl.ItemStarLevel
                    };

                    if (iwcasl.ItemCount > 0)
                    {
                        rs2.RequiredMotes.Add(iwcasl);
                    }
                }

                //mote 2
                if (!String.IsNullOrWhiteSpace(row.Mote2Type)) //we use this type of mote
                {
                    ItemWithStarLevel         iwsl   = ExtractItemWithStarLevel(row.Mote2Type);
                    ItemWithCountAndStarLevel iwcasl = new ItemWithCountAndStarLevel()
                    {
                        ItemCount     = _intConverter.ConvertFromStringToInt(row.Mote2AmountLevel2),
                        ItemName      = iwsl.ItemName,
                        ItemStarLevel = iwsl.ItemStarLevel
                    };

                    if (iwcasl.ItemCount > 0)
                    {
                        rs2.RequiredMotes.Add(iwcasl);
                    }
                }

                //mote 3
                if (!String.IsNullOrWhiteSpace(row.Mote3Type)) //we use this type of mote
                {
                    ItemWithStarLevel         iwsl   = ExtractItemWithStarLevel(row.Mote3Type);
                    ItemWithCountAndStarLevel iwcasl = new ItemWithCountAndStarLevel()
                    {
                        ItemCount     = _intConverter.ConvertFromStringToInt(row.Mote3AmountLevel2),
                        ItemName      = iwsl.ItemName,
                        ItemStarLevel = iwsl.ItemStarLevel
                    };

                    if (iwcasl.ItemCount > 0)
                    {
                        rs2.RequiredMotes.Add(iwcasl);
                    }
                }

                //mote 4
                if (!String.IsNullOrWhiteSpace(row.Mote4Type)) //we use this type of mote
                {
                    ItemWithStarLevel         iwsl   = ExtractItemWithStarLevel(row.Mote4Type);
                    ItemWithCountAndStarLevel iwcasl = new ItemWithCountAndStarLevel()
                    {
                        ItemCount     = _intConverter.ConvertFromStringToInt(row.Mote4AmountLevel2),
                        ItemName      = iwsl.ItemName,
                        ItemStarLevel = iwsl.ItemStarLevel
                    };

                    if (iwcasl.ItemCount > 0)
                    {
                        rs2.RequiredMotes.Add(iwcasl);
                    }
                }

                recordSphereLevels.Add(rs2);
            }

            //level 3
            if (!String.IsNullOrWhiteSpace(row.BenefitLevel3?.Replace(DashCharacter, String.Empty)))
            {
                RecordSphereLevel rs3 = new RecordSphereLevel()
                {
                    Level = 3, Benefit = row.BenefitLevel3, RequiredMotes = new List <ItemWithCountAndStarLevel>()
                };

                //mote 1
                if (!String.IsNullOrWhiteSpace(row.Mote1Type)) //we use this type of mote
                {
                    ItemWithStarLevel         iwsl   = ExtractItemWithStarLevel(row.Mote1Type);
                    ItemWithCountAndStarLevel iwcasl = new ItemWithCountAndStarLevel()
                    {
                        ItemCount     = _intConverter.ConvertFromStringToInt(row.Mote1AmountLevel3),
                        ItemName      = iwsl.ItemName,
                        ItemStarLevel = iwsl.ItemStarLevel
                    };

                    if (iwcasl.ItemCount > 0)
                    {
                        rs3.RequiredMotes.Add(iwcasl);
                    }
                }

                //mote 2
                if (!String.IsNullOrWhiteSpace(row.Mote2Type)) //we use this type of mote
                {
                    ItemWithStarLevel         iwsl   = ExtractItemWithStarLevel(row.Mote2Type);
                    ItemWithCountAndStarLevel iwcasl = new ItemWithCountAndStarLevel()
                    {
                        ItemCount     = _intConverter.ConvertFromStringToInt(row.Mote2AmountLevel3),
                        ItemName      = iwsl.ItemName,
                        ItemStarLevel = iwsl.ItemStarLevel
                    };

                    if (iwcasl.ItemCount > 0)
                    {
                        rs3.RequiredMotes.Add(iwcasl);
                    }
                }

                //mote 3
                if (!String.IsNullOrWhiteSpace(row.Mote3Type)) //we use this type of mote
                {
                    ItemWithStarLevel         iwsl   = ExtractItemWithStarLevel(row.Mote3Type);
                    ItemWithCountAndStarLevel iwcasl = new ItemWithCountAndStarLevel()
                    {
                        ItemCount     = _intConverter.ConvertFromStringToInt(row.Mote3AmountLevel3),
                        ItemName      = iwsl.ItemName,
                        ItemStarLevel = iwsl.ItemStarLevel
                    };

                    if (iwcasl.ItemCount > 0)
                    {
                        rs3.RequiredMotes.Add(iwcasl);
                    }
                }

                //mote 4
                if (!String.IsNullOrWhiteSpace(row.Mote4Type)) //we use this type of mote
                {
                    ItemWithStarLevel         iwsl   = ExtractItemWithStarLevel(row.Mote4Type);
                    ItemWithCountAndStarLevel iwcasl = new ItemWithCountAndStarLevel()
                    {
                        ItemCount     = _intConverter.ConvertFromStringToInt(row.Mote4AmountLevel3),
                        ItemName      = iwsl.ItemName,
                        ItemStarLevel = iwsl.ItemStarLevel
                    };

                    if (iwcasl.ItemCount > 0)
                    {
                        rs3.RequiredMotes.Add(iwcasl);
                    }
                }

                recordSphereLevels.Add(rs3);
            }

            //level 4
            if (!String.IsNullOrWhiteSpace(row.BenefitLevel4?.Replace(DashCharacter, String.Empty)))
            {
                RecordSphereLevel rs4 = new RecordSphereLevel()
                {
                    Level = 4, Benefit = row.BenefitLevel4, RequiredMotes = new List <ItemWithCountAndStarLevel>()
                };

                //mote 1
                if (!String.IsNullOrWhiteSpace(row.Mote1Type)) //we use this type of mote
                {
                    ItemWithStarLevel         iwsl   = ExtractItemWithStarLevel(row.Mote1Type);
                    ItemWithCountAndStarLevel iwcasl = new ItemWithCountAndStarLevel()
                    {
                        ItemCount     = _intConverter.ConvertFromStringToInt(row.Mote1AmountLevel4),
                        ItemName      = iwsl.ItemName,
                        ItemStarLevel = iwsl.ItemStarLevel
                    };

                    if (iwcasl.ItemCount > 0)
                    {
                        rs4.RequiredMotes.Add(iwcasl);
                    }
                }

                //mote 2
                if (!String.IsNullOrWhiteSpace(row.Mote2Type)) //we use this type of mote
                {
                    ItemWithStarLevel         iwsl   = ExtractItemWithStarLevel(row.Mote2Type);
                    ItemWithCountAndStarLevel iwcasl = new ItemWithCountAndStarLevel()
                    {
                        ItemCount     = _intConverter.ConvertFromStringToInt(row.Mote2AmountLevel4),
                        ItemName      = iwsl.ItemName,
                        ItemStarLevel = iwsl.ItemStarLevel
                    };

                    if (iwcasl.ItemCount > 0)
                    {
                        rs4.RequiredMotes.Add(iwcasl);
                    }
                }

                //mote 3
                if (!String.IsNullOrWhiteSpace(row.Mote3Type)) //we use this type of mote
                {
                    ItemWithStarLevel         iwsl   = ExtractItemWithStarLevel(row.Mote3Type);
                    ItemWithCountAndStarLevel iwcasl = new ItemWithCountAndStarLevel()
                    {
                        ItemCount     = _intConverter.ConvertFromStringToInt(row.Mote3AmountLevel4),
                        ItemName      = iwsl.ItemName,
                        ItemStarLevel = iwsl.ItemStarLevel
                    };

                    if (iwcasl.ItemCount > 0)
                    {
                        rs4.RequiredMotes.Add(iwcasl);
                    }
                }

                //mote 4
                if (!String.IsNullOrWhiteSpace(row.Mote4Type)) //we use this type of mote
                {
                    ItemWithStarLevel         iwsl   = ExtractItemWithStarLevel(row.Mote4Type);
                    ItemWithCountAndStarLevel iwcasl = new ItemWithCountAndStarLevel()
                    {
                        ItemCount     = _intConverter.ConvertFromStringToInt(row.Mote4AmountLevel4),
                        ItemName      = iwsl.ItemName,
                        ItemStarLevel = iwsl.ItemStarLevel
                    };

                    if (iwcasl.ItemCount > 0)
                    {
                        rs4.RequiredMotes.Add(iwcasl);
                    }
                }

                recordSphereLevels.Add(rs4);
            }

            //level 5
            if (!String.IsNullOrWhiteSpace(row.BenefitLevel5?.Replace(DashCharacter, String.Empty)))
            {
                RecordSphereLevel rs5 = new RecordSphereLevel()
                {
                    Level = 5, Benefit = row.BenefitLevel5, RequiredMotes = new List <ItemWithCountAndStarLevel>()
                };

                //mote 1
                if (!String.IsNullOrWhiteSpace(row.Mote1Type)) //we use this type of mote
                {
                    ItemWithStarLevel         iwsl   = ExtractItemWithStarLevel(row.Mote1Type);
                    ItemWithCountAndStarLevel iwcasl = new ItemWithCountAndStarLevel()
                    {
                        ItemCount     = _intConverter.ConvertFromStringToInt(row.Mote1AmountLevel5),
                        ItemName      = iwsl.ItemName,
                        ItemStarLevel = iwsl.ItemStarLevel
                    };

                    if (iwcasl.ItemCount > 0)
                    {
                        rs5.RequiredMotes.Add(iwcasl);
                    }
                }

                //mote 2
                if (!String.IsNullOrWhiteSpace(row.Mote2Type)) //we use this type of mote
                {
                    ItemWithStarLevel         iwsl   = ExtractItemWithStarLevel(row.Mote2Type);
                    ItemWithCountAndStarLevel iwcasl = new ItemWithCountAndStarLevel()
                    {
                        ItemCount     = _intConverter.ConvertFromStringToInt(row.Mote2AmountLevel5),
                        ItemName      = iwsl.ItemName,
                        ItemStarLevel = iwsl.ItemStarLevel
                    };

                    if (iwcasl.ItemCount > 0)
                    {
                        rs5.RequiredMotes.Add(iwcasl);
                    }
                }

                //mote 3
                if (!String.IsNullOrWhiteSpace(row.Mote3Type)) //we use this type of mote
                {
                    ItemWithStarLevel         iwsl   = ExtractItemWithStarLevel(row.Mote3Type);
                    ItemWithCountAndStarLevel iwcasl = new ItemWithCountAndStarLevel()
                    {
                        ItemCount     = _intConverter.ConvertFromStringToInt(row.Mote3AmountLevel5),
                        ItemName      = iwsl.ItemName,
                        ItemStarLevel = iwsl.ItemStarLevel
                    };

                    if (iwcasl.ItemCount > 0)
                    {
                        rs5.RequiredMotes.Add(iwcasl);
                    }
                }

                //mote 4
                if (!String.IsNullOrWhiteSpace(row.Mote4Type)) //we use this type of mote
                {
                    ItemWithStarLevel         iwsl   = ExtractItemWithStarLevel(row.Mote4Type);
                    ItemWithCountAndStarLevel iwcasl = new ItemWithCountAndStarLevel()
                    {
                        ItemCount     = _intConverter.ConvertFromStringToInt(row.Mote4AmountLevel5),
                        ItemName      = iwsl.ItemName,
                        ItemStarLevel = iwsl.ItemStarLevel
                    };

                    if (iwcasl.ItemCount > 0)
                    {
                        rs5.RequiredMotes.Add(iwcasl);
                    }
                }

                recordSphereLevels.Add(rs5);
            }



            return(recordSphereLevels);
        }
Exemplo n.º 12
0
        private IEnumerable <LegendSphereInfo> GetLegendSphereInfo(LegendSphereRow row)
        {
            IList <LegendSphereInfo> legendSphereInfos = new List <LegendSphereInfo>();

            //can be up to 4 indexes (spots from left to right)

            //index 1
            if (!String.IsNullOrWhiteSpace(row.BenefitColumn1?.Replace(DashCharacter, String.Empty)))
            {
                LegendSphereInfo lsi1 = new LegendSphereInfo()
                {
                    Index = 1, Benefit = row.BenefitColumn1, RequiredMotes = new List <ItemWithCountAndStarLevel>()
                };

                //mote 1
                if (!String.IsNullOrWhiteSpace(row.Mote1Type)) //we use this type of mote
                {
                    ItemWithStarLevel         iwsl   = ExtractItemWithStarLevel(row.Mote1Type);
                    ItemWithCountAndStarLevel iwcasl = new ItemWithCountAndStarLevel()
                    {
                        ItemCount     = _intConverter.ConvertFromStringToInt(row.Mote1AmountColumn1),
                        ItemName      = iwsl.ItemName,
                        ItemStarLevel = iwsl.ItemStarLevel
                    };
                    if (iwcasl.ItemCount > 0)
                    {
                        lsi1.RequiredMotes.Add(iwcasl);
                    }
                }

                //mote 2
                if (!String.IsNullOrWhiteSpace(row.Mote2Type)) //we use this type of mote
                {
                    ItemWithStarLevel         iwsl   = ExtractItemWithStarLevel(row.Mote2Type);
                    ItemWithCountAndStarLevel iwcasl = new ItemWithCountAndStarLevel()
                    {
                        ItemCount     = _intConverter.ConvertFromStringToInt(row.Mote2AmountColumn1),
                        ItemName      = iwsl.ItemName,
                        ItemStarLevel = iwsl.ItemStarLevel
                    };

                    if (iwcasl.ItemCount > 0)
                    {
                        lsi1.RequiredMotes.Add(iwcasl);
                    }
                }

                legendSphereInfos.Add(lsi1);
            }

            //index 2
            if (!String.IsNullOrWhiteSpace(row.BenefitColumn2?.Replace(DashCharacter, String.Empty)))
            {
                LegendSphereInfo lsi2 = new LegendSphereInfo()
                {
                    Index = 2, Benefit = row.BenefitColumn2, RequiredMotes = new List <ItemWithCountAndStarLevel>()
                };

                //mote 1
                if (!String.IsNullOrWhiteSpace(row.Mote1Type)) //we use this type of mote
                {
                    ItemWithStarLevel         iwsl   = ExtractItemWithStarLevel(row.Mote1Type);
                    ItemWithCountAndStarLevel iwcasl = new ItemWithCountAndStarLevel()
                    {
                        ItemCount     = _intConverter.ConvertFromStringToInt(row.Mote1AmountColumn2),
                        ItemName      = iwsl.ItemName,
                        ItemStarLevel = iwsl.ItemStarLevel
                    };

                    if (iwcasl.ItemCount > 0)
                    {
                        lsi2.RequiredMotes.Add(iwcasl);
                    }
                }

                //mote 2
                if (!String.IsNullOrWhiteSpace(row.Mote2Type)) //we use this type of mote
                {
                    ItemWithStarLevel         iwsl   = ExtractItemWithStarLevel(row.Mote2Type);
                    ItemWithCountAndStarLevel iwcasl = new ItemWithCountAndStarLevel()
                    {
                        ItemCount     = _intConverter.ConvertFromStringToInt(row.Mote2AmountColumn2),
                        ItemName      = iwsl.ItemName,
                        ItemStarLevel = iwsl.ItemStarLevel
                    };

                    if (iwcasl.ItemCount > 0)
                    {
                        lsi2.RequiredMotes.Add(iwcasl);
                    }
                }

                legendSphereInfos.Add(lsi2);
            }

            //index 3
            if (!String.IsNullOrWhiteSpace(row.BenefitColumn3?.Replace(DashCharacter, String.Empty)))
            {
                LegendSphereInfo lsi3 = new LegendSphereInfo()
                {
                    Index = 3, Benefit = row.BenefitColumn3, RequiredMotes = new List <ItemWithCountAndStarLevel>()
                };

                //mote 1
                if (!String.IsNullOrWhiteSpace(row.Mote1Type)) //we use this type of mote
                {
                    ItemWithStarLevel         iwsl   = ExtractItemWithStarLevel(row.Mote1Type);
                    ItemWithCountAndStarLevel iwcasl = new ItemWithCountAndStarLevel()
                    {
                        ItemCount     = _intConverter.ConvertFromStringToInt(row.Mote1AmountColumn3),
                        ItemName      = iwsl.ItemName,
                        ItemStarLevel = iwsl.ItemStarLevel
                    };

                    if (iwcasl.ItemCount > 0)
                    {
                        lsi3.RequiredMotes.Add(iwcasl);
                    }
                }

                //mote 2
                if (!String.IsNullOrWhiteSpace(row.Mote2Type)) //we use this type of mote
                {
                    ItemWithStarLevel         iwsl   = ExtractItemWithStarLevel(row.Mote2Type);
                    ItemWithCountAndStarLevel iwcasl = new ItemWithCountAndStarLevel()
                    {
                        ItemCount     = _intConverter.ConvertFromStringToInt(row.Mote2AmountColumn3),
                        ItemName      = iwsl.ItemName,
                        ItemStarLevel = iwsl.ItemStarLevel
                    };

                    if (iwcasl.ItemCount > 0)
                    {
                        lsi3.RequiredMotes.Add(iwcasl);
                    }
                }

                legendSphereInfos.Add(lsi3);
            }

            //index 4
            if (!String.IsNullOrWhiteSpace(row.BenefitColumn4?.Replace(DashCharacter, String.Empty)))
            {
                LegendSphereInfo lsi4 = new LegendSphereInfo()
                {
                    Index = 4, Benefit = row.BenefitColumn4, RequiredMotes = new List <ItemWithCountAndStarLevel>()
                };

                //mote 1
                if (!String.IsNullOrWhiteSpace(row.Mote1Type)) //we use this type of mote
                {
                    ItemWithStarLevel         iwsl   = ExtractItemWithStarLevel(row.Mote1Type);
                    ItemWithCountAndStarLevel iwcasl = new ItemWithCountAndStarLevel()
                    {
                        ItemCount     = _intConverter.ConvertFromStringToInt(row.Mote1AmountColumn4),
                        ItemName      = iwsl.ItemName,
                        ItemStarLevel = iwsl.ItemStarLevel
                    };

                    if (iwcasl.ItemCount > 0)
                    {
                        lsi4.RequiredMotes.Add(iwcasl);
                    }
                }

                //mote 2
                if (!String.IsNullOrWhiteSpace(row.Mote2Type)) //we use this type of mote
                {
                    ItemWithStarLevel         iwsl   = ExtractItemWithStarLevel(row.Mote2Type);
                    ItemWithCountAndStarLevel iwcasl = new ItemWithCountAndStarLevel()
                    {
                        ItemCount     = _intConverter.ConvertFromStringToInt(row.Mote2AmountColumn4),
                        ItemName      = iwsl.ItemName,
                        ItemStarLevel = iwsl.ItemStarLevel
                    };

                    if (iwcasl.ItemCount > 0)
                    {
                        lsi4.RequiredMotes.Add(iwcasl);
                    }
                }

                legendSphereInfos.Add(lsi4);
            }

            return(legendSphereInfos);
        }