private void PostConstruction(CharacterLevelSheet levelSheet, EquipmentItemSetEffectSheet equipmentItemSetEffectSheet) { AttackCountMax = AttackCountHelper.GetCountMax(Level); characterLevelSheet = levelSheet; UpdateExp(); Equip(Inventory.Items, equipmentItemSetEffectSheet); }
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); }
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); }
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); }
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; }
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); }
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); } }
public EnemyPlayer( int level, CharacterSheet characterSheet, CharacterLevelSheet characterLevelSheet, EquipmentItemSetEffectSheet equipmentItemSetEffectSheet ) : base( level, characterSheet, characterLevelSheet, equipmentItemSetEffectSheet ) { }
public EnemyPlayer( AvatarState avatarState, CharacterSheet characterSheet, CharacterLevelSheet characterLevelSheet, EquipmentItemSetEffectSheet equipmentItemSetEffectSheet ) : base( avatarState, characterSheet, characterLevelSheet, equipmentItemSetEffectSheet ) { }
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); }
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; }
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); } }
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(); }
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; }
/// <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); }