anchor.diff:  import "dart:html";
   import "../SBURBSim.dart";
   
  -
  +/*
  +New and improved dialogue. Don't wanna fuck with narration too much. It's terrifying and also SUPPOSED to be rote.
  + */
   class IntroNew extends IntroScene {
   
       Player player = null;
  
positive.code:     //two sections, I'm in the land of x and y!// Cool, what's it like?// It's full of x and y.// Oh.
      //goodLand
      List<PlusMinusConversationalPair> getLandPair() {
          List<PlusMinusConversationalPair> possible1 = new List<PlusMinusConversationalPair>();
          List<PlusMinusConversationalPair> possible2 = new List<PlusMinusConversationalPair>();
          //generic
  
negative.code:         //possible.add(new PlusMinusConversationalPair(["I am finally in the medium!", "Hey, I'm in the medium!", "I'm finally in!"], ["..."],["I'm already playing a game, asshole.","Hell no, I don't want to play whatever shitty game you're talking about."]));
          return <PlusMinusConversationalPair>[rand.pickFrom(possible1), rand.pickFrom(possible2)];
      }
  
  
  
      String corruptedLand(){
  
  		if(player.land != null && player.land.corrupted ){
  			this.player.corruptionLevelOther = 100;
  			//session.logger.info("corrupted land" + this.session.session_id.toString());
  			return "There is ...something very, very wrong about the ${this.player.land.name}. ";
  		}
          return "";
      }
      String corruptedSprite(){
          if(this.player.sprite.corrupted ){
              return "There is ...something very, very wrong about the " + this.player.sprite.htmlTitle();
          }
          return "";
      }
      String changeBoggle(){
          if(this.player.aspect == Aspects.BLOOD){
              return " They boggle vacantly at the " + this.player.land.name + ". ";
          }else if(this.player.aspect == Aspects.MIND){
              return " They ogle at the " + this.player.land.name + ". ";
          }else if(this.player.aspect == Aspects.RAGE){
              return " They glare with bafflement at the " + this.player.land.name + ". ";
          }else if(this.player.aspect == Aspects.TIME){
              return " They are very confused by the " + this.player.land.name + ". ";
          }else if(this.player.aspect == Aspects.VOID){
              return " They stare blankly at the " + this.player.land.name + ". ";
          }else if(this.player.aspect == Aspects.HEART){
              return " They run around excitedly in the " + this.player.land.name + ". ";
          }else if(this.player.aspect == Aspects.BREATH){
              return " They grin excitedly at the " + this.player.land.name + ". ";
          }else if(this.player.aspect == Aspects.LIGHT){
              return " They stare at the " + this.player.land.name + " with unrestrained curiosity. ";
          }else if(this.player.aspect == Aspects.SPACE){
              return " They do not even understand the " + this.player.land.name + ". ";
          }else if(this.player.aspect == Aspects.HOPE){
              return " They are enthused about the " + this.player.land.name + ". ";
          }else if(this.player.aspect == Aspects.LIFE){
              return " They are obviously pleased with " + this.player.land.name + ". ";
          }else if(this.player.aspect == Aspects.DOOM){
              return " They stare with trepidation at the " + this.player.land.name + ". ";
          }
          return  "They boggle vacantly at the " + this.player.land.name + ". ";
      }
      String changePrototyping(Element div){
          String ret = "";
          if(this.player.object_to_prototype.getStat(Stats.POWER) > 200 && rand.nextDouble() > .8){
              String divID = (div.id);
              String canvasHTML = "<br><canvas id='canvaskernel" + divID+"' width='" +canvasWidth.toString() + "' height="+canvasHeight.toString() + "'>  </canvas>";
              appendHtml(div, canvasHTML);
              CanvasElement canvas = querySelector("#canvaskernel"+ divID);
              List<Player> times = findAllAspectPlayers(this.session.players, Aspects.TIME); //they don't have to be in the medium, though
              Player timePlayer = rand.pickFrom(times); //ironically will probably allow more timeless sessions without crashes.
              Drawing.drawTimeGears(canvas);
              Drawing.drawSinglePlayer(canvas, timePlayer);
              ret = "A " + timePlayer.htmlTitleBasic() + " suddenly warps in from the future. ";
              if(timePlayer.dead){
                  ret += "It's a little alarming how much they are bleeding. ";
              }
              ret += " They come with a dire warning of a doomed timeline. ";
              ret += "They dropkick the " + this.player.object_to_prototype.htmlTitle() + " out of the way and jump into the " + this.player.htmlTitleBasic() + "'s kernel sprite instead. <br> ";
              this.player.object_to_prototype = timePlayer.clone();
              this.player.object_to_prototype.name = timePlayer.chatHandle;
              this.player.object_to_prototype.helpfulness = 1;
              this.player.object_to_prototype.player = true;
              //shout out to DinceJof for the great sprite phrase
              this.player.object_to_prototype.helpPhrase = " used to be a Player like you, until they took a splinter to the timeline, so they know how all this shit works. Super helpful.";
              //session.logger.info("time player sprite in session: " + this.session.session_id.toString());
  
          }else if((this.player.dead == true || this.player.isDreamSelf == true || this.player.dreamSelf == false) && rand.nextDouble() > .1){ //if tier 2 is ever a thing, make this 50% instead and have spries very attracted to extra corpes later on as well if they aren't already players or...what would even HAPPEN if you prototyped yourself twice....???
              ret = "Through outrageous shenanigans, one of the " + this.player.htmlTitle() + "'s superfluous corpses ends up prototyped into their kernel sprite. <br>";
              this.player.object_to_prototype =this.player.clone() ;//no, don't say 'corpsesprite';
              this.player.object_to_prototype.name = this.player.chatHandle;
              //session.logger.info("player sprite in session: " + this.session.session_id.toString());
              this.player.object_to_prototype.helpfulness = 1;
              this.player.object_to_prototype.player = true;
              this.player.object_to_prototype.helpPhrase = " is interested in trying to figure out how to play the game, since but for shenanigans they would be playing it themselves.";
  
          }
          appendHtml(div, ret);
          return "";
      }
  
      ImportantEvent addImportantEvent(){
          var current_mvp = findStrongestPlayer(this.session.players);
          ////session.logger.info("Entering session, mvp is: " + current_mvp.getStat(Stats.POWER));
          if(this.player.aspect == Aspects.TIME && this.player.object_to_prototype != null && !this.player.object_to_prototype.illegal){ //tier4 gnosis is weird
              return this.session.addImportantEvent(new TimePlayerEnteredSessionWihtoutFrog(this.session, current_mvp.getStat(Stats.POWER),this.player,null) );
          }else{
              return this.session.addImportantEvent(new PlayerEnteredSession(this.session, current_mvp.getStat(Stats.POWER),this.player,null) );
          }
  
      }
  }