팁/노하우 게시판에 올라온 hun4476님의 '트레잇 추가법 (존재하지만 한번 정리해 보았습니다..)' 글을 읽고 저도 트레잇을 만들어 보았습니다.
http://cafe.daum.net/Europa/5Bi3/1678
제 트레잇을 아들들에게 물려주면서 플레이를 하고싶어서 부계 유전 코드인 agnatic = yes만을 추가하여 플레이를 하고 있었습니다.
아들들이 다른 영지의 작위를 받고 떠나고 씨를 뿌리고 하다보니 시간이 지나니 같은 가문이고 친척이긴 하지만 제 봉신이 아닌 인물이 트레잇을 들고있는게 그리 마음에 들지 않더군요.
inherit_chance = N 이 유전코드를 이용하면 아버지뿐만 아니라 어머니로부터도 유전되다보니 상황은 더 심각할건 뻔하구요.
또한 이 코드들만으로는 뻐꾸기에게서 태어난 자식 판별 역시 안되구요. 콘솔을 이용해 쿠쿠를 해봤더니 제가 알아내지 못한 사생아는 그대로 트레잇을 물려받더군요.
그래서 비잔틴 제국의 자주빛출생과 비슷한 컨셉의 트레잇을 만들어보고자 카페도 뒤져보고 해외 포럼도 뒤져봤지만 별다른 소득이 없었어요.
몇 시간째 매달려서 머리를 굴리던 중 떠오른게 이벤트를 이용한 트레잇 획득이었습니다.
모딩을 어느정도 해보신 분들은 아시다시피 자주빛 출생의 경우 트레잇 획득 조건도 복잡하거니와 상속법까지 연결되어있어 하드코딩이 되어있고 메카니즘을 뜯어 볼 수 없지요.
때문에 상속법 부분은 쿨하게 포기하는 대신에 유전부분만 적용해 보기로 했습니다. 플레이 중인 인물의 자식만 트레잇이 붙도록 하는것과, 뻐꾸기로 인한 사생아의 트레잇 유전이 불가능하게 만드는 것을 목표로 이벤트를 만들어 봤습니다.
우선 트레잇은 서두에 적은 hun4476님의 http://cafe.daum.net/Europa/5Bi3/1678 을 참고해서 만듭니다.
물론 트레잇 코드에 agnatic이나 inherit_chance같은 유전코드들은 '절대로' 추가하지 맙시다. 그리고 random = no 꼭 추가하시구요.
저 역시 위 글의 예시같이 god_bless_you라는 코드네임을 가진 '황금빛 출생'이라는 트레잇을 만들었어요.
트레잇이 준비 되었으니 본격적으로 이벤트를 만들어 봅시다.
이벤트 제작은 여러가지 모딩 제작 지침글들을 올려주신 tacitus님의 '내멋대로 쓰는 모딩 매뉴얼' 중 이벤트부분의 네 게시물을 보고 만들었어요. 이벤트를 처음 만들어보시는 분들은 tacitus님의 글을 참고하시는게 큰 도움이 될겁니다.
http://cafe.daum.net/Europa/5Bi3/2032
http://cafe.daum.net/Europa/5Bi3/2033
http://cafe.daum.net/Europa/5Bi3/2034
http://cafe.daum.net/Europa/5Bi3/2035
단순히 제 글만 보시고 따라 하셔도 됩니다만 다른 옵선들을 추가하는데에 막히는부분이 생기거나 버그가 있다면, 위 글들이나 ck위키의
http://www.ckiiwiki.com/Scopes
http://www.ckiiwiki.com/Conditions
를 참고하시면 되겠습니다.
모딩을 전혀 모르시는 분이라면 먼저 tacitus님의 모딩매뉴얼 1편과, 위의 여섯가지 링크중 가장 첫번째 링크를 먼저 읽어보시고 시작하시기 바랍니다.
우선 CK2가 설치된 폴더 (기본경로 Program Files (x86)\Steam\SteamApps\common\Crusader Kings II)의 하위폴더인 events 폴더 안에 이벤트 파일들이 위치해 있습니다. 여기에다 바로 작업하셔도 됩니다만 백업이 용이하게 모딩을 하시려면 모드폴더에 events폴더를 만드시고 진행하시면 됩니다.
원래의 events 폴더안에 있는 파일들과 이름이 중복되지 않는 텍스트 파일을 하나 만듭니다.(우클릭 - 새로만들기 - 텍스트 문서) 파일이름은 중복되지 않는 선에서 마음대로 정하시면 됩니다.
방금 새로만든 텍스트파일을 열고 코드를 입력합니다.
namespace = BOB
character_event = {
id = BOB.0001
hide_window = yes
ai = yes
min_age = 0
max_age = 1
trigger = {
NOT = {
trait = bastard
trait = child_of_consort
trait = legit_bastard
}
is_father_real_father = yes
OR = {
father = {
ai = no
has_landed_title = c_baden
}
mother = {
ai = no
has_landed_title = c_baden
}
}
}
immediate = {
hidden_tooltip = {
add_trait = god_bless_you
}
}
}
저는 최신버전이라 상단의 hide_windows = yes 때문에 따로 옵선 코드를 넣지 않아도 되지만 구버전이라 버그가 생기는 경우엔
option = {
name = OK
}
이 코드를 맨 마지막 닫는 괄호 위에 붙여넣으시면 됩니다.
우선 만드신 트레잇코드에 맞게 초록색의 god_bless_you 부분을 수정하세요.
제가 살고있는 동네가 바덴주 인지라. 바덴(한글패치에선 브래덴(?)이라고 번역을 해놓았습니다)을 계속 수도로 놓고 플레이를 할것이기에 바덴 백작위를 가지고 있고, 플레이어의 자식이면 트레잇을 받도록 해놓았습니다.
봉신으로 시작해서 플레이를 할것이고 수도는 고정하고 계속해서 작위를 올려나갈 것이라면, 저 처럼 코딩에 백작령 ID를 입력하면 됩니다. 다만 처음에 플레이할 수도와 다른곳으로 수도를 이전을 할 계획인 경우 수도 이전할때 게임 종료하시고 저 코드를 수정해 주셔야 합니다.
공작위나 왕위, 제국위를 가진채로 시작한다면 가장 상위의 타이틀 ID를 저 c_baden부분에 대체하여 입력하시면 됩니다.(예를 들면 독일왕국의 경우 k_germany) 이 경우엔 수도 이전에서 자유롭습니다.
트리거의 is_father_real_father = yes 코드때문에 친자가 아니라면 트레잇 획득이 안됩니다.
저는 바덴백작 말고 다른데서 플레이 하는 세이브에서 ai가 트레잇을 가지는걸 원하지 않아서 ai = no 코드를 추가했습니다만, ai가 트레잇 유전받는걸 신경쓰지 않으신다면 ai = no부분을 삭제하시면 됩니다.
또한 저는 자주빛 출생처럼 사생아나 정통서자, 첩의 자식이 트레잇을 받는걸 원치 않아서 파란색 부분을 추가했는데요, 첩의 자식과 사생아, 정통서자도 트레잇을 받도록 하려면 파란색의
NOT = {
trait = bastard
trait = child_of_consort
trait = legit_bastard
}
이 부분을 삭제 해주시면 됩니다.
이제 저장하시면 완성입니다.
테스트를 해보기 전에 이 방법의 한계점을 몇가지 적자면 다음과 같습니다.
1. 이벤트를 이용한 트레잇 획득이라, 출생과 동시에 획득은 불가능하다.
- 이벤트는 20일 간격으로 트리거(조건)에 맞는 인물을 찾아서 발동시키기 때문에 트레잇 획득까지 '최대' 20일까지 걸릴 수 있습니다. 조건에 맞다면 출생 후 20일이 지나기 전에는 무조건 달립니다.
2. 자주빛 출생의 특징인 트레잇이 있어야만 상속이 가능한 부분은 미구현 되었다.
- tacitus 님의 상속법 관련 모딩글을 보니, 기본적으로 만들어져 있는 상속법을 수정하거나, 새로운 상속법을 추가하는게 불가능하다고 하더군요. 이 부분은 모딩으론 해결이 힘들 것 같습니다.
이벤트 작성은 완료했으니 텍스트 파일을 저장하고 잘 작동하는지 확인해 봅시다.

말씀드렸듯이 전 바덴백작위를 가지면 유전되도록 세팅을 했으니 바덴 백작양반으로 시작했습니다. 튼실한 신부감을 물색후 바로 청혼에 들어갑니다.

우리의 백작양반은 힘세고 강하기 때문에 콘솔의 힘을 빌려 임신을 시킵시다.

임신 완료.

아들이 태어났습니다. 위에 말씀드린 한계에서 적은것 처럼 출생후 당장은 트레잇이 없습니다. 정식 부인의 자식이고 백작령 바덴에서 태어난 아이이기 때문에 20일 안에 트레잇이 달릴겁니다.

태어난지 열흘째 되는날에 트레잇이 달렸습니다.

뻐꾸기의 자식을 테스트하려는데 첫부인이 사망했네요. 새 부인을 맞이하고 옆동네 공작아저씨에게 제 아내의 맛을 보여줍니다. 콘솔의 뻐꾸기 치트를 이용합니다.

옆동네 공작의 씨앗을 받은 아이이지만, 우리의 백작은 첩보관 고용을 안하고 쿨하게 내자식임을 인정합니다.

8월 5일 출생이지만 20일 후인 25일이 지나도 트레잇이 달리지 않습니다. 서류상으론 내자식이지만 씨앗은 옆동네 공작의 것이기 때문이지요. 즉 뻐꾸기의 DNA훼손은 저 트레잇이 안달리는 자식들은 처리함으로써 방지할 수 있습니다.

아까 낳은자식. 즉 같은 가문이고 트레잇을 물려받은놈을 다른곳의 백작으로 임명합니다.

콘솔의 힘으로 떡국 열 여섯그릇을 빠르게 먹이고 결혼해서 임신을 시킵니다.
아버지는 확실히 트레잇이 달려 있습니다.

딸이 태어나고, 이후 20일이 흐르지만 역시 트레잇이 달리지 않습니다. 같은 가문이고 아버지가 트레잇을 갖고 있지만 설정한것처럼 바덴 백작이 아니기때문에 트레잇을 못받았습니다. 테스트 결과 잘 적용되네요.
이외에 여백작으로도 테스트 해봤지만 모두 잘 적용 됩니다.
제가 플레이 하는 동안은 버그를 발견하진 못했지만, 순전히 제가 짠 코드이다 보니 의도와 다른 부작용이나 버그가 있을 수 있으니 적용해서 플레이 하시다가 무언가 발견하시면 댓글로 리포트 해주시길 바랍니다.
첫댓글 하나 덧붙이자면, 태어나자 마자 트레잇을 붙이는 방법이 있기는 합니다. on_actions.txt 파일의 on_birth = { } 내에 이벤트를 밀어넣으면 됩니다. 단, 트리거 이벤트에서 실제 이벤트로의 진행은 days = 1 옵션을 주어서 하루 늦게 발생하도록 해야 합니다. 실제로는 태어난 날짜 + 1일 후에 트레잇이 붙는 거죠. 물론 이벤트 연결을 통해서, 트레잇을 달았음 혹은 달지 못했음을 플레이어에게 알려주도록 이벤트 구성도 가능하죠.
그리고 조건 부분에 has_landed_title = c_baden 부분은 사실 필요가 없어 보입니다. 왜냐 하면, 멀티플레이가 아닌 이상 게임 내에서 플레이어는 오직 1명 뿐이기 때문에, ai = no 한 줄로 이미 다른 모든 NPC 들은 제껴진 상태이기 때문이예요.
플레이어의 자식이 아무리 트레잇을 갖고있다 한들, 현재의 플레이어가 아닌 다음에야 ai = no 조건을 통과할 수 없으므로, has_landed_title 조건이 없더라도 손자대에 트레잇이 양산되는 결과는 일어나지 않습니다. (지금 생각한건데, Born in the purple 처럼 특정 작위를 갖고 있다는 것에 의미를 두시려면 필요하긴 하겠네요.)
그리고 자줏빛 출생의 효과 중에 승계에서 우선권을 갖는다는 부분만 놓고 보자면, 코드가 지저분해지고 좀 어설픈 모양새가 되긴 하지만 구현 자체는 가능하긴 합니다. 이것도 마찬가지로 on_actions 를 이용하는 방법인데... 음.. 덧글로 쓰기에는 조금 부적절할 정도로 내용이 많아지니 별도의 글로 한번 적어보던가 해야겠네요.
잘봤습니다 지금 해봐야겠네요
이정표