스크립트의 기본적인 작동 규칙은 코드 맨위에서부터 내려가며 실행 가능한 코드를 한줄만 사용한다는겁니다.
예를 들어 예문의 첫번째 줄의 코드가 실행되었다면 그 아랫줄의 코드들은 실행되지 않고 다음 턴으로 넘어갑니다. (단 if문은 조건이 맞을 경우 그 아래 블록으로 넘어갑니다)
반대로 만약 아무런 코드도 실행되지 않는다면 마지막줄까지 내려갑니다.
마지막줄까지 아무런 명령어도 실행되지 않는다면 스크립트는 멈춥니다.
이런 이유로 스크립트를 짤때는 스킬의 순서를 잘 생각해서 짜야 합니다.
예를 들어 3번 스킬을 특정 상황에만 쓰고 평소에는 1번 스킬만 쓰고 싶다면 3번 스킬에 조건을 걸어서 위에다 놓고 1번 스킬을 아래에 놓아야 합니다.
1번 스킬을 위에 놓으면 위에서부터 차례대로 실행하는 특성상 1번 스킬만 계속 사용하고 3번 스킬까지
내려가지 않기 때문에 3번 스킬은 실행되지 못합니다.
보통 스크립트의 마지막 줄에는 change(next)가 있어 애완동물이 죽어서 아무런 명령도 실행하지 못할 경우
맨 마지막줄의 다음 애완동물로 교체하는 명령(change(next))이 작동합니다.
순서에 대한 규칙을 이해하셨다면 이제 스크립트에 사용되는 명령어들에 대해 알아보겠습니다.
애완동물 스크립트의 대부분은 use 명령어와 그 뒤의 조건문으로 채워집니다.
나머지 명령어는 그냥 있구나 하는 수준으로만 알아도 무방합니다.
다만 change(next)는 거의 무조건 맨 마지막에 들어갑니다.
use 명령어는 가장 많이 쓰이는 명령어로 지정된 애완동물의 스킬을 사용합니다.
애완동물 대전을 시작하고 스크립트 창을 연 후에 u를 누르면
이렇게 자동완성으로 use 가 뜹니다.
use와 ability는 동일한 역할을 하는 명령어입니다.
use를 치면 뒤에 현재 활성화된 애완동물의 스킬들이 뜹니다. 골라주시면 됩니다.
만약 위에서 지정한 특정 스킬이 아니라 use(#1) 같이 #(숫자)로 하면 현재 활성화된 애완동물의 (숫자)번 슬롯의 스킬만을 사용합니다. #1은 1번 슬롯, #2는 2번 슬롯, #3은 3번 슬롯입니다.
당연한 말이지만 4번 슬롯은 없습니다.
use(#1)을 쓰면 어떤 애완동물이 활성화되어있던간에 1번 슬롯의 스킬을 사용하게 할 수 있습니다.
보통 특정 조건에 맞지 않는 턴에 단순 공격만 하게 하고 싶으면 이 코드를 아래쪽에 배치해서 1번 스킬을 쓰게 합니다. 1번 슬롯에는 일반적으로 평타 스킬이 들어갑니다.
use(유도탄:777) [enemy 스킬을 고른 후 뒤에 대괄호 [를 치면 조건을 걸어 특정 상황에서만 스킬을 쓰게 할 수 있습니다. 그 다음에 enemy(적)이나 self(우리편), round(라운드 수), weather(날씨) 등의 조건이 들어갑니다.
위 짤에서는 enemy 즉 적의 상태를 조건문으로 걸었습니다.
enemy를 친 후 적들 중 하나를 고릅니다. 간단히 #1, #2, #3으로 해도 됩니다.
적을 고르고나서 .을 누르면 그와 관련된 함수가 쭉 뜹니다. 이 중 자주 쓰이는 함수 몇개만 설명하겠습니다.
참고로 enemy(적)와 self(우리편) 둘 다 동일한 함수를 사용합니다.
ability는 상대 애완동물의 스킬을 의미합니다. 보통은 스킬을 지정 후 뒤에 .을 붙여 추가 함수로 스킬을 사용할 수 있나 확인하는 usable만 쓰입니다.
active는 이 애완동물이 현재 맨 앞에 나와 활동중인지 확인합니다.
aura는 이 애완동물에 붙은 버프, 디버프를 지정해서 추가 함수로 버프의 존재(exists)나 지속시간(duration)을 확인합니다.
dead는 지정한 애완동물이 죽었는가를 확인합니다.
exists는 지정한 애완동물이 살아있는지 확인합니다.
hp는 애완동물의 체력을 숫자로 반환하고 부등호를 통해 지정한 숫자보다 높거나 낮은지 확인합니다.
hpp는 애완동물의 체력을 %로 반환합니다. 사용법은 hp와 같습니다.
played는 이 애완동물이 한번이라도 앞에 나왔었는지 확인합니다.
power, speed는 부등호와 함께 애완동물의 힘, 속도가 지정한 수치보다 높거나 낮은지 확인할때 씁니다. 속도는 품종별로 속도에 따라 선후공이 달라져서 각 상황별로 다른 스킬을 써야 할 경우 사용합니다.
조건문에는 지금까지 알아본 enemy, self 말고도 다른 조건을 걸 수 있습니다.
use(유도탄:777) [ round = 1]
1 라운드에 유도탄을 쓰라는 명령입니다.
use(유도탄:777) [ weather(눈보라:205) ] // 날씨가 눈보라일 경우에만 유도탄을 사용합니다. whether 뒤에 .duration을 추가하면 지속시간을 조건으로 걸 수 있습니다.
여기까지가 use명령어의 기본 함수입니다. 이제 나머지 함수를 보시겠습니다.
quit는 조건에 만족할 경우 애완동물 전투를 종료합니다. 보통 필수 애완동물이 죽어서 스크립트를 더 이상 진행할 수 없을 경우 전투 종료로 빠져나가게 합니다.
quit [self(#3).dead] // 3번 애완동물이 죽었을 경우 전투 종료
change는 괄호안에 지정된 애완동물로 교체하는 명령입니다.
change(next) // 다음 애완동물로 교체합니다 (1->2->3)
next 대신 #1, #2, #3을 붙이면 지정한 애완동물로 교체합니다.
if는 조건이 맞을 경우 if와 endif 사이에 있는 스크립트만 실행합니다.
if [ self(#1).active ] // 1번 애완동물이 활성화되었을 경우 use(Flyby:515) [round ~ 1,3] // 1턴과 3턴에만 저공 비행 스킬 사용 use(Thunderbolt:779) // 1,3턴이 아닐때 즉 2턴에 벼락 스킬 사용 use(Explode:282) // 1~3턴이 아니고 천둥벼락이 쿨인 4턴에 폭파 스킬 실행 endif
standby는 꼭 한턴을 쉬어야 할때만 씁니다. 자주 쓰이는 명령어는 아닙니다.
여기까지 대략적인 명령어를 설명드렸지만 솔직히 말하자면 저기 있는 것들 중 실제로 스크립트를 짤 때 쓰이는건 몇개밖에 없습니다. 나머지는 정말 특수한 상황에서만 쓰입니다.
위에서 설명한 것들은 너무 많아 한번에 다 기억하기는 어려우실테니 대충 보시고 넘기셔도 됩니다.
여러분에게 익숙한 익키의 검은 발톱 - 무리 콤보입니다. 코드 첫줄은 상대에게 검은 발톱 디버프(aura(검은 발톱:918).exists)가 없으면([!) 검은 발톱을 씁니다.
그 다음 턴에는 상대에게 검은 발톱 디버프가 있기 때문에 첫번째 줄의 코드는 조건에 맞지 않아 넘어가고
두번째 줄 코드의 조건인 enemy.aura(검은 발톱:918).exists에 만족하기 때문에 [무리] 스킬이 실행됩니다
if [enemy.aura(검은 발톱:918).exists] // 만약 검은 발톱 디버프가 있으면 ability(무리:581) // 무리를 사용 endif ability(검은 발톱:919) [enemy.hp > 500] // 만약 적의 hp가 500이상이면 검은 발톱을 사용 ability(날카로운 갈퀴발톱:1370) // 위 조건들이 모두 만족하지 않으면 날카로운 갈퀴발톱을 사용
위 코드는 적의 hp를 기준으로 사용하는 스킬이 변합니다.
첫 if문은 적에게 검은 발톱 디버프가 없으니 건너뛰고 적의 hp가 500이상이면 검은 발톱 스킬을 씁니다.
다음턴에는 검은발톱 디버프가 있어 if문의 조건이 만족하기 때문에 if 내부의 코드인 무리 스킬을 사용합니다.
만약 적의 hp가 500이하라면 검은 발톱을 쓰지 않기 때문에 그 다음줄의 날카로운 갈퀴발톱을 씁니다.
이렇게 스킬의 위아래 순서를 잘 배치해야 원하는 순서대로 스킬이 나가게 할 수 있습니다. 만약 갈퀴발톱 코드가 맨 위에 있다면 아래에 뭐가 있던 무조건 갈퀴발톱만 쓰게 될겁니다. if~endif문이 맨 아래에 있다면 ability(날카로운 갈퀴발톱:1370)코드가 먼저 실행되기 때문에 if문은 실행할 수 없습니다. 마찬가지로 검은 발톱이 맨 아랫줄이어도 [날카로운 갈퀴발톱]의 코드가 먼저 실행되어 [검은 발톱]은 사용되지 않고 이로 인해 [무리]도 사용되지 않습니다.