anchor.diff:    List<GameEntity> doomedTimeClones = []; //help fight the final boss(es).
     String causeOfDeath = ""; //fill in every time you die. only matters if you're dead at end
     GameEntity crowned = null; //TODO figure out how this should work. for now, crowns count as Game Entities, but should be an Item eventually
  -  GameEntity(this.name, this.id, this.session);
  +
  +  GameEntity(this.name, this.id, this.session) {
  +    stats['sanity'] = 0;
  +    stats['alchemy'] = 0;
  +    stats['currentHP'] = 0;
  +    stats['hp'] = 0;
  +    stats['RELATIONSHIPS'] = 0;
  +    stats['minLuck'] = 0;
  +    stats['maxLuck'] = 0;
  +    stats['freeWill'] = 0;
  +    stats['mobility'] = 0;
  +    stats['power'] = 0;  //power is generic sign of level.
  +  }
   
     //TODO grab out every method that current gameEntity, Player and PlayerSnapshot are required to have.
     //TODO make sure Player's @overide them.
  
positive.code:     return ret + pname +" (" + (this.getStat("currentHP")).round() +" hp, " + (this.getStat("power")).round() + " power)</font>"; //TODO denizens are aspect colored.
    }
    void flipOut(reason){
      this.flippingOutOverDeadPlayer = null;
      this.flipOutReason = reason;
    }
    //TODO this will be different for different children. ???
    void addPrototyping(object){
      this.name = object.name + this.name; //sprite becomes puppetsprite.
      this.fraymotifs.addAll(object.fraymotifs);
      if(object.fraymotifs.length == 0){
        var f = new Fraymotif([], object.name + "Sprite Beam!", 1);
        f.effects.add(new FraymotifEffect("power",2,true)); //do damage
        f.effects.add(new FraymotifEffect("hp",1,true)); //heal
        f.flavorText = " An appropriately themed beam of light damages enemies and heals allies. ";
        this.fraymotifs.add(f);
      }
      this.corrupted = object.corrupted;
      this.helpfulness = object.helpfulness; //completely overridden.
      this.helpPhrase = object.helpPhrase;
      this.grist += object.grist;
      this.lusus = object.lusus;
      this.minLuck += object.minLuck;
      this.currentHP += object.currentHP;
      this.hp += object.hp;
      this.mobility += object.mobility;
      this.maxLuck += object.maxLuck;
      this.freeWill += object.freeWill;
      this.power += object.power;
      this.illegal = object.illegal;
      this.minLuck += object.minLuck;
      this.minLuck += object.minLuck;
      this.minLuck += object.minLuck;
      this.player = object.player;
    }
  
    dynamic htmlTitleBasic(){
      return this.name;
    }
  
negative.code:   Session session;
    String name;
    bool dead = false;
    bool corrupted = false; //players are corrupted at level 4. will be easier than always checking grimDark level
    List<dynamic> fraymotifs = [];
    bool usedFraymotifThisTurn = false;
    List<dynamic> buffs = []; //only used in strifes, array of BuffStats (from fraymotifs and eventually weapons)
    HashMap stats = {};
    List<Relationship> relationships; //not to be confused with the RELATIONSHIPS stat which is the value of all relationships.
    var permaBuffs = {"MANGRIT":0}; //is an object so it looks like a player with stats.  for things like manGrit which are permanent buffs to power (because modding power directly gets OP as shit because power controls future power)
    num renderingType = 0; //0 means default for this sim.
    List<dynamic> associatedStats = [];  //most players will have a 2x, a 1x and a -1x stat.
  