우선... 기획안을 쓰기 시작하기전에, 원래 이런글이 올라가야할 죽은 아이디어 게시판에 애도를..ㅡ,.ㅡ
* 주로 등장하는 퀘스트의 유형
1. 아이템 ○○○를 ○개 가지고와라.
2. 몬스터 ○○○를 ○마리 해치우고 와라.
3. 이 아이템을 ○○○마을 ○○○에게 전해주고 와라.
4. 미궁에빠진 ○○○를 구출해라.
* 주석표시
- define sort = 정렬 선택자 메소드
- set class = 커먼으로 올려서 공용화
* 시스템의 흐름(수락,확인,취소,완료 장면)
- 마을에 들어가기전 마을코드 id 입력
- 퀘스트를 주는 npc에게 대화를 걸면 퀘스트 선택 화면으로 이동
- 마을 코드id로 커먼에 만들어놓은 데이터베이스로 조건분기
- [define sort]수락한 퀘스트를 제외한 해당 마을의 리스트를 아이콘으로 출력
- 퀘스트 종류에 따라 아이콘이 다르며, 아이콘을 선택하면 퀘스트 내용과 수락여부를 묻는다.
- 퀘스트를 수락하면 주인공의 확장메뉴에서 내용을 확인 할 수 있게 된다.
- 퀘스트를 수락할때 마을번호+퀘스트번호+조건만족 카운트로 인식코드를 만든다
// 예) 마을번호 15, 퀘스트번호 12, 카운트0 => 151200
// v[퀘스트_코딩1] = v[마을코드id]; v[퀘스트_코딩1] * 10000; v[퀘스트_코딩1]
// v[퀘스트_코딩2] = v[퀘스트_종류idx]; v[퀘스트_코딩2] = v[퀘스트_코딩2] * 100
// v[퀘스트_코딩1] += v[퀘스트_코딩2]; v[퀘스트_수락1~5] = v[퀘스트_코딩1]
- [set class]퀘스트 정보 확인이나 완료조건을 인식할때 코드를 디코딩해서 데이터베이스에 매치한다.
// [define sort]v[퀘스트_코딩1] = v[퀘스트_수락1~5]; v[퀘스트_코딩2~3] = v[퀘스트_코딩1];
// v[퀘스트_코딩1] = v[퀘스트_코딩1] / 10000; v[퀘스트_코딩1] = v[퀘스트_코딩1] * 10000;
// [퀘스트_코딩2] = v[퀘스트_코딩2] / 1000; [퀘스트_코딩2] = v[퀘스트_코딩2] * 1000;
// [퀘스트_코딩3] -= v[퀘스트_코딩1~2];
// v[퀘스트_코딩2] = v[퀘스트_코딩2] / 10000; v[퀘스트_코딩2] = v[퀘스트_코딩2] / 100;
- 퀘스트를 취소하면 수락가능 목록으로 다시 돌아가지만, 퀘스트를 완료하면 보상을 받고, 같은 퀘스트를 선택할 수 없게된다.
- 퀘스트를 취소하거나, 완료하면 해당퀘스트가 수락가능 목록으로 다시 돌아간다.
* 시스템의 흐름(수락 세부장면)
- 시간에 따라 출력되는 퀘스트의 차별화
- 수락가능한 퀘스트수 출력
* 시스템의 흐름(퀘스트 수행장면)
- 퀘스트를 받은 상태에서만 해당 퀘스트의 필요 카운트가 올라간다(예: 몬스터 퇴치수)
- 퀘스트 요구조건을 만족하면 보상을 받고 퀘스트가 종료된다.
* 제약사항
- 퀘스트는 5개까지 받을 수 있다.
- 각 마을별 퀘스트 상태 변수가 필요
* 퀘스트 데이터 구조
- 퀘스트 종류
// 아이템 배달, 몬스터 퇴치, 아이템 전달
- 제한날짜
- 완료 조건+보상
* 필요 재료목록
- v[마을코드id],v[퀘스트_종류idx],v[퀘스트_수락1~5],v[퀘스트_코딩1~2],sw[퀘스트_수락1~5]
- v[퀘스트_대분류],v[퀘스트_포인터],v[퀘스트_트리거],v[퀘스트_값]
- v[퀘스트_cnt], v[퀘스트_수락날짜1~5]