체스판만 보고는 캐슬링이 가능한지 알 수 없는 경우도 있습니다. 따라서 게임을 중단했다가 이어나가기 위해서는 캐슬링 가능 여부에 대한 추가적인 정보가 필요합니다.
Chessembly는 단순한 행마 정의를 넘어, 게임의 "상태(State)"를 기억하고, 그 상태에 따라 행마를 바꾸는 강력한 기능을 제공합니다. 캐슬링 가능 여부도 하나의 State입니다.
예를 들어, "이 기물이 이번에 rook처럼 움직였다면, 다음 턴에는 bishop처럼 움직이게 하라"와 같은 규칙을 만들 수 있습니다.
상태를 관리하는 식은 두 종류로 나뉩니다.
true / false를 반환합니다. (if-state, piece)set-state, transition)이 식들은 관문 역할을 합니다. 뒤에 not 을 붙여 반전할 수도 있습니다.
piece(piece_name)
piece_name (예: windmill-rook)과 일치하면 true를 반환합니다.piece(rook)이 false를 반환하면 그 즉시 연쇄가 종료되므로, 특정 기물 전용 행마를 정의할 때 사용합니다.if-state(key, n)
key의 값이 n과 같으면 true를 반환합니다.key가 한 번도 설정된 적 없다면, 기본값 0으로 간주합니다.)이 식들은 튜토리얼의 move나 take-move와 약간 다르게 작동합니다.
move는 칸을 활성화하는 식입니다.set-state나 transition은 "다음에 실행될 move/take 등이 활성화할 칸에 액션 태그를 미리 붙여두는" 식입니다.이 식들 자체는 (실패하지 않는 한) 항상 true를 반환하여 연쇄를 계속 진행시킵니다.
transition(piece_name)
piece_name으로 기물 교체(승급)"하는 액션 태그를 부착합니다.set-state(key, n)
key의 값을 n으로 설정"하는 액션 태그를 부착합니다.set-state (단독 사용)
set-state를 인자 없이 단독으로 사용하면, 이전에 설정된 마지막 액션 태그를 하나 지웁니다.