|
다음은 프로빈스 모디파이어. 해당 프로빈스에 영향을 줍니다. 당연히, 위와 마찬가지로, 이게 다가 아닙니다.
위키의 모디파이어 표에 정리된 내용이 상당히 많긴 합니다만, 위키에서 된다고 적혀 있는 내용 중에서 특정한 부분에서 제대로 적용이 안 되는 경우도 종종 있습니다. 따라서 위키의 모디파이어를 적용하실 때에는 제대로 적용이 되는지 꼭 실제 게임에서 확인을 해 보셔야 합니다.
이벤트 모디파이어를 캐릭터나 프로빈스에 붙이는 것은 간단합니다. 붙이려는 캐릭터나 프로빈스의 스코프에서 다음의 명령을 쓰시면 됩니다.
add_character_modifier = { name = 이벤트 모디파이어 이름 duration = 유효 기간 } add_province_modifier = { name = 이벤트 모디파이어 이름 duration = 유효 기간 }
이벤트 모디파이어 이름은 위 정의 파일에 적은 이름을 적으시면 됩니다. 이벤트 모디파이어는 반드시 유효 기간을 함께 쓰게 되어 있는데, 그 단위는 특별한 제한이 없습니다. 일 단위로 적으시려면 duration = 일, 월 단위로 적으시려면 months = 월, 연 단위로 적으시려면 years = 년 으로 적으시면 됩니다. (보통 일이나 월 단위로 많이 씁니다.) 특수한 것으로써 duration = -1 이 있는데, 이는 유효기간을 별도로 정하지 않는다는 것으로, 사용해 보시면 유효 기간이 게임이 끝나는 1453년인가? 거기까지 붙습니다. 즉, 캐릭터가 사망하거나 이벤트 등으로 떼지 않는 이상 계속 유효한 모디파이어가 되는 것입니다.
이벤트 모디파이어가 부여되면 해당 캐릭터 또는 프로빈스에 지정한 아이콘이 나타나면서 그 모디파이어가 현재 유효한 상태임을 보여줍니다. 만약, 어떤 이벤트 모디파이어를 적용하면서 아이콘을 캐릭터나 프로빈스 정보 창에 보여주고 싶지 않을 때에는 hidden = yes 옵션을 함께 사용하면 됩니다.
add_character_modifier = { name = blamed_character duration = -1 hidden = yes }
특정한 이벤트 모디파이어가 붙어 있는지는 has_character_modifier, has_province_modifier 조건문을 사용합니다.
if = { limit = { has_character_modifier = the_oubliette } ...있으면 실행할 명령들... }
부여했던 이벤트 모디파이어는 유효 기간이 끝나면 자동으로 사라집니다. 만약 유효 기간이 끝나기 전에 없애고 싶다면 remove_character_modifier, remove_province_modifier 명령을 사용합니다.
remove_character_modifier = religious_studies
플래그는 clr_global_flag 등으로 clr_ 접두어를 사용하는데, 모디파이어는 remove_ 접두어를 사용합니다. 처음에 되게 헷갈렸었지요.
이 내용은 제가 개인적으로 응용하고 있는 방법이므로, 그냥 이런 용도로도 사용할 수 있구나 라는 정도로 알아두시면 됩니다.
보통 랜덤으로 발생하는 이벤트건, 사용자가 직접 디시전을 통해 실행하는 이벤트건, 일정한 쿨 타임을 주고 싶을 때가 있습니다. 예를 들면 이 디시전은 한 번 사용하면 최소한 1년간은 다시 못 쓰도록 해야겠어 같은 것 말입니다. 트리거 등으로 발생시키는 이벤트의 경우에도, 한 번 일어나면 최소한 몇 년간은 절대 다시 일어나면 안 된다는 등의 설정을 주고 싶을 수 있습니다. 이럴 때에, 플레이어 캐릭터에게 그 기간만큼의 유효기간을 갖는 이벤트 모디파이어를 적용해 주고, 그 이벤트 모디파이어가 있다면 디시전을 실행할 수 없도록(또는 이벤트 트리거가 충족되지 않도록) 코드를 짜면 됩니다. 이벤트 모디파이어는 지정한 유효 기간이 지나면 자동으로 사라지기 때문에, 해당 기간이 지나면 자동으로 조건을 충족하게 되죠. ^^
물론, 그런 용도로 사용할 모디파이어는 미리 모디파이어 정의 파일에 등록을 해 놓아야 합니다. 등록을 할 때에는 그냥 적당한 아이콘 번호만 입력하고 효과를 비워두면 됩니다. (아무런 효과가 없는 모디파이어가 되죠) 아이콘이 보이는 것도 싫다면 위에서 본 hidden = yes 옵션을 넣어주면 됩니다. 이러면, 마치 캐릭터 모디파이어를 일정 시간이 지나면 자동으로 사라지는 캐릭터 플래그처럼 사용을 할 수 있는 거죠.
이벤트 모디파이어의 이름은 언어 파일에서 메시지 ID 로 사용합니다. 즉, 언어 파일에서 이벤트 모디파이어 이름 뒤에 적혀 있는 메시지(보통 제목처럼 짧게 씁니다)는 이벤트 모디파이어 아이콘 위에 마우스를 얹었을 때에 출력됩니다. (언어 파일에 이것을 정의해 주지 않으면 툴팁에 이벤트 모디파이어 ID가 그대로 출력되기 때문에 보기가 싫습니다.)
the_oubliette;비밀 지하 감옥에 갇힘;;;;;;;;;;;;x; the_dungeon;지하감옥에 갇힘;;;;;;;;;;;;x; house_arrest;가택에 연금;;;;;;;;;;;;x;
오피니언 모디파이어는 캐릭터들 사이의 관계도를 증감시키는 역할을 하는 모디파이어입니다. 이벤트 모디파이어는 특정한 캐릭터나 프로빈스에 적용되는 것으로 다른 캐릭터나 프로빈스를 상정하지 않지만, 오피니언 모디파이어는 관계를 표시하기 때문에 반드시 상대방 캐릭터가 함께 정의되어야 합니다.
오피니언 모디파이어도 게임 내에서 사용하기 위해서는 미리 오피니언 모디파이어 정의 파일에 해당 내용이 정의되어 있어야 합니다. 원본의 오피니언 모디파이어 정의는 common\opinion_modifiers\00_opinion_modifiers.txt 에 정의되어 있으므로 참조하십시오. 물론 자신만의 오피니언 모디파이어를 새로 정의하고 싶다면, 이벤트 모디파이어에서와 마찬가지로 새 파일을 만들어서 등록하는 것이 좋습니다. 모드 폴더 아래에 common\opinion_modifiers 폴더로 이동(없으면 만듭니다)하신 후에 앞의 두 자리수 번호만 다른 것으로 바꾸어서 새로 파일을 하나 만들어 주세요.
same_dynasty = { opinion = 5 } opinion_ally = { opinion = 25 } opinion_at_war = { opinion = -20 } opinion_mother_child = { opinion = 50 } opinion_father_of_child = { opinion = 50 } opinion_granted_title_to_woman = { opinion = -5 months = 60 }
형식은 이벤트 모디파이어와 비슷하지만, 들어가는 정보는 매우 심플합니다. 아이콘 같은 것도 없고, 다만 의견 얼마를 증가시키거나 감소시킬지가 적혀 있습니다. 어떤 경우에는 기본으로 몇 달간 유효할지를 함께 기록한 경우도 존재합니다.
그 외에, 캐릭터 간의 "관계" 이기 때문에, 단순한 의견 수치 이외에 몇 가지 관계성 정보를 함께 기록할 수 있는데, 이것은 상당히 유용하게 사용되므로 알고 계시는 것이 좋겠습니다.
위의 4개는 과거에도 있었던 부분인데, 아마 divorce_reason 은 최근 버전에서 추가된 것 같아요.
이제 해묵은 과제 중 하나였던, 미운 봉신을 페널티 없이 작위를 회수하는 치트 디시전을 만들 수 있겠네요. 해당 봉신을 향한 오피니언 모디파이어에 revoke_reason = yes 를 포함시켜서 플레이어와 해당 봉신 사이에 적용시켜 주면 되는군요.
그 외에, 상대를 적 또는 라이벌로 간주하도록 하는 트리거도 존재하긴 해요. 저는 써보진 않았습니다.
오피니언 모디파이어를 붙일 때는 붙일 캐릭터가 누구이고, 상대방이 누구인지를 명확하게 확인하고 붙여야만 합니다. 방식은 이벤트 모디파이어 때와 유사합니다.
opinion = { modifier = 오피니언 모디파이어 이름 who = 상대방의 스코프 month = 유효할 기간 }
오피니언 모디파이어 정의 자체에 기간이 입력되어 있는 경우, 기간은 생략할 수도 있습니다. 만약 정의 자체에 기간이 함께 정의되어 있더라도, 모드에서 기간을 정한 경우에는 정의된 기간 대신 모드에서 정한 기간으로 적용됩니다.
오피니언 모디파이어는 항상 방향을 조심해야 합니다. 현재의 캐릭터 스코프 캐릭터가 who 에게 갖는 의견을 설정하는 것입니다. 이걸 반대로 적으면 의도한 대로 동작하지 않겠죠. 만약 어떤 이유가 있어서, 적용의 방향을 거꾸로 정해야 하는 경우(who 가 현재의 스코프 캐릭터에 대해서 갖는 감정)에는, 다음과 같이 사용하면 됩니다.
reverse_opinion = { modifier = 오피니언 모디파이어 이름 who = 상대방의 스코프 month = 유효할 기간 }
opinion = { } 대신 reverse_opinion = { } 을 사용한다는 거죠.
노파심에서 추가하는 이야기. 오피니언을 설정할 때에 항상 염두에 두어야 하는 것은, 오피니언은 단방향성이라는 것입니다. 즉, 내가 누군가를 싫어하거나 좋아할 때에, 반드시 그 누군가도 나를 좋아하거나 싫어한다고 말할 수는 없다는 겁니다. 만약 양방향으로 오피니언을 설정하고 싶다면, 그 양쪽 모두에 대해서 오피니언 설정을 해야 합니다. 사실 그럴 때 편하게 쓰기 위해서 이 reverse_opinion 명령어가 있는 거예요.
오피니언 모디파이어는 항상 상대방이 존재하는 것이기 때문에, 오피니언 모디파이어의 존재를 확인할 때에도 항상 상대방이 누구인지를 함께 표시하여 확인해야 합니다. 아래는 예제입니다.
if = { limit = { has_opinion_modifier = { who = FROM modifier = opinion_seduced_repelled } } ....실행할 명령들... }
만약 스코프가 뒤집혀 있는 경우, reverse_opinion = { } 처럼 reverse_has_opinion_modifier 를 사용할 수 있습니다.
if = { limit = { reverse_has_opinion_modifier = { who = FROM modifier = opinion_coerced_into_leaving_faction } } ....실행할 명령들... }
그러나, 최근 버전에서는 상대방에 관계 없이, 특정한 오피니언 모디파이어가 특정한 캐릭터에게 존재하는지를 확인할 수 있는 has_any_opinion_modifier 조건문이 추가되었습니다. Way of Life 관련 이벤트들에서 몇 번 쓰인 바가 있네요.
NOT = { has_any_opinion_modifier = opinion_seducing_concubine }
오피니언 모디파이어 역시, 유효 기간이 지나면 자동으로 사라지게 됩니다. 만약 유효기간 전에 없애고 싶다면 remove_opinion = { } 을 사용하면 됩니다. 이 때도 상대방을 함께 적어줘야 하는 것은 같습니다.
remove_opinion = { who = FROM modifier = opinion_seduced_repelled }
스코프가 뒤집힌 경우에는 reverse_remove_opinion 을 사용하여 삭제할 수도 있습니다.
reverse_remove_opinion = { who = FROM modifier = opinion_coerced_into_leaving_faction }
오피니언 모디파이어의 이름은 언어 파일에서 메시지 ID 로 사용합니다. 즉, 언어 파일에서 오피니언 모디파이어 이름 뒤에 적혀 있는 메시지(보통 제목처럼 짧게 씁니다)는 오피니언 숫자 위에 마우스를 얹었을 때에 확인할 수 있는 개별 오피니언 증감 항목의 이름으로 사용됩니다.
opinion_seducing;유혹 중;;;;;;;;;;;;x; opinion_seduced_attracted;매료됨;;;;;;;;;;;;x; opinion_seduced_repelled;접근불가;;;;;;;;;;;;x; opinion_seduced_yearning;사모 중;;;;;;;;;;;;x;
원래 주제는 오피니언 모디파이어였습니다만, 어차피 오피니언을 다루는 만큼, 오피니언과 관련한 조건문을 몇 개 만들어보도록 하겠습니다.
가장 간단한 조건문으로, 현재 A의 B에 대한 오피니언이 얼마 이상/미만인지를 확인하는 조건문입니다.
if = { limit = { opinion = { who = FROM value = -25 } } ... }
현재 스코프의 캐릭터의 FROM 에 대한 오피니언이 -25보다 큰지를 확인하고 있군요. 조건문이 오피니언 모디파이어를 추가하는 명령어와 비슷하기 때문에 혼동될 수 있는데, modifier 대신 value 가 들어간다는 점을 생각하면 크게 혼동되지는 않을 겁니다. 오피니언 모디파이어에서와 마찬가지로 reverse_opinion = { } 의 형태로도 검사가 가능합니다. 만약 이상이 아닌 미만을 검사하고 싶다면 NOT = { } 안에 opinion = { } 을 넣는 것, 기억하고 계시죠?
다음은, 어떤 캐릭터가 A 또는 B 캐릭터 중 누구를 더 좋아하는지 판단하는 구문입니다. likes_better_than = { } 조건문을 사용합니다. 어느 쪽을 더 좋아하는지에 따라서 행동을 다르게 설정할 수 있겠군요.
trigger = { killer = { rightful_religious_head_scope = { ROOT = { likes_better_than = { who = PREV than = PREVPREV } } } } }
만약 ROOT 가 PREV 를 PREVPREV 보다 더 좋아한다면, 이 구문은 참이 되어 트리거가 활성화됩니다.
첫댓글 유용하게 보고 있습니다. 미처 모르고 있던 것들도 새로 배우게 되네요!
조금씩 고쳐쓰는 입장이었는데... 이거 잘하면 게임 하나 바꿔 할 수도... 명령어만 좀 알면 될듯하네요... 아주 유용하군요.
음 항상 크킹 모딩하는데 큰도움이 됍니다
삭제된 댓글 입니다.
global_supply_limit 을 한 번 써 보세요. 정확한 적용 범위는 잘 모릅니다만, 적용 범위가 달라서 생기는 문제로 보입니다.
모디파이어 관련한 부분이 그런 게 여기저기 보이네요.. 하아...
그걸 다 테스트를 하시면 댓글에 적기보단 별도로 글을 적으셔도 될 듯 한데요...
나중에 가이드 수정할때는 링크 걸고 인용... :-)
제가 프로빈스에 적용할수 있는 모디파이어중 건설시간을 줄여주는 모디파이어를 추가를 해보려구 하거든요
차근차근 스코프부터 읽긴했는데 도저히 이해를 못하겠어서 ㅠㅠ 제가 좀 빡통인지라 .. 혹시 질문좀 드려도 괜찮을까요 ㅠㅠ
그 말씀하신 것중에 모디파이어의 정의까지는 이해가 되었습니다 00_event_modifies가 아닌 01_event_modifies로 내문서 모드폴더 안에 새롭게 만드는것
안에 내용은 위에 내용을 참고해서
bil_man = {
local_build_time_modifier = 0.30
icon = 10
}
이런식으로 작성한 후 저장을 했습니다. 근대 적용단계에선 도저히 모르겠어서 ㅠㅠ
add_province_modifier = {
name = bil_man
duration = 3650
}
제가 이런식으로 일단 아크로에딧으로 작성은 했는데 이내용을 대체 어디에 넣어야하며 제목을 뭐로해야되나요..? ㅠㅠ 그리고
프로빈스 스코프에서 저내용을 작성하라고 하셨는데
any_demesne_province 이 스코프 지시자에
add_province_modifier = {
name = bil_man
duration = 3650
}
이런식으로 작성하는게 맞는건가요? ㅠㅠ 일단 가장 모르겠는건 이 내용을 아까 새롭게 만든 정의 텍스트파일에 합쳐야 되는 내용인지
아니면 별개의 제목으로 따로 작성을 해야되는건지.. 따로 저장을 해야된다면 저장은 어디에 해야되는지
이걸 도저히 모르겠어서 ㅠㅠ
만들어진 모디파이어를 적용을 하시려면 말씀하신 바와 같이 코드를 작성하시면 됩니다. 단 위와 같이 하시려면 별도의 디시전(또는 이벤트)을 작성하셔야 합니다. (모디파이어 설정 파일에 작성하시는 것이 아닙니다.)
디시전 작성법은 다른 게시물을 참조하시기 바랍니다. (제가 지금 모바일인지라 좀더 자세한 설명을 드리기는 어렵네요.)