직업 추가 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 파일로 살아 있다.
이를 들어가서 몇몇 데이터들을 바꿔주었다
전편에서 다들 메모장 쓴다고 뭐라하는 이야기 밖에 없어서 우리가 설치한 msys2에서 vim으로 들어왔다
파일이 있는 폴더에서 "vim 파일이름"을 입력하여 열 수 있다.
명령어는 인터넷에 검색하면 나온다
difficulty는 False로 돼어 있던 것을 드라코 따라 Simple로 바꿔주었다.
False면 처음 종족 선택창에 안 뜨나 이를 simple, intermediate, advanced로 바꿔주면 해당 항목에 뜨게 된다.
드라코들의 경우 처음짤에 있는 파일들을 보면 드라코가 색상별로 다 설정 돼 있는 것을 볼 수 있는데, 색 있는 드라코들은 false로 설정해 놓고
이를 player.cc파일에서 7렙 되면 base에서 다른 색상의 종족으로 바꿔주도록 코드가 짜여있다.
그리고 추천직업을 추가했다.
mutation을 보면 냉혈만 진짜 돌연변이이고, 나머지는 fake_mutation이라 써 있는 것을 볼 수 있다.
mutation은 mutation.cc에 입력해 놓은 돌연변이를 가지도록 해줄 수 있으나 fake mutation의 경우 %창과 A창에 글자만을 추가해 줄 뿐이다.
즉, 저기 써 있는 점착화염을 쏜다는건 아직 없는 기능이라는 뜻.
그럼 저걸 어떻게 추가 할 수 있나 다른 드라코를 통해 찾아보자
2. 어빌리티 생성
그린 드라코의 경우 이렇게 써 있는데 이에 맞춰서 윈도우 탐색기를 파일 내용까지 포함하도록 검색 설정을 하고 breathe nox를 찾아보면
ability.cc를 비롯한 다양한 파일들이 나오는 것을 알 수 있다. 우리가 브레스를 어빌리티(a)에서 쏘니 ability.cc가 뭔가 있어 보인다.
species-data.h도 뭔가 있어 보이지만 찾아보니 없었다.
ability.cc에서 breathe nox를 검색해보면
ABIL_BREATHE_MEPHITIC이 녹색 드라코 브레스 어빌리티의 이름임을 추론 할 수 있다. 그럼 이제 이 ability.cc창에다가 점박이 드라코의 브레스를 추가해보자
0.19버전에 점박이 드라코가 살아 있으니 거기서 따오면 된다.
https://github.com/crawl/crawl/blob/0.19.1/crawl-ref/source/ability.cc
위와 같이 ABIL_BREATHE_STICKY_FLAME 으로 살아 있는 것을 볼 수 있다. 자세히 보면 우리가 이미 찾아본 맵틱브레스의 경우에도 0.26 트렁크와는 양식이 조금 다른 것을 볼 수 있는데 브레스가 소모하는 것을 생각해보면 이는 허기가 삭제된 것임을 쉽게 추론할 수 있다.
이제 0.19 버전에서 이 어빌리티가 포함 된 것들을 찾아 최신버전에 맞게 주변 다른 브레스 어빌리티들을 참고하여 수정해준다
간단한거 2개 예시
이를 바꾸다 보면 _sticky_flame_can_hit 함수나 ZAP_BREATHE_STICKY_FLAME 또한 트렁크에 추가해 줘야 한다는 것을 알 수 있다.
모르고 지나쳐도 어차피 멍청한 컴퓨터가 컴파일할때 0.19에서 복붙해온 _sticky_flame_can_hit가 뭔데 시발아 말 해줘야 알지 하면서 친절하게 에러를 뱉어내니 에러 메세지 보고 수정하면 된다.
_sticky_flame_can_hit는 ability.cc에 있기 때문에 추가하면 되는데
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가 나오는데 딱 봐도 종족에 대해 다룰 것처럼 생겼다.
들어가서 살펴보면
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. 컴파일하고 확인하기
mottled draconian이 생긴 것을 확인 할 수 있다.
그림은 따로 설정 안 해서 이상한게 설정 된 모습
정상적으로 생성 됐고 오른쪽 밑에 보면 브레스 어빌리티도 아직 없는 것을 알 수 있다.
7렙을 만들자 생기는 브레스 어빌리티
쏘면 데미지 맞는 것도 확인 했다
4. 해야 하는 일
4.1. 그림파일 매칭하기
타일 설정을 하나도 안 해서 선택지는 돼지, 게임 내에선 인간 모습으로 나타난 것을 볼 수 있다.
어제 만든 직업 tester도 그랬는데 이를 찾아서 바꿀 필요가 있다.... 그림은 만들기도 귀찮...
4.2. 브레스 몇방 쏴 봤는데 점착화염이 붙는지 확인이 안 됐다. 계속 쏘는데 불이 안 붙음 ㅋㅋ
원래도 확률적인거라 잘 만든건지 아닌지 모르겠는데
왠지 느낌이 이 브레스에 맞으면 점착화염 디버프가 걸리도록 설정하는 파일이 따로 있을거같음
전투와 관련된 파일로....
개조추
위저드모드로 히드라 만들어서 브레스쏴봐 ev 낮아서 잘 맞을거임 - dc App
브레스에 맞기는 맞는데 맞는거랑 별개로 점착화염이 안 붙음 ㅋㅋㅋ맞는것도 확률이지만 점착화염이 붙는것도 확률임
점박이추
와 이런게 필요했어 개추다 개추
로갤의 보배인 데수우웅~