[CK2 모딩 팁]내멋대로 쓰는 Crusader King 2 모딩 매뉴얼 (23) 전쟁 명분 (Casus Belli) [2015/05/16 1차 수정증보]
작성자tacitus작성시간15.04.09조회수2,528 목록 댓글 22내멋대로 쓰는 Crusader Kings 2 모딩 매뉴얼
16. 전쟁명분(Casus Belli)
(1) 서설
상당히 섬세하면서도 복잡한 부분이 바로 이 전쟁명분 부분이죠. 어떤 의미에서 CKII 을 다른 게임과 명확히 구별되게 해 주는 부분이 바로 이 부분일 수도 있습니다. 명분이 없는 전쟁은 시작할 수 없기 때문에, 군사력이 강하다 하여 내 마음대로 깡패짓을 하고 다닐 수가 없습니다. 이 게임의 매력이기도 하죠.
그러나 깡패 플레이를 하고 싶은 유저들에게 이것은 상당히 귀찮은 일이기 때문에, 이 부분에 대한 모딩 시도는 끊임없이 일어날 수밖에 없습니다. (그러니까 파간이나 조로아스터 하세요. 전쟁 맘대로 할 수 있어요(?))
그러나.. 이 전쟁명분을 설정하는 파일은 정말 열어보기가 싫을 정도로 그 구조가 복잡하고 내용이 많습니다. 읽으면 읽을 수록 점점 더 이해가 안 가는 신묘한 코드랄까요. 먼 옛날 어떤 책에서 언급된 바 있는, "일독 난해, 이독 오해, 삼독 불가해" 의 전형적인 예가 아닌가 싶습니다. 저도 이 전쟁명분 부분은 이해가 어려운 부분이 많습니다. (그래서 여태 이 부분은 안 건드린 거고요.)
그런 의미에서, 저에게도 이 글은 일종의 도전입니다. 2.3.3 기준으로, 정의되어 있는 전쟁 명분은 모두 54개인데, 이 글은 모딩에 관한 설명이므로 이들을 일일이 분석할 일은 없겠습니다. 다만 어떤 식으로 작성을 하는가가 문제이므로, 이에 필요한 범위 내에서는 어느 정도 원본의 코드를 인용할 것입니다.
(2) 전쟁 명분 데이터의 구조
전쟁명분 정의 파일은 게임이 설치된 폴더 이하에 common/cb_types/00_cb_types.txt 파일입니다. 새로운 전쟁 명분을 모드에 추가하고 싶으시다면, 모드 폴더 이하에 같은 폴더를 만드시고 앞의 00 을 적당히 큰 숫자로 고쳐서 새로운 파일을 하나 만들어 두십시오. 한번 원본 파일도 열어보셔서 그 복잡성을 한번 느껴보시는 것도 좋습니다.
■ 전쟁 명분 정의의 기본 구조
워낙 내용이 많은 부분이라, 다른 회처럼 예시를 하나 갖다놓고 그 예시를 따라가는 방식의 설명을 하기에는 조금 부적절하지 않나 싶어서, 우선 디시전 설명 때처럼 구조를 먼저 확인한 후 살을 붙이는 방식으로 진행을 하겠습니다.
casus_belli_name = { name = CB_NAME_OF_CASUS_BELLI war_name = WAR_NAME_OF_CASUS_BELLI sprite = 1 truce_days = 3650 can_use = { } can_use_gui = { } is_valid = { } on_success = { } on_fail = { } on_reverse_demand = { } attacker_ai_victory_worth = { factor = -1 # always accept } attacker_ai_defeat_worth = { factor = 100 } defender_ai_victory_worth = { factor = -1 # always accept } defender_ai_defeat_worth = { factor = 100 } }
세부 내용은 다 빼고 정말로 뼈대만 남겨봤습니다. 필요한 부분은 더 있지만, 가장 기본이 되는 부분을 먼저 확인하려는 의도이니 그냥 따라오시면 됩니다. 우선, 구조 자체는 디시전 등과 유사합니다. 일단 전쟁 명분 ID(casus_belli_name) 를 먼저 정의하고, 그 안쪽으로 여러 가지 내용들을 적어넣습니다. 우선, 기본 설정 항목들입니다.
- name 은 해당 전쟁 명분의 이름입니다.
- war_name 은 해당 전쟁 명분으로 전쟁을 일으킨 경우 그 전쟁의 이름을 정의합니다.
위 두 항목에 정의되는 ID는 언어 파일에서 메시지 ID 로 쓰입니다. 그동안 이 글을 읽어오신 분이라면 잘 아시겠죠.
- truce_days : 어쩌면 가장 많이 고치는 부분이 될 지도 모릅니다. 전쟁이 끝난 후 같은 전쟁 명분을 다시 사용하기까지의 기간, 즉 휴전 기간입니다. 일 단위로 설정하는데, 따라서 예시의 3650은 10년을 의미하게 되겠죠. 전쟁 명분에 따라서 이 기간은 달리 설정됩니다.
- sprite : 해당 전쟁 명분을 표시할 아이콘의 번호를 의미합니다. 참고로 이 아이콘은 gfx/interface/cb_icon_strip.dds 파일을 찾아보시면 있습니다. 다른 아이콘들과 마찬가지로 하나의 이미지 파일에 여러 개의 아이콘들이 순서대로 늘어서 있는 방식이지요. 총 29개의 아이콘이 있으므로 원하는 아이콘을 골라잡으시면 됩니다.
이제 기본 설정 항목 아래의 각각의 섹션들이 어떤 의미인지를 아실 차례입니다.
-
can_use = { } : 이 전쟁 명분을 사용하기 위한 조건(캐릭터 조건)을 의미합니다. 이 섹션 내의 조건을 만족하지 않으면 이 전쟁 명분은 외교 창에 표시조차 되지 않습니다. 즉, 이 전쟁 명분을 사용할 수 없습니다. 디시전으로 생각하면 이건 마치 potential = { } 과 같아요.
-
can_use_gui = { } : 이 전쟁 명분을 실행하기 위한 조건입니다. 위 항목과의 차이점은, can_use = { } 섹션의 조건을 만족하면 외교창에 전쟁 명분이 표시되지만, 이 can_use_gui = { } 의 조건이 추가적으로 만족되어야 해당 전쟁 명분을 실행할 수 있다는 것입니다. 즉, 디시전으로 생각하면 마치 allow = { } 와 같은 의미인 거죠.
-
is_valid = { } : 전쟁 명분 모딩 시에 맞닥뜨리는 의외의 복병이죠. 이 조건은 해당 전쟁 명분의 효력 지속 요건입니다. 만약 전쟁이 시작되었는데 이 조건을 만족시키지 못하게 되면 그 전쟁은 즉시 종료됩니다. (예를 들면, 성전을 맞았을 때에 해당 종교로 개종을 해 버리면 그 성전이 그대로 끝나 버리죠. 그겁니다.) 이 부분을 제대로 설정해 두지 않으면, 선전포고를 하자 마자 명분이 유효하지 않다면서 전쟁이 끝나 버리는 상황을 계속 보게 됩니다.
더 있는데? 라고 말씀하실 분이 계실 거 압니다. 일부러 설명 안 드리고 넘어가는 것이니까, 일단 따라와 주세요.
-
on_success = { } : 전쟁 점수 100을 다 채우고 상대방을 굴복시켜서 전쟁에 승리한 경우에 실행할 내용입니다.
-
on_fail = { } : 이름 때문에 이게 굉장히 혼동이 오는 부분인데, 전쟁에 졌을 때에 실행할 내용이 아닙니다. 무조건 평화(White Peace)로 전쟁을 종결했을 때에 실행할 내용입니다. (화이트 피스도 전쟁에 실패한 건 맞으니까 아주 틀린 작명은 아닌데, 좀 미묘하죠.)
-
on_reverse_demand = { } : 이게 전쟁에 져서 항복한 경우에 실행할 내용이예요.
다음에 이어지는 이 4개의 내용. 이 녀석들은 섹션이 아니라 각각의 설정 항목입니다. AI 가 어떤 경우에 승리/패배를 받아들일지를 설정하는 겁니다. 새로 전쟁 명분을 만드시는 경우에도 이건 고칠 필요도 없어요. 그대로 복사하시면 됩니다. 허나 무슨 의미인지 알고는 계셔야겠죠? 그래서 설명드립니다.
- attacker_ai_victory_worth = { factor = -1 }
- attacker_ai_defeat_worth = { factor = 100 }
- defender_ai_victory_worth = { factor = -1 }
- defender_ai_defeat_worth = { factor = 100 }
이름 때문에 조금 혼동이 올 수 있는데, victory_worth 항목들은 상대방이 항복을 요청했을 때에 그 항복을 받아들일 최소한의 승리 점수를 의미합니다. 참고로 -1은 숫자 그대로의 의미가 아니라, "언제나" 의 의미입니다. 따라서, AI 가 공격자이건 방어자이건, 현재 전쟁 점수가 몇 점이건 관계 없이 AI 는 상대방이 항복하는 경우 언제나 그 제안을 받아들이게 됩니다. (사실 상대방이 졌소! 하고 항복하겠다는데 그걸 안 받아들이는 건 납득하기 어려운 일이죠. 물론 플레이어는 여러 가지 이유로 종종 그러긴 합니다만.)
그럼 defeat_worth 는 반대라는 거 아시겠죠? 플레이어나 다른 AI로부터 AI 가 항복을 요구받았을 때에, AI 가 그것을 인정하고 항복하기 위해서는 상대방이 전쟁 점수 100점을 채워야 한다는 의미가 됩니다. 다들 경험해봐서 아시죠? 전쟁 점수 100점을 채우기 전에는 끝까지 졌다는 걸 인정 안 하는 AI 들.. (물론 AI 쪽에서 전쟁 점수가 100이 되기 전에 스스로 항복해오는 경우도 있긴 하지만요.)
참고로, 일부 항목의 경우에 이 수치가 100을 넘는 경우도 존재합니다. 이런 경우는 존재할 수 없기 때문에(전쟁 점수의 최대값은 100이죠) 이 경우 AI 는 이 제안에 대해서 언제나 거절하게 됩니다. 재미있는 상황이 펼쳐질 수도 있겠네요.
■ 타이틀 조건과 플레이어 조건
그런데, 실제 전쟁 명분 파일을 열어 보시면 좀 이상한 것을 보실 수 있을 것입니다. 예를 들면 can_use 의 경우, can_use = { } 라는 것이 있는가 하면, can_use_title = { } 이라는 섹션이 따로 있는 것을 보실 수가 있죠. can_use 뿐만이 아니라, is_valid, on_success 등 다른 항목들도 모두 _title 꼬리표가 붙은 항목들이 존재하는 것을 보실 수가 있습니다. (하나의 전쟁 명분 내에서 이 항목들이 있을 수도 있고 없을 수도 있긴 해요.)
이게 왜 이런가 하면, 전쟁 명분의 설정에서 플레이어 조건/효과와 타이틀 조건/효과를 분리하기 때문입니다. 예를 들면, 앞에서 열심히 설명한, _title 이 안 붙은 각각의 항목들은 이 전쟁의 당사자인 플레이어에 관한 조건들입니다. 예를 들면, 파간 종교의 경우에 적용되는 이웃 백작령에 대한 정복전쟁 명분(pagan_county_conquest)의 can_use = { } 섹션은 아래와 같습니다.
can_use = { ROOT = { religion_group = pagan_group NOT = { same_realm = FROM } } FROM = { NOT = { religion = ROOT } } }
아직 제가 스코프에 대해 설명을 안 드렸는데, 전쟁명분에서의 FROM 과 ROOT 의 정의가 저도 굉장히 혼동이 많이 됩니다. 이게 전쟁이 아니라 전쟁 명분 이라는 것을 생각하시고, FROM 을 전쟁 명분을 주는 자, ROOT 는 전쟁 명분을 갖고 있는 자로 생각하셔야 이해가 됩니다. 즉, 전쟁을 일으키려는 자가 ROOT 이고, 선전 포고를 당하는 자가 FROM 인 거예요. (이거 정말 환장합니다. 자꾸 거꾸로 읽게 돼요.)
따라서, 위 플레이어 조건은 1) 본인이 파간 계열의 종교이어야 하고, 2) 상대방이 같은 렐름에 속해 있지 않아야 하며(즉, 내전에 사용할 수는 없고), 3) 상대방은 나와 같은 종교여서는 안 된다는 겁니다.
그런데, can_use_title = { } 의 경우 기본 스코프가 타이틀이 됩니다. 즉 전쟁의 목표가 되는(=전쟁을 통해 획득하기 위한) 타이틀의 조건이 되는 거죠. 예를 들면, 침략(invasion)의 can_use_title = { } 항목의 내용은 아래와 같습니다.
can_use_title = { OR = { FROM = { has_landed_title = PREV } holder_scope = { is_liege_or_above = FROM } } }
심플합니다. 상대방이 침략하려는 타이틀을 가지고 있거나, 그 타이틀을 가진 자의 주군이 상대방이기만 하면 됩니다. 내용은 일단 중요하지 않고, 기본 스코프가 타이틀이라는 부분만 체크하시면 돼요.
이렇게 조건이 심플한 이유는? 애초에 아무나 쓸 수 있는 명분이 아니니까요. 이 CB 는 종교 지도자가 허락하는 경우에(can_grant_invasion_cb = invasion) 쓸 수 있는 CB 이기 때문에, 굳이 조건이 복잡할 이유가 없는 거죠.
일단 이렇게만 이해하고 계시면 됩니다.
■ 즉시 효과 발생 : on_add
전쟁의 결과와 관계 없이, 전쟁 발발과 동시에 즉시 어떤 효과를 발생시키고 싶은 경우에 이 섹션을 설정하면 됩니다.
on_add = { ROOT = { piety = -500 } }
■ 전쟁의 세부 사항과 성격을 정의하다
이제 기본적인 전쟁 명분 정의의 구조는 다 보신 겁니다. 이제 이 구조 속에 필요한 내용을 채워 넣기만 하면 돼요. 물론 이 부분이 상당히 난해합니다. 저조차도 모르는 내용이 사실 많습니다. (그러면서 이런 글을 잘도 쓰고 있습니다.) 그래서 아마 이후로 "이건 나도 몰라요" 라고 발 빼는 부분이 제법 있을 것 같습니다. 이런 부분에 대해서는 미리 양해를 드릴께요. 글을 읽으시는 숨은 고수님들께서 그런 부분을 채워 주셨으면 합니다. 다 압니다. 재야에 자신을 드러내지 않고 숨어계신 고수님들이 많다는 거.
전쟁 명분의 사용 조건을 정의하기 전에, 이 전쟁이 어떤 전쟁인지에 대해서 좀 더 자세한 설정을 넣을 필요가 있습니다.
1) 필수 항목 : 설정하지 않으면 전쟁이 시작되지 않는다
- is_permanent = yes : 이 설정은 모든 설정들 중에서도 가장 가장 중요합니다. 왜? 이 설정이 들어가 있지 않으면 전쟁 명분 자체가 출력되지 않아요. 일반적으로 하드코딩으로 그 용도가 정의되어 있는 CB(플롯 전쟁이라던가, 아무튼 시스템상으로 특별한 경우에 사용할 수 있는 CB들)가 아닌 이상, 모든 CB 정의에는 이 줄이 들어가 있습니다. 사용자가 정의하는 전쟁 명분에서는 사실상 필수라고 보시면 돼요.
2) 이 전쟁은 어떤 전쟁인가?
이 설정 항목들은 이 전쟁이 어떤 성격의 전쟁인지를 결정합니다. (하지만 사실 이 설정이 어떤 영향을 주는지에 대해서는 사실 잘 모르는 부분이 더 많습니다.)
- is_holy_war = yes : 이 태그가 붙은 전쟁은 성전으로 취급됩니다.
- is_independence = yes : 이 태그가 붙은 전쟁은 독립전쟁으로 취급됩니다. 그 결과 개전과 동시에 전쟁 상대인 주군과의 주종 관계가 끊어집니다.
- is_revolt_cb = yes : 체포 실패로 인한 반란 전쟁입니다. (=주군을 상대로 하는 전쟁인 경우입니다.)
- is_claim_all = yes : 모든 클레임을 주장하는 전쟁입니다. 자신이 가지고 있는 모든 강력한 클레임을 상대방에게 한번에 주장할 수 있습니다.
3) 목표의 범위를 설정한다
이 전쟁의 목표물을 무엇으로 할 것이냐의 문제입니다.
- check_de_jure_tier = KING : is_permanent = yes 와 결합하여서만 동작합니다. 이 전쟁 명분이 대상으로 하는 목적물을 정하는 것입니다. 예시와 같이 KING 이라고 설정한 경우, 상대방의 왕위를 걸고 전쟁을 하게 되는 거죠. 일반적으로, 특정한 작위 단위로 전쟁을 하고 싶은 경우에 이 설정을 사용하게 됩니다. (자주 질문난에 올라오는, 공작령 단위 또는 왕국령 단위로 전쟁을 하는 모딩을 할 때에 이것을 세팅하면 되는 거예요.)
이 설정은 단지 그가 가지고 있는 땅의 데쥬레에 속하는 모든 왕위를 선택지로 보여주게 됩니다. 따라서, 추가적인 제한조건 없는 이 설정만으로는 어처구니없는 결과가 발생할 수 있습니다. 예를 들면, 왕 A 가 왕 B 의 데쥬레에 속하는 백작령 C 를 가지고 있는 경우, 왕 A 와의 전쟁을 통해 왕 B 의 왕 작위를 빼앗아온다는 웃기는 상황도 벌어질 수 있는 거죠. (백작령 C를 왕 A가 가지고 있게 되는 결과 왕 A 와의 전쟁에서 백작령 C 의 데쥬레에 속하는 왕 B 작위에 대한 선택지도 출력이 되기 때문입니다.)
-
check_all_titles = yes : 상대방의 휘하에 존재하는 모든 타이틀에 대한 개별적인 전쟁 선택 메뉴를 개방합니다. 백작령 이하의 도시/교회/성에 대해서도 개별적인 선택 메뉴가 열리게 되므로, 이 옵션이 설정되면 전쟁 명분 선택 메뉴가 너무 지저분해집니다. (황제를 상대로 전쟁 걸면 정말 선택지가 수십개가 나올 수도 있어요) 따라서 이것도 적절한 추가적인 제한조건이 필요합니다.
-
check_all_trade_posts = yes : 바로 위와 같지만, 이것은 타이틀이 아닌 무역기지를 대상으로 합니다.
-
allow_distant = yes : 상대와의 거리가 멀더라도 전쟁을 선포할 수 있습니다. 거리가 주된 요소가 아닌 공화정의 해안 무역기지나 해안 프로빈스에 대한 노스 파간의 침략 등의 CB 에 설정되어 있습니다.
4) 전쟁의 규칙 설정
전쟁의 승리 조건인 전쟁 점수를 채우는 데 있어서 일정한 모디파이어를 적용할 수 있습니다.
- battle_warscore_mult = 0.5 : 이 전투에서 전쟁 점수를 부여할 때에 이 모디파이어를 적용합니다. 오직 성전(crusade) 부분에서만 이 항목이 정의되어 있는데, 지정된 숫자가 곱 연산으로 적용됩니다. (따라서 이것이 설정된 성전의 경우 전쟁 점수가 통상의 절반만 부여되므로 다른 전쟁들보다 더 많은 전투와 점령이 필요합니다.)
전쟁에 양 당사자 이외에 동맹이나 봉신들이 참가할 수 있는지를 별도로 정할 수 있습니다.
- can_call_vassals = yes/no : 공격자 또는 방어자는 봉신들을 이 전쟁에 부를 수 있는지 설정합니다.
- can_call_allies = yes/no : 공격자 또는 방어자는 동맹들을 이 전쟁에 부를 수 있는지 설정합니다.
- attacker_can_call_allies = no : 공격자는 동맹을 전쟁에 부를 수 없습니다.
- defender_can_call_allies = no : 방어자는 동맹을 전쟁에 부를 수 없습니다.
- attacker_rel_head_is_ally = yes : 공격자는 종교 지도자(예: 교황)를 전쟁에 부를 수 있습니다. 이 설정은 오직 대립 교황을 폐위시키기 위한 전쟁, 그리고 특정인을 왕으로 옹립하려는 전쟁에만 설정되어 있습니다.
- can_ask_to_join_war = yes/no : 이 전쟁에 다른 군주들이 참가를 요청할 수 있는지를 설정합니다.
다른 전쟁의 대상에 대해서 이들을 적으로 간주할지 여부를 정할 수도 있습니다.
- hostile_against_others = yes/no : 같은 목표를 공격하는 다른 세력이 있을 경우, 그들이 적으로 간주될지 여부를 설정합니다. 항상 문제가 반란군이죠.
5) 클레임 전쟁과 관련된 항목들
- press_claim = yes : 클레임을 요구하는 전쟁명분에는 거의 항상 포함되어 있습니다. 사실 정확히 어떤 역할을 하는지는 모르겠어요.
- other_de_jure_claim = yes : 데쥬레 작위 주장과 관련되어 두 군데에서 쓰이는데, 실제 어떤 역할을 하는지는 모르겠습니다.
- reflect_titleholder_change = no : 클레임과 관련된 전쟁 명분으로 전쟁 시, 해당 클레임의 소유자가 변경되었을 때에 전쟁이 영향을 받는지(즉 유효하지 않은 명분으로 취소되는지)를 설정합니다. 딱 한 군데서 쓰이고, 값은 no 입니다. (솔레이유 님 감사합니다 ^^)
6) 그 외
그 외의 항목들입니다.
- can_attack_vassals = yes : 작위 회수를 위한 전쟁에서 해당 봉신을 공격할 수 있도록 합니다.
- major_revolt = yes/no : 파벌에 근거한 주요 반란 전쟁인 경우입니다.
- apply_short_occ_mod = no : 정복되는 홀딩에 대해서 적용되는 페널티인 [최근 정복됨] 정적 모디파이어를 붙이지 않습니다. 플레이어가 사용할 수 있는 CB 중에서는 준비된 침략(바이킹 인베이전) 에만 이 옵션이 설정되어 있습니다.
(3) 전쟁 명분의 사용 조건 설정
위의 여러 가지 설정 사항들을 보시면서 느끼셨을 겁니다. 위에서 열심히 설정한 항목들은, 기본적인 전쟁의 범위를 설정한다거나, 전쟁의 성격을 정의한다거나 하는 기능은 하지만, 구체적으로 어떤 조건 하에서 이 전쟁 명분을 사용할 수 있는지에 대해서는 아무것도 설정해 주지 않습니다. 심지어, 전쟁을 하려면 클레임을 갖고 있어야 한다는 기본적인 조건조차도 정의를 내리고 있지 않습니다.
그런 구체적인 조건들은, 이미 구조에서 살펴본 바 있는 can_use = { }, can_use_title = { } 와 can_use_gui = { } 섹션에서 별도로 조건문을 사용해서 정의를 하게 됩니다. 사실상 여기에서 모든 것이 구체화됩니다.
■ 이건 나만 사용할 거야
AI 는 사용할 수 없는 나만의 커스텀 전쟁 명분(대략 사기)을 설정할 수 있습니다. 지금까지 몇 수십번은 보아 왔을 마법의 조건문 ai = no 를 사용하면 되죠.
can_use = { ROOT = { ai = no } }
■ 권리를 갖고 있는 자에게 전쟁을 걸어야 한다
일반적으로, 우리는 어떤 타이틀을 노리고 전쟁을 걸 때, 해당 타이틀을 가지고 있는 자 또는 그 타이틀을 가진 자를 봉신으로 두고 있는 군주에 대해서 전쟁을 걸죠.
can_use_title = { OR = { FROM = { has_landed_title = PREV } holder_scope = { is_liege_or_above = FROM } } }
당연한 조건이기도 하지만, 이 조건은 앞에서 본 check_de_jure_tier = KING 의 제한조건으로도 사용됩니다. 자기가 갖고 있지도 않은 작위를 걸고 전쟁을 할 수는 없는 것이니까요. 판돈은 언제나 현금이어야 합니다.
■ 클레임을 갖고 있어야 전쟁을 할 수 있다
일반적인 CKII 의 전쟁은 반드시 해당 지역에 대한 클레임을 요구합니다. 클레임에는 강한 클레임과 약한 클레임이 있다는 점은 이미 알고 계실 테고, 약한 클레임은 사용하기 위한 조건이 있다는 점도 알고 계실 겁니다. 아래는 그것을 조건으로 구현한 것입니다. 클레임이 필요한 모든 전쟁에는 아래의 조건이 그대로 적용되어 있습니다.
can_use_title = { OR = { ROOT = { has_strong_claim = PREV } AND = { ROOT = { has_weak_claim = PREV } OR = { is_pretender = yes # Checks vs ROOT character holder_scope = { has_regent = yes } AND = { ROOT = { is_female = no } holder_scope ={ is_female = yes } } is_contested = yes # Is already being contested in some form of Claim or Succession War } } }
바꾸어 말하면, 클레임에 관한 조건조차도 이렇게 직접 조건문을 넣어 준다는 것입니다. 따라서 모딩하기에 따라서는 클레임 없이 땅따먹기를 하는 전쟁 명분도 충분히 만들 수 있다는 이야깁니다.
하나 더 덧붙이자면, 이렇게 클레임을 조건으로 구현하는 경우에는 전쟁 설정에 press_claim = yes 가 포함되는 것이 보통입니다. 설정 시 구체적으로 무엇이 달라지는지는 잘 모르겠습니다만.
■ 계승법률
클레임을 갖고 있더라도, 계승법률이 문제가 되는 경우가 있습니다. 예를 들면 현재 남성 상속제를 채택하고 있는 홀딩에 대해서 여성이 클레임을 갖고 있는 경우, 클레임 전쟁을 허용하면 곤란한 상황이 발생할 겁니다. 따라서, 이것을 명시적으로 조건으로 설정해 두는 경우도 있습니다.
다른 경우로, 어떤 법률을 개정하기 위한 봉신과 주군간의 전쟁의 경우, 만약 전쟁 중 주군이 이를 받아들여서 법률을 개정한 경우, 더 이상 전쟁을 할 이유가 없게 되어 전쟁은 종료가 되는 거죠. 아래 예시는, 계승법률를 분할 상속제(Gavelkind)로 변경하기 위한 봉신과 주군간의 전쟁 명분의 유효조건 섹션입니다.
is_valid_title = { NOT = { has_law = succ_gavelkind } OR = { tier = emperor tier = king is_primary_holder_title = yes } }
해석이 되시나요? 분할 상속제를 관철하기 위한 전쟁이니만치, 현재의 법률이 분할 상속제가 아니어야만 전쟁이 계속될 수 있는 거죠. 그리고 그 아래의 OR = { } 절은 법률과 관련된 전쟁에서 자주 볼 수 있습니다. 현재 적용되는 법률과 일치하는 타이틀에 대해서 전쟁을 걸어야 하잖아요? 그래서 이게 늘 들어갑니다.
(4) 전쟁의 결과
전쟁의 결과는 항상 셋 중 하나로 귀착되죠. 승리, 무조건 평화, 패배. 각각의 경우에 따라서 발생할 일들을 각각의 섹션에 정의하면 됩니다. 조건에서도 말씀드렸지만, 전쟁의 결과 역시 하나하나 직접 정의를 해 주어야 효과가 발생합니다. 이미 알고 계시지만, 승리의 경우 on_success = { }, 무조건 평화의 경우 on_fail = { }, 패배/항복의 경우 on_reverse_demand = { } 에 정의합니다.
결국 전후처리라는 것은 예나 지금이나, 승전국이 패전국에 대해서 전쟁의 목적물을 요구하고, 또 전쟁에 대해서 손해배상을 강요하는 절차입니다. 그냥 그걸 담담하게 정의하면 되는 거예요.
■ 땅 내놔!
과거에 한 번 운만 띄우고 넘어왔던 부분을 이제는 논의해야 할 시점이네요.
일반적으로 전쟁의 결과로 땅을 얻는 것은 두 가지 정도로 나뉩니다. 우선 해당 타이틀만 가져오는 경우입니다. 예를 들어 공작 타이틀을 목적물로 하여 전쟁을 했다면 그 공작 타이틀을 강탈해오는 거죠. 그럼 어떻게 되겠어요? 그 공작 이하의 봉신들은 내 봉신으로 들어오겠죠? 보통의 클레임 전쟁에서는 이렇게 처리하는 경우가 많습니다.
그런데, 성전을 생각해 보면 어떤가요? 성전의 경우 자신과 종교가 같은 봉신은 그대로 봉신으로 넘어오지만, 그렇지 않은 경우에는 목표가 된 타이틀 이하의 모든 타이틀도 내 것으로 넘어오죠? 즉, 목표가 되는 타이틀의 하위 타이틀로서 패전한 자가 가지고 있던 타이틀들이 모두 내 소유로 넘어올 수도 있는 겁니다. 이제 이것들을 구현을 해야죠.
1) 전쟁의 목적이 된 타이틀의 강탈 (usurp)
타이틀을 강탈해 오는 명령어는 usurp_title 류의 명령어를 쓰게 되는데요. 모두 다섯 가지가 있는데, 원본의 CB 에서는 그 중 네 가지 명령어가 사용되고 있더군요.
- usurp_title
- usurp_title_only
- usurp_title_plus_barony_if_unlanded
- usurp_title_plus_barony_if_unlanded_and_vassals_no_adj
on_success_title = { usurp_title_plus_barony_if_unlanded = { target = ROOT type = claim } if = { limit = { higher_tier_than = BARON NOT = { culture = ROOT } } hidden_tooltip = { conquest_culture = ROOT } } }
아래쪽에 있는 conquest_culture 를 설정하는 부분은, 침략 전쟁의 전후 처리에서 종종 보이는 부분입니다. 점령된 땅의 문화와 점령한 자의 문화가 서로 다른 경우에, 점령한 자의 문화를 정복 문화로 설정하여 문화 동화가 가능하도록 해 주는 부분인데, 문화 동화를 중요하게 생각하시는 분이라면 이 부분을 눈여겨 볼 필요가 있겠습니다. 이렇게 쓴다는 걸 알고 계시면 편하니까요.
2) 타이틀의 양위 (abdicate)
그런데, 전쟁 명분에 따라서는 그대로 타이틀을 특정인에게 넘겨주거나, 단지 상속이 일어나는 데 그치는 경우도 있습니다.
-
abdicate = yes : 상속이 일어납니다. 보통은 작위 승계 예정자가 현재의 주군을 상대로 전쟁을 일으킨 경우에 그 전쟁에 승리한 경우의 처리로 이 명령어를 사용하죠.
-
abdicate_to = ROOT : 이건 딱 한 군데 쓰입니다. 본연의 목적은 목적이 된 타이틀을 ROOT 에게 넘겨줍니다. 사실 일반적인 경우에 사용되는 것을 기대하기 어려운 명령어예요.
-
abdicate_to_most_liked_by = ROOT : 이것도 딱 한 군데(주군의 퇴위를 위한 전쟁)에서 쓰였는데, 사용해 본 적이 없는 명령어라서 구체적으로 뭐가 다른지 잘 모르겠어요.
3) 획득 혹은 봉신화 (vassalize_or_take_under_title)
- vassalize_or_take_under_title = { }
- vassalize_or_take_under_title_destroy_duchies = { }
아마 이름으로 봐서는 아래 것은 공작령을 부수는 효과가 있는 것 같습니다.
on_success_title = { ROOT = { vassalize_or_take_under_title_destroy_duchies = { title = PREV enemy = FROM type = invasion } } }
주어지는 타입과 옵션에 따라서 그 구조가 달라지는 것 같습니다. type 의 경우 invasion, holy_war, revolt, host 의 4가지가 사용되었는데, 구체적으로 뭐가 달라지는지 모르겠어요. 그 외에 함께 사용된 옵션은 다음과 같습니다.
- is_crusade = yes : 점령한 타이틀의 홀더가 전쟁에 참여하지 않았더라도, 성전에 참여한 자들이 점령한 홀딩이라면 모두 획득하게 됩니다.
- same_religion = yes : 나와 같은 종교를 가진 자만을 봉신화합니다. 보통 아래에 있는 is_religious = yes 와 함께 다닙니다. 종교가 다른 자들에 대한 일반 성전, 그리고 파간 계열의 일반 성전에서 사용됩니다.
- is_religious = yes
- is_revolt = yes
4) 단순 봉신화
이슬람의 백작령 단위 정복전쟁의 경우, 굳이 해당 타이틀을 강탈하지 않고 다만 봉신화를 시키는 경우를 볼 수 있습니다. 아래 코드를 보시죠.
on_success_title = { if = { limit = { holder_scope = { tier = count NOT = { num_of_count_titles = 2 } lower_tier_than = ROOT } } holder_scope = { set_defacto_liege = ROOT } } }
조건을 읽을 수 있겠어요? 상대의 Tier 가 백작이고, 가진 백작령의 수가 1개 뿐이며, 나보다 낮은 작위인 경우 (즉 플레이어가 공작 혹은 그 이상인 경우) 에는 굳이 그 땅을 빼앗지 않고 그 백작령을 나의 봉신으로 만들어 버리는 겁니다. (set_defacto_liege = ROOT)
때로는 다른 명령어를 사용하는 경우에도 이와 같이 직접 점령한 타이틀에 대해서 군주를 직접 설정해 줘야 하는 경우도 있을 수 있습니다.
5) 특수한 경우 : 점령한 홀딩을 모두 강탈
특수한 경우가 하나 있군요. 보통은 특정한 타이틀을 걸고 전쟁을 하고, 승리하면 점령한 홀딩과 관계 없이 그 목표 타이틀 및 그 이하에 대해서 모두 효과가 발생하는 것이 보통입니다. 그런데, 일부 전쟁의 경우, 목표한 타이틀과는 관계 없이 점령한 모든 홀딩을 소유하게 되는 경우도 존재합니다. 예를 들면 인베이전의 경우.. 이것도 별도의 명령어로 구현을 합니다.
on_success = { ROOT = { occupy_minors_of_occupied_settlements = FROM gain_all_occupied_titles = FROM } }
-
occupy_minors_of_occupied_settlements : 예를 들어, 특정한 백작령의 수도 홀딩을 점령하고, 그 이하의 수도원이나 도시, 다른 성 등을 아직 점령하지 않았을 경우에도, 해당 백작령의 수도 홀딩을 점령했을 경우 그 이하의 남작령들도 모두 점령한 것으로 보는 옵션입니다.
-
gain_all_occupied_titles : 점령한 모든 타이틀을 얻습니다.
위 두 명령어는 늘 위와 같이 붙어 다닙니다. 전쟁 상대방이 가지고 있던 홀딩 중 내가 점령한 땅들이 모두 내 땅이 되는 거죠.
6) 마무리
사실 위에서 다룬 내용 중에는 대체 각각이 뭐가 다른거야 싶은 내용들이 있습니다. 확실한 구별점을 설명드리지 않은 이유는 사실 저도 잘 모르기 때문이예요. 분명 동작에 미묘한 차이가 있을 텐데, 아직 내공이 부족하여 거기까지는 설명드리기가 어렵습니다.
■ 전쟁 참여자들에 대한 보상/페널티
전쟁에 불려온 자들에 대해서 보상 또는 페널티가 주어질 수 있습니다. 이건 쉬워요. 각각의 내부에 any_defender = { }, any_attacker = { } 스코프를 설정하고 그 안에 서술해 주면 되니까요. 보통은 Prestige 나 Piety 를 주는데, Success 의 경우에는 공격자에게, Fail 이나 Reverse Demand 의 경우에는 방어자에게 줍니다.
on_success = { any_attacker = { limit = { character = ROOT } participation_scaled_prestige = 100 } any_attacker = { limit = { NOT = { character = ROOT } } hidden_tooltip = { participation_scaled_prestige = 100 } } } on_fail_title = { any_defender = { limit = { character = FROM } participation_scaled_prestige = 100 } any_defender = { limit = { NOT = { character = FROM } } hidden_tooltip = { participation_scaled_prestige = 100 } } } on_reverse_demand = { any_defender = { limit = { character = FROM } participation_scaled_prestige = 150 } any_defender = { limit = { NOT = { character = FROM } } hidden_tooltip = { participation_scaled_prestige = 150 } } }
고정된 Prestige 값이 아니라, scaled_prestige 인 걸로 봐서 아마도 전쟁 기여도에 따라서 값을 나누는 것 같습니다. 저도 정확히는 모르겠어요.
■ 법률 바꿔!
특정한 상속제도를 얻기 위한 전쟁이었을 경우에, 승리한 경우 목표한 타이틀의 상속제가 변경되겠죠.
on_success_title = { succession_w_cooldown = primogeniture }
■ 클레임 전쟁에 진 경우
클레임 전쟁에서 패배하는 경우, 페널티로서 그 클레임 권리를 잃게 되죠.
on_reverse_demand_title = { ROOT = { remove_claim = PREV } }
■ 공격군의 리더가 사망한 경우
전쟁을 일으킨 리더가 전쟁 중 사망한 경우 어떻게 처리할 것인지는 on_attacker_leader_death = { } 섹션에서 정의합니다. 위에서 보았던 기본 구조에는 없었던 내용이죠? 필수적인 내용은 아닙니다.
on_attacker_leader_death = { end_war = invalid }
대부분 위와 같이 invalid (전쟁 명분 무효화) 로 전쟁이 종료됩니다만, 인베이전의 경우에는 whitepeace 로 전쟁이 종료되도록 설정되어 있더군요. 많은 경우, 리더의 사망 사실을 알리는 이벤트가 함께 일어나도록 설정되어 있습니다.
참고로, 반대로 방어자들의 리더가 사망한 경우의 처리도 설정 가능합니다. on_defender_leader_death = { } 섹션을 설정할 수 있어요. 원본에서는 딱 한 번 사용되었습니다.
(5) 전쟁 명분과 언어 파일
인터페이스에 출력할 텍스트의 내용은 다른 것들과 마찬가지로 일정한 규칙에 의해 언어 파일에 정의가 됩니다.
- 전쟁 명분 ID 뒤에 _desc 를 붙이면 해당 전쟁 명분에 대한 설명의 메시지 ID 가 됩니다.
- name = 및 war_name = 뒤에 정의하는 메시지 ID 는 그대로 그에 대한 메시지 ID 가 됩니다. name = 뒤에 정의하는 메시지 ID 는 외교 창의 전쟁 메뉴에 출력되는 이름으로 사용되며, war_name = 뒤에 정의하는 메시지 ID 는 그 전쟁 명분으로 개시되는 전쟁의 이름이 됩니다.
아래는 위의 내용에 대한 예시들입니다.
other_dejure_county_claim_desc;The $TITLE$ (은)는 데 쥬레에 따르면 $CLAIMANT$ 의 봉신이므로(이하생략).;;;;;;;;;;;;x; CB_NAME_DEJURECLAIM;데쥬레 [Title.GetBaseName] 작위 주장;;;;;;;;;;;;x; WAR_NAME_DEJURECLAIM;데쥬레 $OTHER_TITLE$ 주장의 $ORDER$$FIRST_ADJ$-$SECOND_ADJ$ 전쟁;;;;;;;;;;;;x;
위에서 그동안 보지 못했던, $ 기호 사이에 들어가는 치환자들이 등장했습니다. 그동안 메시지 ID 에서 흔히 써오던 대괄호 안에 정의하는 치환자와는 좀 다른데요. [] 치환자가 등장하기 전에 사용되던 구식 치환자들입니다. 물론 지금도 사용하는 데 전혀 문제는 없습니다. 사용 가능한 구식 치환자의 목록은 이 페이지에서 확인 가능합니다.
더 미룰 수가 없어서, 불완전한 상태의 원고이지만 일단 공개합니다. 아직 해결되지 않은 부분이 많고, 아마도 잘못 설명된 부분도 있을 것이라고 생각합니다. 실제 전쟁 명분을 모딩해 보신 분들께서 많은 지식을 나누어 주셨으면 합니다.
댓글
댓글 리스트-
답댓글 작성자tacitus 작성자 본인 여부 작성자 작성시간 15.12.05 적어주신 구문들은 모두 본문의 설명에 있을 겁니다. + 처음부터 백지상태에서 만들려 하시면 멘붕하십니다. 적당한 기존 CB를 놓고 수정하시면서 자신만의 CB를 구성해 보십시오.
-
답댓글 작성자tacitus 작성자 본인 여부 작성자 작성시간 15.12.05 KING 을 수정하면 됩니다만.. 별로 추천하고 싶진 않습니다. 전쟁 개시 메뉴가 너무 지저분해질 거예요.. 어차피 사람들이 왕국령 단위의 넓은 범위 전쟁을 하기를 원하는 건 감질나는 백작령 단위 전쟁이 싫어서.. 니까요...
-
답댓글 작성자tacitus 작성자 본인 여부 작성자 작성시간 15.12.05 중괄호 갯수가 안 맞는 건 타이핑 오류인가요? 중간에 오류가 있으면 그 이후가 아예 적용이 안됩니다
-
답댓글 작성자tacitus 작성자 본인 여부 작성자 작성시간 15.12.05 아. 짝이 안 맞는 것 같아서요.
-
답댓글 작성자tacitus 작성자 본인 여부 작성자 작성시간 15.12.05 히든 툴팁은 실질은 아무 효과가 없습니다. 그냥 해당 명령을 툴팁에 보여주지 않을 뿐이예요. 뭔가 다른 이유가 있었을지도 모릅니다.