public static void BuildReferenceList(AllItemAttributes itemAttributes, AllInflictStatuses inflictStatuses, AllAbilities abilities, AllItems items) { foreach (ItemAttributes itemAttr in itemAttributes.ItemAttributes) { itemAttr.ReferencingItemIndexes.Clear(); } foreach (InflictStatus inflictStatus in inflictStatuses.InflictStatuses) { inflictStatus.ReferencingAbilityIDs.Clear(); inflictStatus.ReferencingItemIndexes.Clear(); } for (int index = 0; index < items.Items.Count; index++) { Item item = items.Items[index]; if (item.SIA < itemAttributes.ItemAttributes.Length) { itemAttributes.ItemAttributes[item.SIA].ReferencingItemIndexes.Add(index); } if (item is Weapon) { Weapon weapon = (Weapon)item; if (weapon.Formula.Value != 2) { if (weapon.InflictStatus < inflictStatuses.InflictStatuses.Length) { inflictStatuses.InflictStatuses[weapon.InflictStatus].ReferencingItemIndexes.Add(index); } } } else if (item is ChemistItem) { ChemistItem chemistItem = (ChemistItem)item; if (chemistItem.Formula != 2) { if (chemistItem.InflictStatus < inflictStatuses.InflictStatuses.Length) { inflictStatuses.InflictStatuses[chemistItem.InflictStatus].ReferencingItemIndexes.Add(index); } } } } for (int index = 0; index < abilities.Abilities.Length; index++) { Ability ability = abilities.Abilities[index]; if (ability.IsNormal) { if ((ability.Attributes.Formula.Value != 2) && (ability.Attributes.InflictStatus < inflictStatuses.InflictStatuses.Length)) { inflictStatuses.InflictStatuses[ability.Attributes.InflictStatus].ReferencingAbilityIDs.Add(index); } } } }
public static void RepointSpecificInflictStatus(AllItems items, AllAbilities abilities, AllInflictStatuses allInflictStatuses, byte oldID, byte newID) { for (int itemIndex = 0; itemIndex < items.Items.Count; itemIndex++) { Item item = items.Items[itemIndex]; if (item is Weapon) { Weapon weapon = (Weapon)item; if ((weapon.Formula.Value != 2) && (weapon.InflictStatus == oldID)) { weapon.InflictStatus = newID; weapon.OldInflictStatus = newID; allInflictStatuses.InflictStatuses[newID].ReferencingItemIndexes.Add(itemIndex); } } else if (item is ChemistItem) { ChemistItem chemistItem = (ChemistItem)item; if ((chemistItem.Formula != 2) && (chemistItem.InflictStatus == oldID)) { chemistItem.InflictStatus = newID; chemistItem.OldInflictStatus = newID; allInflictStatuses.InflictStatuses[newID].ReferencingItemIndexes.Add(itemIndex); } } } for (int abilityIndex = 0; abilityIndex < abilities.Abilities.Length; abilityIndex++) { Ability ability = abilities.Abilities[abilityIndex]; if (!ability.IsNormal) { continue; } AbilityAttributes abilityAttrs = ability.Attributes; if ((abilityAttrs.Formula.Value != 2) && (abilityAttrs.InflictStatus == oldID)) { abilityAttrs.InflictStatus = newID; abilityAttrs.OldInflictStatus = newID; allInflictStatuses.InflictStatuses[newID].ReferencingAbilityIDs.Add(abilityIndex); } } allInflictStatuses.InflictStatuses[oldID].ReferencingItemIndexes.Clear(); allInflictStatuses.InflictStatuses[oldID].ReferencingAbilityIDs.Clear(); }
private void UpdateInflictStatus(int itemIndex) { if (itemIndex >= 0) { Item item = ((List <Item>)itemListBox.DataSource)[itemIndex]; if (item is Weapon) { Weapon weapon = (Weapon)item; if (weapon.OldInflictStatus != weapon.InflictStatus) { inflictStatuses.InflictStatuses[weapon.OldInflictStatus].ReferencingItemIndexes.Remove(itemIndex); } if (weapon.Formula.Value == 2) { inflictStatuses.InflictStatuses[weapon.InflictStatus].ReferencingItemIndexes.Remove(itemIndex); } else { inflictStatuses.InflictStatuses[weapon.InflictStatus].ReferencingItemIndexes.Add(itemIndex); } weapon.OldInflictStatus = weapon.InflictStatus; } else if (item is ChemistItem) { ChemistItem chemistItem = (ChemistItem)item; if (chemistItem.OldInflictStatus != chemistItem.InflictStatus) { inflictStatuses.InflictStatuses[chemistItem.OldInflictStatus].ReferencingItemIndexes.Remove(itemIndex); } if (chemistItem.Formula == 2) { inflictStatuses.InflictStatuses[chemistItem.InflictStatus].ReferencingItemIndexes.Remove(itemIndex); } else { inflictStatuses.InflictStatuses[chemistItem.InflictStatus].ReferencingItemIndexes.Add(itemIndex); } chemistItem.OldInflictStatus = chemistItem.InflictStatus; } } }
public static void RepointInflictStatus(AllItems items, AllAbilities abilities, AllInflictStatuses allInflictStatuses) { Dictionary <int, int> repointMap = GetRepointMap <InflictStatus>(allInflictStatuses.InflictStatuses); for (int itemIndex = 0; itemIndex < items.Items.Count; itemIndex++) { Item item = items.Items[itemIndex]; if (item is Weapon) { Weapon weapon = (Weapon)item; if (weapon.Formula.Value != 2) { int newID = 0; if (repointMap.TryGetValue(weapon.InflictStatus, out newID)) { weapon.InflictStatus = (byte)newID; weapon.OldInflictStatus = (byte)newID; allInflictStatuses.InflictStatuses[newID].ReferencingItemIndexes.Add(itemIndex); } } } else if (item is ChemistItem) { ChemistItem chemistItem = (ChemistItem)item; if (chemistItem.Formula != 2) { int newID = 0; if (repointMap.TryGetValue(chemistItem.InflictStatus, out newID)) { chemistItem.InflictStatus = (byte)newID; chemistItem.OldInflictStatus = (byte)newID; allInflictStatuses.InflictStatuses[newID].ReferencingItemIndexes.Add(itemIndex); } } } } for (int abilityIndex = 0; abilityIndex < abilities.Abilities.Length; abilityIndex++) { Ability ability = abilities.Abilities[abilityIndex]; if (!ability.IsNormal) { continue; } AbilityAttributes abilityAttrs = ability.Attributes; if (abilityAttrs.Formula.Value != 2) { int newID = 0; if (repointMap.TryGetValue(abilityAttrs.InflictStatus, out newID)) { abilityAttrs.InflictStatus = (byte)newID; abilityAttrs.OldInflictStatus = (byte)newID; allInflictStatuses.InflictStatuses[newID].ReferencingAbilityIDs.Add(abilityIndex); } } } foreach (int index in repointMap.Keys) { InflictStatus inflictStatus = allInflictStatuses.InflictStatuses[index]; inflictStatus.ReferencingItemIndexes.Clear(); inflictStatus.ReferencingAbilityIDs.Clear(); } }