public boolean actionCheckMeltdown(Actor actor, Generator reactor) {
    float diagnoseDC = 5 + ((1 - meltdown) * 20) ;
    final int FB = structure.upgradeLevel(FEEDBACK_MONITORS) ;
    diagnoseDC -= FB * 5 ;
    
    boolean success = true ;
    if (Rand.yes()) {
      success &= actor.traits.test(FIELD_THEORY, diagnoseDC, 0.5f) ;
      success &= actor.traits.test(CHEMISTRY, 5, 0.5f) ;
    }
    else {
      success &= actor.traits.test(ASSEMBLY, diagnoseDC, 0.5f) ;
      success &= actor.traits.test(SHIELD_AND_ARMOUR, 5, 0.5f) ;
    }
    if (success) {
      meltdown -= (1f + FB) / World.STANDARD_DAY_LENGTH ;
      if (meltdown <= 0) meltdown = 0 ;
      if (verbose) I.say("Repairing core, meltdown level: "+meltdown) ;
    }
    return true ;
  }