Program: 164053
Project: 164053
Buggy source:
@Override public void interact(){
  sprite.turnTo(pos,Dungeon.hero.pos);
  if (!Quest.given) {
    GameScene.show(new WndQuest(this,Quest.alternative ? Messages.get(this,"String_Node_Str") : Messages.get(this,"String_Node_Str")){
      @Override public void onBackPressed(){
        super.onBackPressed();
        Quest.given=true;
        Quest.completed=false;
        Pickaxe pick=new Pickaxe();
        if (pick.doPickUp(Dungeon.hero)) {
          GLog.i(Messages.get(Dungeon.hero,"String_Node_Str",pick.name()));
        }
 else {
          Dungeon.level.drop(pick,Dungeon.hero.pos).sprite.drop();
        }
      }
    }
);
    Journal.add(Journal.Feature.TROLL);
  }
 else   if (!Quest.completed) {
    if (Quest.alternative) {
      Pickaxe pick=Dungeon.hero.belongings.getItem(Pickaxe.class);
      if (pick == null) {
        tell(Messages.get(this,"String_Node_Str"));
      }
 else       if (!pick.bloodStained) {
        tell(Messages.get(this,"String_Node_Str"));
      }
 else {
        if (pick.isEquipped(Dungeon.hero)) {
          pick.doUnequip(Dungeon.hero,false);
        }
        pick.detach(Dungeon.hero.belongings.backpack);
        tell(Messages.get(this,"String_Node_Str"));
        Quest.completed=true;
        Quest.reforged=false;
      }
    }
 else {
      Pickaxe pick=Dungeon.hero.belongings.getItem(Pickaxe.class);
      DarkGold gold=Dungeon.hero.belongings.getItem(DarkGold.class);
      if (pick == null) {
        tell(Messages.get(this,"String_Node_Str"));
      }
 else       if (gold == null || gold.quantity() < 15) {
        tell(Messages.get(this,"String_Node_Str"));
      }
 else {
        if (pick.isEquipped(Dungeon.hero)) {
          pick.doUnequip(Dungeon.hero,false);
        }
        pick.detach(Dungeon.hero.belongings.backpack);
        gold.detachAll(Dungeon.hero.belongings.backpack);
        tell(Messages.get(this,"String_Node_Str"));
        Quest.completed=true;
        Quest.reforged=false;
      }
    }
  }
 else   if (!Quest.reforged) {
    GameScene.show(new WndBlacksmith(this,Dungeon.hero));
  }
 else {
    tell(Messages.get(this,"String_Node_Str"));
  }
}

Fixed version (ground truth):
@Override public boolean interact(){
  sprite.turnTo(pos,Dungeon.hero.pos);
  if (!Quest.given) {
    GameScene.show(new WndQuest(this,Quest.alternative ? Messages.get(this,"String_Node_Str") : Messages.get(this,"String_Node_Str")){
      @Override public void onBackPressed(){
        super.onBackPressed();
        Quest.given=true;
        Quest.completed=false;
        Pickaxe pick=new Pickaxe();
        if (pick.doPickUp(Dungeon.hero)) {
          GLog.i(Messages.get(Dungeon.hero,"String_Node_Str",pick.name()));
        }
 else {
          Dungeon.level.drop(pick,Dungeon.hero.pos).sprite.drop();
        }
      }
    }
);
    Journal.add(Journal.Feature.TROLL);
  }
 else   if (!Quest.completed) {
    if (Quest.alternative) {
      Pickaxe pick=Dungeon.hero.belongings.getItem(Pickaxe.class);
      if (pick == null) {
        tell(Messages.get(this,"String_Node_Str"));
      }
 else       if (!pick.bloodStained) {
        tell(Messages.get(this,"String_Node_Str"));
      }
 else {
        if (pick.isEquipped(Dungeon.hero)) {
          pick.doUnequip(Dungeon.hero,false);
        }
        pick.detach(Dungeon.hero.belongings.backpack);
        tell(Messages.get(this,"String_Node_Str"));
        Quest.completed=true;
        Quest.reforged=false;
      }
    }
 else {
      Pickaxe pick=Dungeon.hero.belongings.getItem(Pickaxe.class);
      DarkGold gold=Dungeon.hero.belongings.getItem(DarkGold.class);
      if (pick == null) {
        tell(Messages.get(this,"String_Node_Str"));
      }
 else       if (gold == null || gold.quantity() < 15) {
        tell(Messages.get(this,"String_Node_Str"));
      }
 else {
        if (pick.isEquipped(Dungeon.hero)) {
          pick.doUnequip(Dungeon.hero,false);
        }
        pick.detach(Dungeon.hero.belongings.backpack);
        gold.detachAll(Dungeon.hero.belongings.backpack);
        tell(Messages.get(this,"String_Node_Str"));
        Quest.completed=true;
        Quest.reforged=false;
      }
    }
  }
 else   if (!Quest.reforged) {
    GameScene.show(new WndBlacksmith(this,Dungeon.hero));
  }
 else {
    tell(Messages.get(this,"String_Node_Str"));
  }
  return false;
}