public CharacterSkills(UnitObject unitObject, FileManager fileManager, IEnumerable <int> skillTabs) : base(unitObject, fileManager) { _skillTabs = new List <SkillTab>(); //to make things easier, let's add all available character skills to the list List <UnitObjectStats.Stat.StatValue> availableSkills = new List <UnitObjectStats.Stat.StatValue>(); ////get the skills the character already knows UnitObjectStats.Stat skills = UnitHelpFunctions.GetComplexValue(unitObject, ItemValueNames.skill_level); ////add them to the complete skill list availableSkills.AddRange(skills.Values); DataTable skillTable = fileManager.GetDataTable("SKILLS"); //let's add all the skills the character doesn't know yet foreach (int skillTab in skillTabs) { DataRow[] skillRows = skillTable.Select("skillTab = " + skillTab); SkillTab skillsInSkillTab = CreateSkillsFromRow(availableSkills, skillTable, skillRows); if (skillsInSkillTab.Skills.Count > 0) { _skillTabs.Add(skillsInSkillTab); } } // select the general skill tab DataRow[] generalSkillRows = skillTable.Select("skillTab = " + 0); _generalSkills = CreateSkillsFromRow(availableSkills, skillTable, generalSkillRows); //add all skills back to the savegame availableSkills.Clear(); foreach (Skill skill in _generalSkills.Skills) { availableSkills.Add(skill.SkillBlock); } foreach (SkillTab skillTab in _skillTabs) { foreach (Skill skill in skillTab.Skills) { availableSkills.Add(skill.SkillBlock); } } //skills.repeatCount = availableSkills.Count; //skills.Values = availableSkills; skills.Values.Clear(); skills.Values.AddRange(availableSkills); }
private void b_addAffix_Click(object sender, EventArgs e) { if (_characterUnit == null || _selectedItem == null) { return; } UnitObjectStats.Stat value = UnitHelpFunctions.GetComplexValue(_selectedItem.Item.UnitObject, ItemValueNames.applied_affix.ToString()); if (value != null) { MessageBox.Show(value.ToString()); } }
public CharacterItems(UnitObject unitObject, FileManager fileManager) : base(unitObject, fileManager) { _itemTable = fileManager.GetDataTable("ITEMS"); DataRow[] itemRow = _itemTable.Select("code = " + unitObject.UnitCode); //DataTable colorTable = _dataSet.GetExcelTableFromStringId("ITEMQUALITY"); //DataRow[] colorRow = colorTable.Select("code = " + _hero.unitCode); if (itemRow.Length > 0) { _isItem = true; uint bitMask = (uint)itemRow[0]["bitmask02"]; _isQuestItem = (bitMask >> 13 & 1) == 1; string maxStackSize = (string)itemRow[0]["stackSize"]; string[] splitResult = maxStackSize.Split(new char[] { ',' }); if (splitResult.Length == 3) { _maxStackSize = int.Parse(splitResult[1]); } if (_maxStackSize <= 0) { _maxStackSize = 1; } _stackSize = UnitHelpFunctions.GetSimpleValue(unitObject, ItemValueNames.item_quantity.ToString()); if (_stackSize <= 0) { _stackSize = 1; } _itemImagePath = CreateImagePath(); _numberOfAugmentations = UnitHelpFunctions.GetSimpleValue(unitObject, ItemValueNames.item_augmented_count.ToString()); _numberOfUpgrades = UnitHelpFunctions.GetSimpleValue(unitObject, ItemValueNames.item_upgraded_count.ToString()); DataTable gameGlobals = fileManager.GetDataTable("GAME_GLOBALS"); //DataRow[] globalsRow = gameGlobals.Select("name = " + "max_item_upgrades"); DataRow[] globalsRow = gameGlobals.Select("Index = " + 16); _maxNumberOfUpgrades = (int)globalsRow[0]["intValue"]; //globalsRow = gameGlobals.Select("name = " + "max_item_augmentations"); globalsRow = gameGlobals.Select("Index = " + 17); _maxNumberOfAffixes = (int)globalsRow[0]["intValue"]; UnitObjectStats.Stat affixes = UnitHelpFunctions.GetComplexValue(unitObject, ItemValueNames.applied_affix.ToString()); if (affixes != null) { _numberOfAffixes = affixes.Values.Count; } int numberOfInherentAffixes = _numberOfAffixes - _numberOfAugmentations; _numberOfAugmentationsLeft = _maxNumberOfAffixes - numberOfInherentAffixes; if (_numberOfAugmentationsLeft < 0) { _numberOfAugmentationsLeft = 0; } _maxNumberOfAugmentations = _numberOfAugmentations + _numberOfAugmentationsLeft; if (_maxNumberOfAugmentations > _maxNumberOfAffixes) { _maxNumberOfAugmentations = _maxNumberOfAffixes; } } _items = new List <CharacterItems>(); foreach (UnitObject item in unitObject.Items) { CharacterItems wrapper = new CharacterItems(item, fileManager); _items.Add(wrapper); } }