anchor.diff:  
       /// target 0  = self, 1 = allies, 2 = enemy 3 = enemies.
       FraymotifEffect(Stat this.statName, num this.target, bool this.damageInsteadOfBuff, [String this.flavorText = ""]) {}
  +
  +    JSONObject toJSON() {
  +      JSONObject json = new JSONObject();
  +      json["stat"] = statName.name;
  +      json["target"] = "$target";
  +      json["damageInsteadOfBuff"] = damageInsteadOfBuff.toString();
  +    }
  +
  +    void copyFromJSON(String jsonString) {
  +      JSONObject json = new JSONObject.fromJSONString(jsonString);
  +      statName = Stats.byName[json["name"]];
  +      target = int.parse(json["target"]);
  +      if(json["damageInsteadOfBuff"] == "true") {
  +        damageInsteadOfBuff = true;
  +      }else {
  +        damageInsteadOfBuff = false;
  +      }
  +    }
  +
   
       static List<FraymotifEffect> allEffectsTargetAll() {
           List<FraymotifEffect> ret = new List<FraymotifEffect>();
  
positive.code:         json["name"] = name;
          json["tier"] = "$tier";
          json["desc"] = desc;
          json["target"] = "${effects.first.target}";
          //just assume all fraymotifs just have each of the 4 main effects, targeted at the same thing
          //allEffectsTargetOne
          return json;
      }
  
      @override
  
negative.code:     static int ENEMY = 2;
      Stat statName; //hp heals current hp AND revives the player.
      num target; //self, allies or enemy or enemies, 0, 1, 2, 3
      bool damageInsteadOfBuff = false; // statName can either be applied towards damaging someone or buffing someone.  (damaging self or allies is "healing", buffing enemies is applied in the negative direction.)
      num s = 0; //convineience methods cause i don't think js has enums but am too lazy to confirm.
      num a = 1;
      num e = 2;
  