4.4 KiB
4.4 KiB
Quests Engine — 퀘스트, 단계, 그리고 저널
Quests Engine은 플레이어의 과제를 관리합니다. 퀘스트는 이름과 번호가 붙은 단계 목록을 가지며, 시나리오가 퀘스트를 시작하고 다음 단계로 진행하고 태그를 달고 완료합니다. 저널 패널은 플레이어가 수락한 퀘스트를 보여 주고, 게임은 그 상태를 저장합니다.
Cthangover(프롤로그의 각성과 낡은 집)와 RPG Plus(숲의 퀘스트)가 이를 사용합니다.
저널
툴바의 저널 아이콘으로 엽니다. 플레이어가 아직 퀘스트를 하나도 수락하지 않았다면 비어 있습니다.
RPG Plus에서는 마을 원로가 첫 퀘스트를 줍니다. 어디를 찾아야 하는지 물어 보세요.
답을 고르면 퀘스트가 저널에 나타납니다.
- 진행 중에는 진행 중인 퀘스트가, 완료에는 끝난 퀘스트가 들어갑니다. 아직 시작하지 않은 퀘스트는 결코 나타나지 않습니다.
- 오른쪽 페이지는 선택한 퀘스트를 보여 줍니다. 끝낸 단계에는 취소선이, 현재 단계에는 표시가 붙고, 이후 단계는 감춰져 있어 저널이 이야기를 미리 까발리지 않습니다.
- 퀘스트가 얻은 태그는 항목 아래에 작은 금색 꼬리표로 표시됩니다.
퀘스트 정의
퀘스트는 mod의 quests/ 폴더에 있는 kind quest JSON 파일입니다. 사진 속 퀘스트(RPG Plus 것)입니다.
{
"Kind": "quest",
"Items": [
{
"Id": "woodland_ward",
"Name": "rpg_plus/quest/ward/name",
"StatusToDescription": {
"0": "rpg_plus/quest/ward/0",
"1": "rpg_plus/quest/ward/1",
"2": "rpg_plus/quest/ward/2",
"3": "rpg_plus/quest/ward/3",
"4": "rpg_plus/quest/ward/4"
}
}
]
}
Name과 각 단계는 번역 키입니다. 숫자가 퀘스트의 단계입니다. 단계 1에서는 1의 텍스트가 현재 단계로 표시되고 0에는 취소선이 그려집니다. 사진으로 말하면 "항목 II / V"입니다.
시나리오에서 퀘스트 진행하기
RPG Plus에서 원로의 대답이 퀘스트를 시작하고 단계 1에 놓습니다.
action quest.set_status quest_id=woodland_ward status=Progress
action quest.set_data_status quest_id=woodland_ward level=1
quest.set_status— 퀘스트의 상태:NotStarted,Progress(진행 중) 또는End(완료).quest.set_data_status— 현재 단계,level이 그 번호입니다.quest.add_tag/quest.remove_tag와tag=…— 일어난 일을 기억합니다. 예를 들어 플레이어가 어떤 아이템을 먼저 가져갔는지.quest.send_notification— 퀘스트에 대한 알림을 플레이어에게 보여 줍니다. 퀘스트를 바꾸는 것만으로는 알림이 뜨지 않습니다.
퀘스트 확인하기
퀘스트 판정은 게임이 조건을 받아들이는 곳이라면 어디서든 작동합니다. when, 선택지 조건, 장면 조건, 맵 이벤트입니다.
when "woodland_ward.DataStatus >= 2" -> :lantern
<quest>.IsActive— 퀘스트가 진행 중.<quest>.Status—0시작 안 함,1진행 중,2완료.<quest>.DataStatus— 현재 단계.<quest>.hasTag("tag"),<quest>.notHasTag("tag")— Cthangover는 이것으로 장면의 어떤 시나리오를 재생할지 고릅니다. 예:AwakeningQuest.hasTag("book_taken").
문제가 생겼을 때
- 퀘스트가 저널에 없습니다. 상태가
Progress(완료 탭이라면End)여야 합니다. 단계만 설정해서는 부족합니다. - 저널이 텍스트 대신 키를 보여 줍니다. 단계의 키를 mod의
locale파일에 추가하세요. - 조건이 항상 거짓입니다. 퀘스트 id의 철자가 퀘스트 파일의
Id와 다릅니다. 로그에 알 수 없는 퀘스트 경고가 기록됩니다.


