public static EquipShort[] GetEquipmentByPart(int id) { ArrayList wp = new ArrayList(); int i = 0; foreach(DictionaryEntry entry in GameHandler.Instance().weapons) { if(DataHolder.Weapon((int)entry.Key).equipPart[id]) { wp.Add((int)entry.Key); i++; } } ArrayList am = new ArrayList(); foreach(DictionaryEntry entry in GameHandler.Instance().armors) { if(DataHolder.Armor((int)entry.Key).equipPart[id]) { am.Add((int)entry.Key); i++; } } EquipShort[] es = new EquipShort[i]; i = 0; foreach(int entry in wp) { es[i] = new EquipShort(EquipSet.WEAPON, entry); i++; } foreach(int entry in am) { es[i] = new EquipShort(EquipSet.ARMOR, entry); i++; } return es; }
public static EquipShort[] GetEquipment() { EquipShort[] es = new EquipShort[GameHandler.Instance().weapons.Count+GameHandler.Instance().armors.Count]; int i = 0; foreach(DictionaryEntry entry in GameHandler.Instance().weapons) { es[i] = new EquipShort(EquipSet.WEAPON, (int)entry.Key); i++; } foreach(DictionaryEntry entry in GameHandler.Instance().armors) { es[i] = new EquipShort(EquipSet.ARMOR, (int)entry.Key); i++; } return es; }
public int[] GetElementChanges(EquipShort[] equips) { int[] def = new int[this.element.Length]; ArrayList set = new ArrayList(); for(int i=0; i<this.element.Length; i++) { for(int j=0; j<equips.Length; j++) { if(!set.Contains(i)) { Equipment e = equips[j].GetEquipment(); if(e != null) { def[i] += e.bonus.GetElementDefence(i); if(SimpleOperator.ADD.Equals(e.elementOperator[i])) { def[i]+= e.elementValue[i]; } else if(SimpleOperator.SUB.Equals(e.elementOperator[i])) { def[i] -= e.elementValue[i]; } else if(SimpleOperator.SET.Equals(e.elementOperator[i])) { def[i] = e.elementValue[i]; set.Add(i); } } } } } return def; }
public int[] GetEquipChanges(EquipShort[] equips) { int[] changes = new int[this.status.Length]; ArrayList checkedWeapons = new ArrayList(); ArrayList checkedArmors = new ArrayList(); for(int i=0; i<equips.Length; i++) { if(!equips[i].IsNone()) { Equipment eqp = null; bool add = true; if(equips[i].IsWeapon()) { eqp = DataHolder.Weapon(equips[i].equipID); if(eqp.IsMulti() && checkedWeapons.Contains(equips[i].equipID)) { add = false; } else { checkedWeapons.Add(equips[i].equipID); } } else if(equips[i].IsArmor()) { eqp = DataHolder.Armor(equips[i].equipID); if(eqp.IsMulti() && checkedArmors.Contains(equips[i].equipID)) { add = false; } else { checkedArmors.Add(equips[i].equipID); } } if(add) { int[] b = eqp.bonus.GetStatusBonus(); for(int j=0; j<b.Length; j++) { if(b[j] != 0) { changes[j] += b[j]; } } } } } return changes; }
public EquipShort[] GetFakeEquip(int partID, int equipID, EquipSet type) { EquipShort[] equip = new EquipShort[this.equipment.Length]; for(int i=0; i<equip.Length; i++) { equip[i] = new EquipShort(this.equipment[i].type, this.equipment[i].equipID); equip[i].blocked = this.equipment[i].blocked; } Equipment eqp = null; if(EquipSet.WEAPON.Equals(type)) { eqp = DataHolder.Weapon(equipID); } else if(EquipSet.ARMOR.Equals(type)) { eqp = DataHolder.Armor(equipID); } // unequip old if(partID >= 0) { if(equip[partID].IsNone() && equip[partID].blocked) { partID = equip[partID].equipID; } if(!equip[partID].IsNone()) { Equipment eqp2 = null; if(equip[partID].IsWeapon()) { eqp2 = DataHolder.Weapon(equip[partID].equipID); } else if(equip[partID].IsArmor()) { eqp2 = DataHolder.Armor(equip[partID].equipID); } if(eqp2.IsSingle()) { equip[partID].Change(EquipSet.NONE, 0); } else if(eqp2.IsMulti()) { for(int i=0; i<eqp2.equipPart.Length; i++) { if(eqp2.equipPart[i]) { equip[i].Change(EquipSet.NONE, 0); } } } for(int i=0; i<eqp2.blockPart.Length; i++) { if(eqp2.blockPart[i]) { equip[i].Change(EquipSet.NONE, 0); } } } } // equip new if(eqp != null && eqp.CanEquip(equipID, this)) { // check partID, if -1 get first partID that matches if(partID == -1) { for(int i=0; i<eqp.equipPart.Length; i++) { if(eqp.equipPart[i] && DataHolder.Class(this.currentClass).equipPart[i]) { partID = i; break; } } } if(eqp.IsSingle()) { equip[partID].Change(type, equipID); } else if(eqp.IsMulti()) { for(int i=0; i<eqp.equipPart.Length; i++) { if(eqp.equipPart[i]) { equip[i].Change(type, equipID); } } } for(int i=0; i<eqp.blockPart.Length; i++) { if(eqp.blockPart[i]) { equip[i].Change(EquipSet.NONE, partID, true); } } } return equip; }