- TT.store(posKey, value_to_tt(value, ss->ply), BOUND_EXACT,
- std::min(DEPTH_MAX - ONE_PLY, depth + 6 * ONE_PLY), MOVE_NONE, VALUE_NONE);
+ if (TB50MoveRule) {
+ value = v < -1 ? -VALUE_MATE + MAX_PLY + ss->ply
+ : v > 1 ? VALUE_MATE - MAX_PLY - ss->ply
+ : VALUE_DRAW + 2 * v;
+ }
+ else
+ {
+ value = v < 0 ? -VALUE_MATE + MAX_PLY + ss->ply
+ : v > 0 ? VALUE_MATE - MAX_PLY - ss->ply
+ : VALUE_DRAW;
+ }
+
+ TT.store(posKey, value_to_tt(value, ss->ply), BOUND_EXACT,
+ std::min(DEPTH_MAX - ONE_PLY, depth + 6 * ONE_PLY), MOVE_NONE, VALUE_NONE);