anchor.diff:  
   class DamageEffect {
     DamageType damageType;
  -  List<double> baseByRank;
  +  List<int> baseByRank;
     int maxRank;
     List<ScaledValue> ratios = [];
   
  
positive.code:   }
  }
  
  List<double> lookupEffectArray(Map data, String effectName) {
    if (!effectName.startsWith('e')) {
      throw new ArgumentError('$effectName is not an effect in ${data["name"]}');
    }
  
    List<List<double>> effects = data['effect'];
    int effectIndex = int.parse(effectName.substring(1));
    List<double> effectArray = effects[effectIndex];
    if (effectArray == null) {
      throw new ArgumentError('Lookup failed for $effectName in ${data["name"]}');
    }
    return effectArray;
  }
  
negative.code: 
    String summaryStringForRank(int rank) {
      int rankIndex = rank - 1;
      int baseDamage = baseByRank[rankIndex];
      String summary = baseDamage == 0.0 ? '' : '${baseDamage} ';
      for (var ratio in ratios) {
        summary += '+${ratio.ratioByRank[rankIndex]} ';
  