직업 추가 https://gall.dcinside.com/board/view/?id=rlike&no=348954


첫글에서 밝혔듯 각종 드라코들을 1렙부터 색상이 정해지게 추가하는 것이 목표이다.


기존에 존재하는 드라코 괜히 건드렸다가 꼬이지 않도록 하며 컨셉을 구상하거나 할 필요 없는

0.20에서 삭제당한 mottled(점박이) 드라코를 추가해보도록 하겠다


1. 종족 추가

https://github.com/kimjoy2002/crawl/blob/master/crawl-ref/docs/develop/species_creation.md

종족 만드는 방법은 위의 표를 따르면 된다.


종족은 우선 crawl/crawl-ref/source/dat/species폴더에 있는 yaml파일을 기본으로 한다

링크의 표와 기존에 있는 다른 종족들 파일을 잘 비교해보면 어떻게 활용하는지 알게 될 것이다.


점박이 드라코는 비록 삭제당했지만 deprecated-draconian-mottled.yaml 파일로 살아 있다.



viewimage.php?id=3fb1d92de0&no=24b0d769e1d32ca73dec84fa11d0283195504478ca9b7677dc322c30cb3d9b47f43fa3f58a4968cd7a8023c4e95857f3d44c75e1332194be88479b7dc8f825b307



이를 들어가서 몇몇 데이터들을 바꿔주었다

전편에서 다들 메모장 쓴다고 뭐라하는 이야기 밖에 없어서 우리가 설치한 msys2에서 vim으로 들어왔다

파일이 있는 폴더에서 "vim 파일이름"을 입력하여 열 수 있다.

명령어는 인터넷에 검색하면 나온다


viewimage.php?id=3fb1d92de0&no=24b0d769e1d32ca73dec84fa11d0283195504478ca9b7677dc322c30cb3d9b47f43fa3f58a4968cd7a8023c4e95857f3d44c75e13372c3b9de149f28cbf825b350


difficulty는 False로 돼어 있던 것을 드라코 따라 Simple로 바꿔주었다.


viewimage.php?id=3fb1d92de0&no=24b0d769e1d32ca73dec84fa11d0283195504478ca9b7677dc322c30cb3d9b47f43fa3f58a4968cd7a8023c4e95857f3d44c75e1332195b18e4795799af825b385


False면 처음 종족 선택창에 안 뜨나 이를 simple, intermediate, advanced로 바꿔주면 해당 항목에 뜨게 된다.

드라코들의 경우 처음짤에 있는 파일들을 보면 드라코가 색상별로 다 설정 돼 있는 것을 볼 수 있는데, 색 있는 드라코들은 false로 설정해 놓고

이를 player.cc파일에서 7렙 되면 base에서 다른 색상의 종족으로 바꿔주도록 코드가 짜여있다.


그리고 추천직업을 추가했다.


mutation을 보면 냉혈만 진짜 돌연변이이고, 나머지는 fake_mutation이라 써 있는 것을 볼 수 있다.


viewimage.php?id=3fb1d92de0&no=24b0d769e1d32ca73dec84fa11d0283195504478ca9b7677dc322c30cb3d9b47f43fa3f58a4968cd17ec20c2e85c54f29e379110b3f1b372a6d34ed3f16791dd


mutation은 mutation.cc에 입력해 놓은 돌연변이를 가지도록 해줄 수 있으나 fake mutation의 경우 %창과 A창에 글자만을 추가해 줄 뿐이다.


즉, 저기 써 있는 점착화염을 쏜다는건 아직 없는 기능이라는 뜻.

그럼 저걸 어떻게 추가 할 수 있나 다른 드라코를 통해 찾아보자



2. 어빌리티 생성


viewimage.php?id=3fb1d92de0&no=24b0d769e1d32ca73dec84fa11d0283195504478ca9b7677dc322c30cb3d9b47f43fa3f58a4968cd7a8023c4e95857f3d44c75e1332590ba8f499c28cff825b352


그린 드라코의 경우 이렇게 써 있는데 이에 맞춰서 윈도우 탐색기를 파일 내용까지 포함하도록 검색 설정을 하고 breathe nox를 찾아보면


viewimage.php?id=3fb1d92de0&no=24b0d769e1d32ca73dec84fa11d0283195504478ca9b7677dc322c30cb3d9b47f43fa3f58a4968cd17ec20c2e85c54f29e379110e4f2e727a5d54ddcf16791dd


ability.cc를 비롯한 다양한 파일들이 나오는 것을 알 수 있다. 우리가 브레스를 어빌리티(a)에서 쏘니 ability.cc가 뭔가 있어 보인다.

species-data.h도 뭔가 있어 보이지만 찾아보니 없었다.


ability.cc에서 breathe nox를 검색해보면



viewimage.php?id=3fb1d92de0&no=24b0d769e1d32ca73dec84fa11d0283195504478ca9b7677dc322c30cb3d9b47f43fa3f58a4968cd7a8023c4e95857f3d44c75e13371c1bcdc4195789ef825b35b

ABIL_BREATHE_MEPHITIC이 녹색 드라코 브레스 어빌리티의 이름임을 추론 할 수 있다. 그럼 이제 이 ability.cc창에다가 점박이 드라코의 브레스를 추가해보자

0.19버전에 점박이 드라코가 살아 있으니 거기서 따오면 된다.

https://github.com/crawl/crawl/blob/0.19.1/crawl-ref/source/ability.cc


viewimage.php?id=3fb1d92de0&no=24b0d769e1d32ca73dec84fa11d0283195504478ca9b7677dc322c30cb3d9b47f43fa3f58a4968cd7a8023c4e95857f3d44c75e1332492edd3409e29c4f825b31e


위와 같이 ABIL_BREATHE_STICKY_FLAME 으로 살아 있는 것을 볼 수 있다. 자세히 보면 우리가 이미 찾아본 맵틱브레스의 경우에도 0.26 트렁크와는 양식이 조금 다른 것을 볼 수 있는데 브레스가 소모하는 것을 생각해보면 이는 허기가 삭제된 것임을 쉽게 추론할 수 있다.


이제 0.19 버전에서 이 어빌리티가 포함 된 것들을 찾아 최신버전에 맞게 주변 다른 브레스 어빌리티들을 참고하여 수정해준다



viewimage.php?id=3fb1d92de0&no=24b0d769e1d32ca73dec84fa11d0283195504478ca9b7677dc322c30cb3d9b47f43fa3f58a4968cd7a8023c4e95857f3d44c75e13322c0e9da139f2a9ff825b33c


간단한거 2개 예시


이를 바꾸다 보면 _sticky_flame_can_hit 함수나 ZAP_BREATHE_STICKY_FLAME 또한 트렁크에 추가해 줘야 한다는 것을 알 수 있다.

모르고 지나쳐도 어차피 멍청한 컴퓨터가 컴파일할때 0.19에서 복붙해온 _sticky_flame_can_hit가 뭔데 시발아 말 해줘야 알지 하면서 친절하게 에러를 뱉어내니 에러 메세지 보고 수정하면 된다.

_sticky_flame_can_hit는 ability.cc에 있기 때문에 추가하면 되는데


viewimage.php?id=3fb1d92de0&no=24b0d769e1d32ca73dec84fa11d0283195504478ca9b7677dc322c30cb3d9b47f43fa3f58a4968cd7a8023c4e95857f3d44c75e1337494ee8e15cb7f9ef825b3bb


ZAP_BREATHE_STICKY_FLAME는 해당 파일에서 찾아봐도 뭔지 설정을 안 했다는 것을 알 수 있다. 이는 즉 다른 파일에 있는걸 가져왔다는 것인데

윈도우 탐색기로 다시 검색해보면


ability.cc 말고도

zap-type.h와 zap-data.h에 있는 것을 알 수 있다.

그럼 이 또한 0.19를 참고해서

https://github.com/crawl/crawl/blob/0.19.1/crawl-ref/source/zap-data.h


트렁크에 맞게 주변 다른 ZAP_BREATHE_뭐시기 보면서 수정하면 된다.


그럼 이제 끝일까?


아니, 이는 어빌리티를 만든 것일 뿐, 해당 어빌리티가 점박이 드라코의 능력이라고 컴퓨터한테 알려줘야 한다. 처음 yaml을 살펴보면 ABIL_BREATHE_STICKY_FLAME따위는 쓴 적 없다는 것을 알 수 있다.

ABIL_BREATHE_

를 검색해보면 ability.cc외에도 species.cc가 나오는데 딱 봐도 종족에 대해 다룰 것처럼 생겼다.


들어가서 살펴보면


viewimage.php?id=3fb1d92de0&no=24b0d769e1d32ca73dec84fa11d0283195504478ca9b7677dc322c30cb3d9b47f43fa3f58a4968cd7a8023c4e95857f3d44c75e13374c2b1df139f22c9f825b3b2


switch를 이용해서 각 case별로 브레스 어빌리티를 부여해 주는 것을 볼 수 있다.

다른 애들은 어차피 7렙때 base드라코에서 종족변환이 돼야 브레스를 얻기 때문에 상관 없으나

저것과 같이 점박이 드라코의 브레스를 입력해준다면 1렙부터 브레스를 가지게 된다.


난 7렙부터 브레스를 쏘게 하고 싶기 때문에 case SP_MOTTLED_DRACONIAN에 대해 if문을 추가해서

you.experience_level(캐릭터 레벨)이 7이상인 경우에만 ABIL_BREATHE_STICKY_FLAME을 주도록 했다.


이런 명령이 저렇게 된 건지 어떻게 아냐고 의아해 할 사람이 있는데

레벨이 오름에 따라 능력을 가지는 다른 종족의 코드를 찾아보면

레벨에 해당하는 것이 you.experience_level임을 쉽게 알 수 있다.


지금은 이렇게 해 놨지만 나중에 모든 드라코가 1렙부터 색을 가지게 된다면 if를 case밑에 하나하나 다는 것이 아니라 먼저 if로 레벨을 체크한 다음 switch문을 그 속에 넣어서 코드를 덜 지저분하게 고칠 수도 있을 것이다.


이러면 이제 끝이다.


직업의 경우 직업 파일을 만지고 newgame.cc에서 직업을 선택할 수 있도록 설정해야 했지만 종족은 yaml에서 difficulty를 false가 아닌 다른 것으로 바꾼 것 만으로 종족을 시작할때 선택 할 수 있다.

종족도 newgame.cc에서 바꿔야 되는줄알고 찾아봤는데 없더라


3. 컴파일하고 확인하기



viewimage.php?id=3fb1d92de0&no=24b0d769e1d32ca73dec84fa11d0283195504478ca9b7677dc322c30cb3d9b47f43fa3f58a4968cd7a8023c4e95857f3d44c75e1337792b88d15982dc8f825b31a


mottled draconian이 생긴 것을 확인 할 수 있다.

그림은 따로 설정 안 해서 이상한게 설정 된 모습


viewimage.php?id=3fb1d92de0&no=24b0d769e1d32ca73dec84fa11d0283195504478ca9b7677dc322c30cb3d9b47f43fa3f58a4968cd7a8023c4e95857f3d44c75e13322c5bed912992ecdf825b3c4


정상적으로 생성 됐고 오른쪽 밑에 보면 브레스 어빌리티도 아직 없는 것을 알 수 있다.


viewimage.php?id=3fb1d92de0&no=24b0d769e1d32ca73dec84fa11d0283195504478ca9b7677dc322c30cb3d9b47f43fa3f58a4968cd7a8023c4e95857f3d44c75e1332590b8dd469c29cdf825b3b3


7렙을 만들자 생기는 브레스 어빌리티


viewimage.php?id=3fb1d92de0&no=24b0d769e1d32ca73dec84fa11d0283195504478ca9b7677dc322c30cb3d9b47f43fa3f58a4968cd7a8023c4e95857f3d44c75e13372c3b0dd489a23ccf825b3b0


쏘면 데미지 맞는 것도 확인 했다



4. 해야 하는 일


4.1. 그림파일 매칭하기

타일 설정을 하나도 안 해서 선택지는 돼지, 게임 내에선 인간 모습으로 나타난 것을 볼 수 있다.

어제 만든 직업 tester도 그랬는데 이를 찾아서 바꿀 필요가 있다.... 그림은 만들기도 귀찮...


4.2. 브레스 몇방 쏴 봤는데 점착화염이 붙는지 확인이 안 됐다. 계속 쏘는데 불이 안 붙음 ㅋㅋ

원래도 확률적인거라 잘 만든건지 아닌지 모르겠는데

왠지 느낌이 이 브레스에 맞으면 점착화염 디버프가 걸리도록 설정하는 파일이 따로 있을거같음

전투와 관련된 파일로....