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
}
}
}