Example #1
0
 private void PostConstruction(CharacterLevelSheet levelSheet, EquipmentItemSetEffectSheet equipmentItemSetEffectSheet)
 {
     AttackCountMax      = AttackCountHelper.GetCountMax(Level);
     characterLevelSheet = levelSheet;
     UpdateExp();
     Equip(Inventory.Items, equipmentItemSetEffectSheet);
 }
Example #2
0
 public Player(
     AvatarState avatarState,
     CharacterSheet characterSheet,
     CharacterLevelSheet characterLevelSheet,
     EquipmentItemSetEffectSheet equipmentItemSetEffectSheet
     ) : base(
         null,
         characterSheet,
         avatarState.characterId,
         avatarState.level)
 {
     // FIXME 중복 코드 제거할 것
     Exp.Current      = avatarState.exp;
     Inventory        = avatarState.inventory;
     worldInformation = avatarState.worldInformation;
     weapon           = null;
     armor            = null;
     belt             = null;
     necklace         = null;
     ring             = null;
     monsterMap       = new CollectionMap();
     eventMap         = new CollectionMap();
     hairIndex        = avatarState.hair;
     lensIndex        = avatarState.lens;
     earIndex         = avatarState.ear;
     tailIndex        = avatarState.tail;
     PostConstruction(characterLevelSheet, equipmentItemSetEffectSheet);
 }
Example #3
0
 public Player(
     int level,
     CharacterSheet characterSheet,
     CharacterLevelSheet characterLevelSheet,
     EquipmentItemSetEffectSheet equipmentItemSetEffectSheet
     ) : base(
         null,
         characterSheet,
         GameConfig.DefaultAvatarCharacterId,
         level)
 {
     Exp.Current      = characterLevelSheet[level].Exp;
     Inventory        = new Inventory();
     worldInformation = null;
     weapon           = null;
     armor            = null;
     belt             = null;
     necklace         = null;
     ring             = null;
     monsterMap       = new CollectionMap();
     eventMap         = new CollectionMap();
     hairIndex        = 0;
     lensIndex        = 0;
     earIndex         = 0;
     tailIndex        = 0;
     PostConstruction(characterLevelSheet, equipmentItemSetEffectSheet);
 }
Example #4
0
 public EnemyPlayer(EnemyPlayerDigest enemyPlayerDigest,
                    CharacterSheet characterSheet,
                    CharacterLevelSheet levelSheet,
                    EquipmentItemSetEffectSheet equipmentItemSetEffectSheet
                    ) : base(
         enemyPlayerDigest.Level,
         characterSheet,
         levelSheet,
         equipmentItemSetEffectSheet)
 {
     NameWithHash        = enemyPlayerDigest.NameWithHash;
     weapon              = null;
     armor               = null;
     belt                = null;
     necklace            = null;
     ring                = null;
     monsterMap          = new CollectionMap();
     eventMap            = new CollectionMap();
     hairIndex           = enemyPlayerDigest.HairIndex;
     lensIndex           = enemyPlayerDigest.LensIndex;
     earIndex            = enemyPlayerDigest.EarIndex;
     tailIndex           = enemyPlayerDigest.TailIndex;
     equipments          = enemyPlayerDigest.Equipments as List <Equipment>;
     costumes            = enemyPlayerDigest.Costumes as List <Costume>;
     characterLevelSheet = levelSheet;
     AttackCountMax      = AttackCountHelper.GetCountMax(Level);
     SetEquipmentStat(equipmentItemSetEffectSheet);
 }
Example #5
0
 public StageSimulatorSheets(
     MaterialItemSheet materialItemSheet,
     SkillSheet skillSheet,
     SkillBuffSheet skillBuffSheet,
     BuffSheet buffSheet,
     CharacterSheet characterSheet,
     CharacterLevelSheet characterLevelSheet,
     EquipmentItemSetEffectSheet equipmentItemSetEffectSheet,
     StageSheet stageSheet,
     StageWaveSheet stageWaveSheet,
     EnemySkillSheet enemySkillSheet
     ) : base(
         materialItemSheet,
         skillSheet,
         skillBuffSheet,
         buffSheet,
         characterSheet,
         characterLevelSheet,
         equipmentItemSetEffectSheet
         )
 {
     StageSheet      = stageSheet;
     StageWaveSheet  = stageWaveSheet;
     EnemySkillSheet = enemySkillSheet;
 }
Example #6
0
 private void Equip(IReadOnlyList <Inventory.Item> items, EquipmentItemSetEffectSheet sheet)
 {
     costumes = items.Select(i => i.item)
                .OfType <Costume>()
                .Where(e => e.equipped)
                .ToList();
     equipments = items.Select(i => i.item)
                  .OfType <Equipment>()
                  .Where(e => e.equipped)
                  .ToList();
     SetEquipmentStat(sheet);
 }
Example #7
0
        private void Equip(IReadOnlyList <Inventory.Item> items, EquipmentItemSetEffectSheet sheet)
        {
            _costumes = items.Select(i => i.item)
                        .OfType <Costume>()
                        .Where(e => e.equipped)
                        .ToList();
            _equipments = items.Select(i => i.item)
                          .OfType <Equipment>()
                          .Where(e => e.equipped)
                          .ToList();
            foreach (var equipment in _equipments)
            {
                switch (equipment.ItemSubType)
                {
                case ItemSubType.Weapon:
                    weapon = equipment as Weapon;
                    break;

                case ItemSubType.Armor:
                    armor          = equipment as Armor;
                    defElementType = equipment.ElementalType;
                    break;

                case ItemSubType.Belt:
                    belt = equipment as Belt;
                    break;

                case ItemSubType.Necklace:
                    necklace = equipment as Necklace;
                    break;

                case ItemSubType.Ring:
                    ring = equipment as Ring;
                    break;

                default:
                    throw new RequiredBlockIndexException();
                }
            }

            Stats.SetEquipments(_equipments, sheet);

            foreach (var skill in _equipments.SelectMany(equipment => equipment.Skills))
            {
                Skills.Add(skill);
            }

            foreach (var buffSkill in _equipments.SelectMany(equipment => equipment.BuffSkills))
            {
                Skills.Add(buffSkill);
            }
        }
Example #8
0
 public EnemyPlayer(
     int level,
     CharacterSheet characterSheet,
     CharacterLevelSheet characterLevelSheet,
     EquipmentItemSetEffectSheet equipmentItemSetEffectSheet
     ) : base(
         level,
         characterSheet,
         characterLevelSheet,
         equipmentItemSetEffectSheet
         )
 {
 }
Example #9
0
 public EnemyPlayer(
     AvatarState avatarState,
     CharacterSheet characterSheet,
     CharacterLevelSheet characterLevelSheet,
     EquipmentItemSetEffectSheet equipmentItemSetEffectSheet
     ) : base(
         avatarState,
         characterSheet,
         characterLevelSheet,
         equipmentItemSetEffectSheet
         )
 {
 }
Example #10
0
        public CharacterStats SetAll(
            int level,
            IEnumerable <Equipment> equipments,
            IEnumerable <Consumable> consumables,
            EquipmentItemSetEffectSheet equipmentItemSetEffectSheet
            )
        {
            SetLevel(level, false);
            SetEquipments(equipments, equipmentItemSetEffectSheet, false);
            SetConsumables(consumables, false);
            UpdateLevelStats();
            EqualizeCurrentHPWithHP();

            return(this);
        }
Example #11
0
 protected SimulatorSheets(
     MaterialItemSheet materialItemSheet,
     SkillSheet skillSheet,
     SkillBuffSheet skillBuffSheet,
     BuffSheet buffSheet,
     CharacterSheet characterSheet,
     CharacterLevelSheet characterLevelSheet,
     EquipmentItemSetEffectSheet equipmentItemSetEffectSheet
     )
 {
     MaterialItemSheet           = materialItemSheet;
     SkillSheet                  = skillSheet;
     SkillBuffSheet              = skillBuffSheet;
     BuffSheet                   = buffSheet;
     CharacterSheet              = characterSheet;
     CharacterLevelSheet         = characterLevelSheet;
     EquipmentItemSetEffectSheet = equipmentItemSetEffectSheet;
 }
Example #12
0
        protected void SetEquipmentStat(EquipmentItemSetEffectSheet sheet)
        {
            foreach (var equipment in equipments)
            {
                switch (equipment.ItemSubType)
                {
                case ItemSubType.Weapon:
                    weapon = equipment as Weapon;
                    break;

                case ItemSubType.Armor:
                    armor          = equipment as Armor;
                    defElementType = equipment.ElementalType;
                    break;

                case ItemSubType.Belt:
                    belt = equipment as Belt;
                    break;

                case ItemSubType.Necklace:
                    necklace = equipment as Necklace;
                    break;

                case ItemSubType.Ring:
                    ring = equipment as Ring;
                    break;

                default:
                    throw new RequiredBlockIndexException();
                }
            }

            Stats.SetEquipments(equipments, sheet);

            foreach (var skill in equipments.SelectMany(equipment => equipment.Skills))
            {
                Skills.Add(skill);
            }

            foreach (var buffSkill in equipments.SelectMany(equipment => equipment.BuffSkills))
            {
                Skills.Add(buffSkill);
            }
        }
Example #13
0
 protected Simulator(
     IRandom random,
     AvatarState avatarState,
     List <Guid> foods,
     SimulatorSheets simulatorSheets
     )
 {
     Random                      = random;
     MaterialItemSheet           = simulatorSheets.MaterialItemSheet;
     SkillSheet                  = simulatorSheets.SkillSheet;
     SkillBuffSheet              = simulatorSheets.SkillBuffSheet;
     BuffSheet                   = simulatorSheets.BuffSheet;
     CharacterSheet              = simulatorSheets.CharacterSheet;
     CharacterLevelSheet         = simulatorSheets.CharacterLevelSheet;
     EquipmentItemSetEffectSheet = simulatorSheets.EquipmentItemSetEffectSheet;
     Log    = new BattleLog();
     Player = new Player(avatarState, this);
     Player.Use(foods);
     Player.Stats.EqualizeCurrentHPWithHP();
 }
Example #14
0
 public RankingSimulatorSheets(
     MaterialItemSheet materialItemSheet,
     SkillSheet skillSheet,
     SkillBuffSheet skillBuffSheet,
     BuffSheet buffSheet,
     CharacterSheet characterSheet,
     CharacterLevelSheet characterLevelSheet,
     EquipmentItemSetEffectSheet equipmentItemSetEffectSheet,
     WeeklyArenaRewardSheet weeklyArenaRewardSheet
     ) : base(
         materialItemSheet,
         skillSheet,
         skillBuffSheet,
         buffSheet,
         characterSheet,
         characterLevelSheet,
         equipmentItemSetEffectSheet
         )
 {
     WeeklyArenaRewardSheet = weeklyArenaRewardSheet;
 }
Example #15
0
        /// <summary>
        /// 장비들을 바탕으로 장비 스탯을 재설정한다. 또한 소모품 스탯과 버프 스탯을 다시 계산한다.
        /// </summary>
        /// <param name="value"></param>
        /// <param name="updateImmediate"></param>
        /// <returns></returns>
        public CharacterStats SetEquipments(
            IEnumerable <Equipment> value,
            EquipmentItemSetEffectSheet sheet,
            bool updateImmediate = true
            )
        {
            _equipmentStatModifiers.Clear();
            if (!(value is null))
            {
                foreach (var equipment in value)
                {
                    var statMap = equipment.StatsMap;
                    if (statMap.HasHP)
                    {
                        _equipmentStatModifiers.Add(new StatModifier(StatType.HP, StatModifier.OperationType.Add,
                                                                     statMap.HP));
                    }

                    if (statMap.HasATK)
                    {
                        _equipmentStatModifiers.Add(new StatModifier(StatType.ATK, StatModifier.OperationType.Add,
                                                                     statMap.ATK));
                    }

                    if (statMap.HasDEF)
                    {
                        _equipmentStatModifiers.Add(new StatModifier(StatType.DEF, StatModifier.OperationType.Add,
                                                                     statMap.DEF));
                    }

                    if (statMap.HasCRI)
                    {
                        _equipmentStatModifiers.Add(new StatModifier(StatType.CRI, StatModifier.OperationType.Add,
                                                                     statMap.CRI));
                    }

                    if (statMap.HasHIT)
                    {
                        _equipmentStatModifiers.Add(new StatModifier(StatType.HIT, StatModifier.OperationType.Add,
                                                                     statMap.HIT));
                    }

                    if (statMap.HasSPD)
                    {
                        _equipmentStatModifiers.Add(new StatModifier(StatType.SPD, StatModifier.OperationType.Add,
                                                                     statMap.SPD));
                    }
                }

                // set effects.
                var setEffectRows = sheet.GetSetEffectRows(value);
                foreach (var statModifier in setEffectRows.SelectMany(row => row.StatModifiers.Values))
                {
                    _equipmentStatModifiers.Add(statModifier);
                }
            }

            if (updateImmediate)
            {
                UpdateEquipmentStats();
            }

            return(this);
        }