ChessLang 액션 완전 레퍼런스

액션 레퍼런스

액션은 게임 상태를 수정하는 명령입니다. 트리거, 효과, 스크립트에서 사용됩니다.

기물 액션

set

기물 상태 또는 게임 변수를 수정합니다:

chesslang
# 기물 상태 설정
set piece.state.rage = 3
set piece.state.moved = true

# 게임 상태 설정
set game.state.bonus = 10

# 산술
set piece.state.count = piece.state.count + 1

매개변수:

매개변수설명
target수정할 상태 변수
value새 값

예시:

chesslang
trigger gain_experience {
  on: capture
  do: set piece.state.exp = piece.state.exp + captured.value
}

trigger level_up {
  on: move
  when: piece.state.exp >= 10
  do: {
    set piece.state.level = piece.state.level + 1
    set piece.state.exp = 0
  }
}

create

보드에 새 기물을 생성합니다:

chesslang
create Pawn at e4
create Queen at d1 for White
create piece.type at target

매개변수:

매개변수설명
type생성할 기물 타입
position배치할 위치
owner소유자 플레이어 (선택)

예시:

chesslang
trigger spawn_reinforcement {
  on: turn_start
  when: game.turnNumber % 10 == 0
  do: create Pawn at random_empty(zone.spawn)
}

trigger split {
  on: move
  when: piece.type == Divider
  do: {
    create Pawn at origin for piece.owner
  }
}

remove

보드에서 기물을 제거합니다:

chesslang
remove piece
remove captured
remove pieces at e4
remove pieces in radius(1) from target
remove pieces in zone.danger where enemy

매개변수:

매개변수설명
target제거할 기물 또는 기물들

예시:

chesslang
trigger atomic_explosion {
  on: capture
  do: {
    remove piece                              # 잡는 기물 제거
    remove captured                           # 잡힌 기물 제거
    remove pieces in radius(1) from target    # 인접 기물 제거
  }
}

trigger clear_zone {
  on: turn_end
  when: game.turnNumber == 20
  do: remove pieces in zone.danger
}

transform

기물을 다른 타입으로 변경합니다:

chesslang
transform piece to Queen
transform piece to piece.state.evolution

매개변수:

매개변수설명
piece변환할 기물
type새 기물 타입

예시:

chesslang
trigger promotion {
  on: move
  when: piece.type == Pawn and target on rank 8
  do: transform piece to Queen
}

trigger evolve {
  on: capture
  when: piece.state.captures >= 3
  do: transform piece to piece.state.evolution_type
}

trigger rage_mode {
  on: move
  when: piece.type == Berserker and piece.state.rage >= 5
  do: transform piece to RagingBerserker
}

보드 액션

mark

칸에 효과를 적용합니다:

chesslang
mark target with fire
mark origin with trap
mark pos with effect for duration

매개변수:

매개변수설명
position표시할 칸
effect적용할 효과
duration지속 시간 (선택)

예시:

chesslang
effect fire {
  damages: [any]
  visual: highlight(red)
}

trigger leave_fire {
  on: move
  when: piece.type == Dragon
  do: mark origin with fire for 3
}

trigger create_trap {
  on: move
  when: piece.type == Trapper and piece.state.traps < 3
  do: {
    mark origin with trap
    set piece.state.traps = piece.state.traps + 1
  }
}

unmark

칸에서 효과를 제거합니다:

chesslang
unmark target
unmark pos with fire
unmark all with ice

예시:

chesslang
trigger cleanse {
  on: move
  when: piece.type == Healer
  do: unmark target
}

trigger melt_ice {
  on: turn_start
  when: game.state.temperature > 0
  do: unmark all with ice
}

게임 액션

win

승자를 선언합니다:

chesslang
win White
win Black
win player
win opponent
win piece.owner

예시:

chesslang
trigger hill_victory {
  on: move
  when: piece.type == King and target in zone.hill
  do: win piece.owner
}

trigger elimination {
  on: capture
  when: opponent.pieces == 0
  do: win player
}

lose

패자를 선언합니다:

chesslang
lose White
lose Black
lose player
lose opponent

예시:

chesslang
trigger timeout {
  on: turn_end
  when: game.state.timer <= 0
  do: lose player
}

draw

무승부를 선언합니다:

chesslang
draw
draw with reason "Mutual agreement"

예시:

chesslang
trigger mutual_destruction {
  on: capture
  when: player.pieces == 1 and opponent.pieces == 1
  do: draw
}

end_turn

현재 턴을 종료합니다:

chesslang
end_turn

예시:

chesslang
trigger forced_end {
  on: move
  when: piece.type == Sprinter
  do: end_turn
}

복합 액션

여러 액션

순차적으로 여러 액션을 실행합니다:

chesslang
trigger complex_capture {
  on: capture
  when: piece.type == Vampire
  do: {
    set piece.state.hp = piece.state.hp + captured.value
    create Ghost at origin for opponent
    mark target with blood
  }
}

조건부 액션

액션 내에서 조건을 사용합니다:

chesslang
trigger conditional_reward {
  on: capture
  do: {
    if captured.value >= 5 {
      transform piece to piece.state.evolved_form
    } else {
      set piece.state.exp = piece.state.exp + captured.value
    }
  }
}

효과 액션

효과 정의에서 사용되는 액션들:

on_enter

기물이 칸에 들어올 때 액션:

chesslang
effect spike_trap {
  on_enter: {
    damage entering by 1
    remove entering where hp <= 0
  }
}

on_exit

기물이 칸에서 나갈 때 액션:

chesslang
effect sticky {
  on_exit: {
    set exiting.state.slowed = true
  }
}

on_turn

매 턴 액션:

chesslang
effect poison {
  on_turn: {
    damage occupant by 1
  }
}

완전한 예시

Atomic Chess 폭발

chesslang
trigger atomic_explosion {
  on: capture
  do: {
    # 잡는 기물 제거
    remove piece

    # 폰을 제외한 인접 기물 모두 제거
    for p in pieces in radius(1) from target {
      if p.type != Pawn {
        remove p
      }
    }
  }
}

Trapper 기물

chesslang
piece Trapper {
  move: step(any)
  capture: =move
  state: { traps_placed: 0, max_traps: 3 }
}

effect trap {
  on_enter: capture entering where enemy
  duration: 5
  visual: highlight(red, 0.3)
}

trigger place_trap {
  on: move
  when: piece.type == Trapper and piece.state.traps_placed < piece.state.max_traps
  do: {
    mark origin with trap
    set piece.state.traps_placed = piece.state.traps_placed + 1
  }
}

Phoenix 부활

chesslang
piece Phoenix {
  move: slide(diagonal)
  capture: =move
  state: { rebirths: 0, max_rebirths: 1 }
  value: 7
}

trigger phoenix_rebirth {
  on: capture
  when: captured.type == Phoenix and captured.state.rebirths < captured.state.max_rebirths
  do: {
    create Phoenix at captured.start_pos for captured.owner
    set created.state.rebirths = captured.state.rebirths + 1
  }
}

점진적 파워업

chesslang
piece Warrior {
  move: step(any) * (1 + state.power)
  capture: =move
  state: { power: 0, kills: 0 }
}

trigger warrior_power_up {
  on: capture
  when: piece.type == Warrior
  do: {
    set piece.state.kills = piece.state.kills + 1
    if piece.state.kills >= 3 {
      set piece.state.power = piece.state.power + 1
      set piece.state.kills = 0
    }
  }
}

참고