public AttributeDefinition(AttributeDefinition def)
 {
     Name        = def.Name;
     ShortName   = def.ShortName;
     Abbreviated = def.Abbreviated;
     Description = def.Description;
     Type        = def.Type;
     Minimum     = def.Minimum;
     Maximum     = def.Maximum;
     Calculation = new AttributeCalculation(def.Calculation);
 }
 public AttributeDefinition()
 {
     Type        = AttributeDefinitionType.None;
     Name        = "";
     ShortName   = "";
     Abbreviated = "";
     Description = "";
     Minimum     = 0;
     Maximum     = 0;
     Calculation = new AttributeCalculation();
 }
 public AttributeDefinition(string name, string short_name, string abbreviated, string description, int minimum, int maximum, AttributeDefinitionType type,
                            AttributeCalculation calc)
 {
     Name        = name;
     ShortName   = short_name;
     Abbreviated = abbreviated;
     Description = description;
     Type        = type;
     Minimum     = minimum;
     Maximum     = maximum;
     Calculation = new AttributeCalculation(calc);
 }
 public AttributeCalculation(AttributeCalculation calc)
 {
     if (calc != null)
     {
         if (calc.Attribute1 != null)
         {
             Attribute1 = new AttributeModifier(calc.Attribute1);
         }
         if (calc.Attribute2 != null)
         {
             Attribute2 = new AttributeModifier(calc.Attribute2);
         }
         if (calc.Attribute3 != null)
         {
             Attribute3 = new AttributeModifier(calc.Attribute3);
         }
         Operator1 = calc.Operator1;
         Operator2 = calc.Operator2;
     }
 }