public void InitializeAttributes() { weaponAttributes = GameManager.instance.WeaponAttributeDatabase.GetWeaponAttributes(this); foreach (WeaponAttribute attribute in weaponAttributes) { attribute.InitializeAttribute(); } if (rarity == Rarity.Legendary) { specialWeaponAttribute = GameManager.instance.WeaponAttributeDatabase.GetSpecialWeaponAttribute(this); specialWeaponAttribute.InitializeAttribute(this); } }
public void LoadFromSave(WeaponSave save) { loaded = true; this.rarity = save.rarity; for (int i = 0; i < colours.Length; i++) { colours[i] = new Color(save.colours[i].r, save.colours[i].g, save.colours[i].b); } WeaponAttribute[] temp = new WeaponAttribute[save.attributes.Length]; for (int i = 0; i < temp.Length; i++) { temp[i] = new WeaponAttribute(); temp[i].Create(save.attributes[i].type, save.attributes[i].value, this); temp[i].InitializeAttribute(); } specialWeaponAttribute = GameManager.instance.WeaponAttributeDatabase.LoadSpecialWeaponAttribute(save.specialAttributeType); specialWeaponAttribute.InitializeAttribute(this); weaponAttributes = temp; OnLoad(); }
public SpecialWeaponAttribute GetSpecialWeaponAttribute(Weapon weapon) { SpecialWeaponAttribute temp = null; bool found = false; int breakAmount = 10; int currentBreakAmount = 0; while (!found) { temp = specialWeaponAttributes[Random.Range(0, specialWeaponAttributes.Length)]; found = temp.CanAttachToWeapon(weapon); if (!found) { currentBreakAmount++; } if (currentBreakAmount >= breakAmount) { throw new System.Exception("Potential infinite loop stopped while selecting a special attribute"); } } return(temp); }