동료 대사 제작 관련 정보 - 토픽 설정편




조건 이야기를 하면 이니고 동료모드 이야기를 빼놓을수가 없음

세딧에서 이니고를 열어보면 출력 조건을 엄청 세세하게 걸어놓은걸 볼수 있음

예를 들어서 

-특정 아이템 보유여부에 따라(대여섯 종류의 잡템, 데이드릭 아티팩드 등) 대사 출력

-월 수 금 또는 화 목 토마다 대사 출력

-주요 퀘스트의 특정 단계 클리어 여부에 따라 대사 출력

-현재 플레이어 가 상호작용중인 사물의 종류에 따라

-플레이어 또는 적, 자기 자신의 체력 수치에 따라

-현재 데리고 다니는 바닐라 팔로워 종류에 따라


거기에 랜덤 대사출력 확률을 곱해놨는데

이니고는 상남자처럼 그 확률을 한자리수 확률로 넣어놓은 레어 대사들도 존재함

아마 어지간히 오래 데리고다녀도 못보는 대사들이 꽤 있을거임


이니고의 경우 대사가 7000줄이나 되는 정신나간 모드라서 조건을 세세히 걸수 있었던 거고

일반적으로는 조건을 지나치게 많이 걸면 대사의 빈도가 너무 낮아지고,

조건을 적게 걸면 빈도가 높아져서 듣다 질리게 됨

다른 게임에서 음성을 가져와 쓰든, 직접 녹음을 하든 동원할수 있는 음성파일의 숫자를 고려해서

적당히 조건을 거는것이 중요할것 같다


이 글에서는 커스텀 보이스 동료 제작시에 활용할수 있도록
바닐라 동료 대사들과 이니고에 사용된 각종 조건들을 소개하고자 함


=================

1. 기본적인 사항

1) 조건의 형식

(접었을때)


(폈을때)


Type : ~이다, 이상이다, 이하다, 초과다, 미만이다 등을 설정할 수 있음

Comparison Value - Float : 1(긍정) 또는 0(부정) 기입, 그외 다양한 숫자 기입

Function : 각종 조건 기능들이 들어감

Referenceable object : 아래에서 말하는 대상이 누구?

Run On : 조건을 적용할 대상 (플레이어라든지, 전투 상대라든지, 목표라든지 등등)



2) 조건의 순서

세딧이나 ck에서 순서를 바꿔줄수 있음

위에 있을수록 우선함


3) AND와 OR 사용

참고 : https://www.reddit.com/r/skyrimmods/comments/27cdgk/help_a_better_understanding_of_and_or_conditions/



#1 플레이어가 스닉 상태가 아니고(0)

#2 26% 확률이고

#3 화자는 "카테리나"이고(1)

#4 탐리엘에 있지 않으며 (0)

#5 화자는 현재 동료 팩션에 있으며(0)

----

#6 화자가 있는 장소는 '상점' 키워드를 갖고 있거나 (OR)

#7 화자가 있는 장소는 '여관'이다 (OR)


이렇듯 OR이 들어간 조건을 기준으로 AND는 한 덩이로 묶이게 됨

AND가 많아질수록 조건이 좁아지고, AND를 잘못 걸면 조건에 해당하는게 없게 될수도 있음

예를 들어 OR 대신 AND를 써서 적이 탈모어 팩션이면서 흡혈귀면서 아르고니안이라고 조건을 걸어버리면 안될거임


보이스 대사의 lip 파일을 ck를 통해서 생성할때 npc 목록에 안뜬다면 이 조건을 잘못 걸었기 때문임



4) 빈도 조절


Flags를 Random 대신 Say Once로 하면 딱 한번만 나오는 대사가 됨

Reset Hours를 조정하면 대사 반복 빈도를 1차적으로 조절 가능함


빈도 조절의 심화과정은 루시엔 제작자의 가이드를 참고하자

https://www.reddit.com/r/skyrimmods/comments/bu4650/follower_modding_tip_how_to_calculate_time/



5) 기존 양식에서 복붙하기

이걸 언제 다 일일이 치고있나? 복붙할수 있는건 복붙하자



세딧에서 컨트롤 누르고 대사들을 선택하면 오른쪽에서 비교해서 볼수있다. 끌어다 놓으면 복사됨


같은 토픽에 속해있지 않은 경우에는, 또는 다른 모드의 대사를 참고하는 경우에는

두개 클릭하는 것만으로는 오른쪽에 안뜨는데 이럴때는



우클릭하고 '선택한 것끼리 비교'를 누르면 된다.



=================

2. 여러가지 조건들

전체 조건 목록은 여기에서 확인 가능함 - https://ck.uesp.net/wiki/Condition_Functions

어차피 자동완성 기능이 있어서 전부 다 칠필요는 없음


정확히 어떤 기능이 있는지는 나도 잘 모름

써본것들만 정리함


--------

1) GetIsRace, GetinFaction 

대상의 종족, 팩션을 확인한다.


화자의 / 팩션이 CurrenfFollowerFaction(현재동료팩션)이다


대상은 동료가 될수도 있고, 전투 대상을 적용할수도 있음


#1 전투 대상의 / 종족이 드로거이거나

#2 전투 대상의 / 종족이 해골이거나

#3 전투 대상의 / 팩션이 흡혈귀이거나


종족이랑 팩션은 종류가 엄청나게 많은데 

종족에서 주의할 점은 그냥 트롤과 설원 트롤처럼 종족이 분리되어 있는 케이스들이 있다는 것.

팩션에서 주의할 점은 DLC 팩션도 따로 있다는 것.

던가드는 상관없지만 드래곤본 DLC는 따로 동료모드의 마스터로 추가해줘야 검색이 잡힘



플레이어의 / 종족이 늑대인간일 때


응용해서 플레이어가 늑대인간이나 뱀파이어 상태일때 동료가 치는 대사를 만들수도 있다


참고로 흡혈시 대사를 치게 하려면 GetVampireFeed 컨디션을 쓰면 된다. 식인도 비슷한거 있을듯


--------

2) GetRandomPercent

확률 지정용 조건이다.


50% 이하의 확률로


원하는 숫자를 적어넣어 확률을 지정할수 있다고 함

23초에 한번씩 주사위를 굴려 대사를 칠 확률을 계산하고 있다고 보면 된다나


위에도 링크했던 루시엔 제작자의 레딧 글을 참고하면 감을 잡을수 있을지도

https://www.reddit.com/r/skyrimmods/comments/bu4650/follower_modding_tip_how_to_calculate_time/


--------

3) GetIsID

대상의 ID는 누구누구다.


화자의 ID는 "카테리나"다


이 경우에는 화자가 누구인지 조건을 거는데 쓰였음

동료 대사의 기본 틀이 되는 퀘스트 대사 조건을 지정할때도 쓰인다.



만약에 독립 보이스가 아니라, 바닐라 보이스타입에 기생하는 동료를 만든다면 이 조건을 지정해줘야

제대로 보이스가 나오게 될수도 있음



--------

4) GetinCurrentLoc / GetinCell

대상의 현재 위치가 ~이다


화자의 / 현재 위치가 "망자의 회랑" 이 아니며


구체적인 장소를 지정해주는 거임

특정 장소에서 대사가 나오게 하거나, 특정 장소를 제외한 곳에서 대사가 나오게 할수 있음

예를 들어 암사자 묠의 대사를 까보면 므진차레프트에서만 나오는 대사가 있고

므진차레프트를 제외한 드웨머 유적에서 나오는 대사가 따로 있다.




이렇듯 GetInCell 조건을 사용할수도 있다.


--------

5) LocationHasKeyword

대상이 있는 장소에 ~~ 키워드가 붙어있다


화자가 / 있는 장소에 / "LocTypeDraugrCrypt" 키워드가 붙어있다


GetinCurrentLoc랑 비교하면 좀더 포괄적임

Loc까지 치면 자동완성되니까 찾기는 쉬울거임


LocTypeInn = 여관

LocTypeStore = 상점

LocTypePlayerHouse = 플레이어의 집

LocTypeMine = 광산

LocTypeCity = 도시

LocTypeClearable = 쓸어버리고 나면 지도상에 정리됐다고 뜨고, 나중에 리젠되는 곳들 


대충 이런식으로 엄청 많다


--------

6) GetHealthPercentage

대상의 체력 퍼센트가 ~일때


#1 전투 상대의 / 체력이 25.25% 아래이며

#2 화자의 / 체력이 85.5% 아래일때

다만 체력의 경우에는 이거 0.25같은 식으로 해놔야 적용되는것 같기도 하고 확실치 않음


여기서 Run On을 Reference로 지정하고 PlayerREF을 달아놓으면 플레이어 체력을 조건으로 걸수 있었던듯

응용 방법이 많다.



--------

7) GetinWorldspace

대상이 Worldspace ~에 있을때


화자가 "탐리엘" Worldspace에 있지 않으며


실내에 있는지 여부를 판단할때는 IsInInterior 조건을 걸수도 있지만

보통은 탐리엘에 있냐없냐 여부를 따지는 이 조건이 더 많이 사용됨



--------

8) GetEquipped

대상이 ~를 입고 있을때


전투 상대가 / "제국군 방어구"를 입고 있거나


활용처가 그냥 아주 무궁무진하다

이니고 대사조건에서는 적이 제국군인지 스톰클락인지를 이걸로 구분한다.

대상을 플레이어로 지정한다면 플레이어가 뭘 착용하고 있는지를 판단하는 조건으로 쓸수 있다


경비병이 플레이어의 나이팅게일셋을 보고 반응한다거나 하는게 이 키워드를 사용한 것일 거임

응용하면 특정 아이템을 끼고 말을 걸어야 반응하는 걸 만들수도 있을듯


--------

9) WornHasKeyword

대상이 입은 것이 ~ 키워드를 갖고 있을떄


플레이어가 / 갑옷을 입고 있지 않으며

플레이어가 / 옷을 입고 있지 않으며


좀더 포괄적인 의상 키워드 조건임

응용해서 전투 상대의 의상 종류를 조건으로 걸수도 있음 네크로맨서 로브를 입고 있는 적이라든지


눈치챘겠지만 커스텀 키워드 또는 다른 모드의 키워드를 가져다가 쓸수도 있음

이게 바로 특정 키워드가 박힌 의상을 입고 있는 경우 대사를 치게 하는 방법임


--------

9) GetLevel

대상의 레벨이 ~이다


전투 상대가 닭이거나

전투 상대가 스키버거나

전투 상대의 레벨이 30 아래거나


--------

10) GetisPlayableRace

대상이 플레이 가능한 종족인가


전투 상대가 / 플레이 가능한 종족이고


이걸로 적들의 대분류를 할수 있다


통팩에서 염소나 개, 늑대같은 놈들이 플레이어를 보고 음담패설하는 경우가 있는데

해당 대사가 나오는 모드를 열어서 이 조건을 추가해준다면 그런 경우가 없게 되겠지?


---------

11) GetisSex

대상의 성별이 ~일때


플레이어의 / 성별이 남자가 맞으며


성별 체크하는 조건임

이걸 써서 남자 적들 또는 여자 적들에게만 치는 대사같은걸 지정할수 있음


--------

12) GetCurrenttime

대상의 현재 시간이 ~일때


화자의 / 현재 시간이 9시 이후이면서

화자의 / 현재 시간이 17시 이전이면


이걸 사용해서 오후에만 치는 대사 같은걸 지정할수 있다


--------

13) GetDistance

대상과의 거리가 ~일때


화자와 / "브레이스"와의 거리가 / 500 이내이거나 (OR)

화자와 / "대그니"와의 거리가 / 500 이내이거나 (OR)

화자와 / "넬키어"와의 거리가 / 500 이내이거나 (OR)


이 조건은 이니고 대사문에서는 주로 플레이어 또는 NPC와의 거리계산을 하는데 쓰였다


화자와 / "하임스커의 설교 장소"와의 거리가 / 500 이내일 때


이렇게 장소와의 거리를 지정할수도 있다. 지금 보니까 사람으로 걸었어야 했는데 실수했네


--------

14) GetDayOfWeek

어느 요일인가


일요일이거나

수요일이거나
금요일이거나


이니고 대사에서 종종 쓰이는 조건이다.


--------

15) GetQuestCompleted

퀘스트를 완료했는가


대상이 / "죽은자의 영광" 퀘스트를 완료했으며


퀘스트를 통째로 클리어했는지 여부를 판단하는 조건읻.


--------

16) Getstage

퀘스트 스테이지가 ~일때


대상이 / "이니고 동료 대사" 퀘스트의 60 스테이지에 도달했을 때


사용하면 퀘스트 특정 단계에서 대사를 치게 만들수 있다.


--------

17) GetitemCount

대상이 아이템을 가지고 있을때


플레이어가 / "설원지빠귀 알" 아이템을 8개 이상 가지고 있을때


플레이어가 골드(Gold001 "골드")를 얼마 갖고있을때 대사를 친다거나 하게 할수도 있을것

subject를 동료로 지정한다면 교환으로 특정 아이템을 줬을때 반응하게 할수도 있을거임


---------

18) IsCurrentFurnitureObj

현재 ~ 가구를 사용중인가


플레이어가 / 현재 왕좌에 있거나


대상이 가구와 상호작용하고 있을때 대사를 치게 하는 조건이다.

예시문은 플레이어가 야를 의자에 앉았을때가 조건인데, 도시마다 왕좌 이름이 달라서 다 추가하다 보니까 저렇게 됐음



대상이 / 스카이포지 모루를 쓰고 있거나


이니고 대사를 까보면 상호작용 가능한 작업대를 쓸때 치는 대사 조건들이 나와있다.

이걸 복붙해서 사용하면 편할거임


--------

지금까지 여러가지 조건들에 대해 알아보았음

바닐라의 대사들이나 이니고 대사 조건을 복사해서 쓰면 추가하는것 자체는 그렇게 어렵지 않을거임

좀 귀찮아서 그렇지 수동으로 추가하는 것도 어렵지는 않음

다만 대상을 Combat Target 대신 실수로 Subject로 지정해서 대사 출력 또는 보이스 입력이 안되는 상황을 주의해야 함



수많은 조건들이 있지만 제일 많이 쓰는건 이 5개인듯

Subject.GetisID

Combat Target.GetisRace

Combat Target.Getinfaction

Subject.GetinCurrentLoc

Subject.LocationHasKeyword